FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Inteligencia artificial - Clase TPerceptron
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Inteligencia artificial - Clase TPerceptron
Posted: Sat Jun 24, 2017 05:49 AM
Teaching a perceptron to multiply a number by 2:

Code (fw): Select all Collapse
#include "FiveWin.ch"

function Main()

   local oNeuron := TPerceptron():New( 1 )
   local n, nValue

   for n = 1 to 50
      oNeuron:Learn( { nValue := nRandom( 1000 ) }, ExpectedResult( nValue ) )
   next

   MsgInfo( oNeuron:aWeights[ 1 ] )
   
   MsgInfo( oNeuron:Calculate( { 5 } ) )

return nil   

function ExpectedResult( nValue )

return nValue * 2

CLASS TPerceptron

   DATA aWeights

   METHOD New( nInputs )

   METHOD Learn( aInputs, nExpectedResult )

   METHOD Calculate( aInputs )

ENDCLASS

METHOD New( nInputs ) CLASS TPerceptron

   local n

   ::aWeights = Array( nInputs )

   for n = 1 to nInputs
      ::aWeights[ n ] = 0
   next

return Self

METHOD Learn( aInputs, nExpectedResult ) CLASS TPerceptron

   local nSum := ::Calculate( aInputs )

   if nSum < nExpectedResult
      ::aWeights[ 1 ] += 0.1
   endif

   if nSum > nExpectedResult
      ::aWeights[ 1 ] -= 0.1
   endif

return nil         

METHOD Calculate( aInputs ) CLASS TPerceptron

   local n, nSum := 0

   for n = 1 to Len( aInputs )
      nSum += aInputs[ n ] * ::aWeights[ n ]
   next

return nSum
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Inteligencia artificial - Clase TPerceptron
Posted: Sat Nov 10, 2018 07:05 PM

Saludos y Agradecido por este importante avance,
Estoy interesado en evaluar su aplicación en valores comerciales, aplicado a un producto Rotación (Compras/Ventas), secuencia de compra de clientes según temporadas (Estacionarios) y productos que adquiere según temporadas.

Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
Re: Inteligencia artificial - Clase TPerceptron
Posted: Mon Nov 12, 2018 01:17 PM
Buenas:

Lo que tú quieres hacer se puede hacer directamente con la clase TEXCEL y la formula "pronostico".
En mi caso, yo tengo un EXCEL ya armado y el programa lo abre (a modo silencioso), cumplimenta las celdas del historico y muestra las previsiones a través de la formula PRONOSTICO, lee las celdas resultantes y lo muestra en pantalla con un nivel de predicción del 95%. Si el usuario desea más información, se muestra el EXCEL en pantalla con gráficos incluidos.

Codigo:
Code (fw): Select all Collapse
...
...
  for z=1 to 20
   oSheet:Cells( z+371,14):Value =dat
   oSheet:Cells( z+371,16):FormulaLocal:="=pronostico(N"+alltrim(str(z+371))+";O"+alltrim(str(nlinI))+":O371;N"+alltrim(str(nlinI))+":N371)"    && pronosticos de ingresos      
   oSheet:Cells( z+371,19):FormulaLocal:="=pronostico(N"+alltrim(str(z+371))+";R"+alltrim(str(nlinC))+":R371;N"+alltrim(str(nlinC))+":N371)"    && pronosticos de compras      
   oSheet:Cells( z+371,22):FormulaLocal:="=pronostico(N"+alltrim(str(z+371))+";U"+alltrim(str(nlinG))+":U371;N"+alltrim(str(nlinG))+":N371)"    && pronosticos de gastos       
   dat=dat+1
  next
...
...



Pantalla:
https://ibb.co/kKH1TV

Excel resultante con gráficos incluidos
https://ibb.co/cxuy8V

saludos.
LORENZO.
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Inteligencia artificial - Clase TPerceptron
Posted: Mon Nov 12, 2018 02:34 PM
Loren wrote:Buenas:

Lo que tú quieres hacer se puede hacer directamente con la clase TEXCEL y la formula "pronostico".
En mi caso, yo tengo un EXCEL ya armado y el programa lo abre (a modo silencioso), cumplimenta las celdas del historico y muestra las previsiones a través de la formula PRONOSTICO, lee las celdas resultantes y lo muestra en pantalla con un nivel de predicción del 95%. Si el usuario desea más información, se muestra el EXCEL en pantalla con gráficos incluidos.

Codigo:
Code (fw): Select all Collapse
...
...
  for z=1 to 20
   oSheet:Cells( z+371,14):Value =dat
   oSheet:Cells( z+371,16):FormulaLocal:="=pronostico(N"+alltrim(str(z+371))+";O"+alltrim(str(nlinI))+":O371;N"+alltrim(str(nlinI))+":N371)"    && pronosticos de ingresos      
   oSheet:Cells( z+371,19):FormulaLocal:="=pronostico(N"+alltrim(str(z+371))+";R"+alltrim(str(nlinC))+":R371;N"+alltrim(str(nlinC))+":N371)"    && pronosticos de compras      
   oSheet:Cells( z+371,22):FormulaLocal:="=pronostico(N"+alltrim(str(z+371))+";U"+alltrim(str(nlinG))+":U371;N"+alltrim(str(nlinG))+":N371)"    && pronosticos de gastos       
   dat=dat+1
  next
...
...



Pantalla:
https://ibb.co/kKH1TV

Excel resultante con gráficos incluidos
https://ibb.co/cxuy8V

saludos.
LORENZO.



Genial!!

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Continue the discussion