Code: Select all | Expand
#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