toaomalkster / conscious-calculator

A research project into the underlying mechanisms of consciousness, and an emulation of a calculator that is conscious.
GNU General Public License v3.0
6 stars 0 forks source link

Be able to solve "3 + ? = 8" without assistance #6

Open toaomalkster opened 5 years ago

toaomalkster commented 5 years ago

TODO:

toaomalkster commented 5 years ago

Bug - it's not writing the PerceptEvent into STM:

STM Add:    MemoryEvent{179fc,1ms,0.500,{eventData:3 + ? = 8,eventType:TextRequestEvent}}
STM Add:    MemoryEvent{b0cdd,0ms,0.600,{eventData:true,eventType:StuckThoughtEvent}}

I think that should include

PerceptEvent{8ffb0,19ms,0.058,ref=0efb6,Equation#3b388[Number#a6fea(3) Operator#48bb5(+) ExpressionToken#6221f(?) EquationOperator#1c814(=) Number#0fb94(8)]}

Part of the problem is that I think I've missed a step:

  1. Try to parse -> PerceptEvent with low priority due to parse errors
  2. Try to evaluate -> Stuck.
  3. Parser should see Stuck flag and upgrade the strength.
  4. Now PerceptEvent becomes top and gets copied to STM.
  5. Still nothing else happening -> Stuck, again.
  6. Now try loading concept from LTM.
toaomalkster commented 5 years ago

Nice to have - silence all those TRACE events if they're just repeats:

00:01:14 [main] TRACE EquationEvaluationPr - Unable to evaluate PerceptEvent{8ffb0,7ms,0.068,ref=0efb6,Equation#3b3...
00:01:14 [main] TRACE Emulator             - Events: [[MemorySearchRequestEvent{6cfa6,1ms,0.078,ref=8ffb0,Equation#...
00:01:14 [main] DEBUG WorkingMemory        - WM Add:     MemorySearchRequestEvent{6cfa6,2ms,0.078,ref=8ffb0,Equatio...
00:01:14 [main] TRACE EquationEvaluationPr - Unable to evaluate PerceptEvent{8ffb0,19ms,0.058,ref=0efb6,Equation#3b...
00:01:14 [main] TRACE FindMatchingConceptP - Blocked event emit because already present and unhandled in WM: Memory...
00:01:14 [main] TRACE Emulator             - Events: []
00:01:14 [main] TRACE EquationEvaluationPr - Unable to evaluate PerceptEvent{8ffb0,21ms,0.048,ref=0efb6,Equation#3b...
00:01:14 [main] TRACE FindMatchingConceptP - Blocked event emit because already present and unhandled in WM: Memory...
00:01:14 [main] TRACE Emulator             - Events: []
00:01:14 [main] TRACE EquationEvaluationPr - Unable to evaluate PerceptEvent{8ffb0,22ms,0.038,ref=0efb6,Equation#3b...
00:01:14 [main] TRACE FindMatchingConceptP - Blocked event emit because already present and unhandled in WM: Memory...
00:01:14 [main] TRACE Emulator             - Events: []
00:01:14 [main] TRACE EquationEvaluationPr - Unable to evaluate PerceptEvent{8ffb0,23ms,0.028,ref=0efb6,Equation#3b...
00:01:14 [main] TRACE FindMatchingConceptP - Blocked event emit because already present and unhandled in WM: Memory...
toaomalkster commented 5 years ago

Bug - FindMatchingConceptProcessor is currently designed with the hope that it can operate against any arbitrary event that contains a percept. But it gets confused as in the following, where it doesn't know whether to process the PerceptEvent or the MemoryEvent. Consequently, when processing the PerceptEvent, it triggers a MemorySearchRequestEvent, which results in a MemoryEvent, and then attempts to use the MemoryEvent to solve that same MemoryEvent as the original trigger. All because it gets confused about what the orginal trigger was.

TextRequestEvent{103b4,468.8s,0.440,REQUEST,HANDLED,3 + ? = 8}
PerceptEvent{79240,468.7s,0.048,ref=103b4,Equation#00e5e[Number#28da7(3) Operator#3cb1e(+) ExpressionToken#8d2b9(?) EquationOperator#95217(=) Number#cf32f(8)]}]
StuckThoughtEvent{5aed0,464.9s,0.570,ref=103b4,true}
MemorySearchRequestEvent{f87e8,417.7s,0.058,HANDLED,ref=79240,Equation#00e5e[Number#28da7(3) Operator#3cb1e(+) ExpressionToken#8d2b9(?) EquationOperator#95217(=) Number#cf32f(8)]}
MemoryEvent{82c51,366.6s,0.068,ref=f87e8,{eventType:"",eventData:[Percept{NumberFact,ref=NumberFact.Name,null},Percept{EquationFact,ref=EquationFact.Name,ref=StatementTruthFact,ref=ExpressionFact,ref=NumberFact,null},Percept{OperatorFact,ref=ExpressionFact,ref=OperatorFact.Name,null},Percept{ExpressionTokenFact,ref=ExpressionTokenFact.Name,ref=ExpressionFact,null},Percept{EquationOperatorFact,ref=EquationOperatorFact.Name,ref=EquationFact,null}]}}