Inteligencia artificial - Clase TPerceptron

Re: Inteligencia artificial - Clase TPerceptron

Postby Antonio Linares » Sat Jun 24, 2017 5:49 am

Teaching a perceptron to multiply a number by 2:

Code: Select all  Expand view  RUN
#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
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Inteligencia artificial - Clase TPerceptron

Postby jnavas » Sat Nov 10, 2018 7: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.
User avatar
jnavas
 
Posts: 479
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Inteligencia artificial - Clase TPerceptron

Postby Loren » Mon Nov 12, 2018 1: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: Select all  Expand view  RUN
...
...
  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.
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: Inteligencia artificial - Clase TPerceptron

Postby Compuin » Mon Nov 12, 2018 2: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: Select all  Expand view  RUN
...
...
  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 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 43 guests