Inteligencia artificial - Clase TPerceptron

User avatar
Antonio Linares
Site Admin
Posts: 37485
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Inteligencia artificial - Clase TPerceptron

Post by Antonio Linares »

Teaching a perceptron to multiply a number by 2:

Code: Select all

#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
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Inteligencia artificial - Clase TPerceptron

Post by jnavas »

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.
Loren
Posts: 458
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: Inteligencia artificial - Clase TPerceptron

Post by Loren »

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: Select all

...
...
  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.
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Re: Inteligencia artificial - Clase TPerceptron

Post by Compuin »

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: Select all

...
...
  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!!
Post Reply