soar> d
=>WM: (2: S1 ^superstate nil)
=>WM: (1: S1 ^type state)
0: ==>S: S1 =>WM: (3: S1 ^io I1)
=>WM: (4: I1 ^input-link I2)
=>WM: (5: I2 ^strategy-number 1)
<=WM: (5: I2 ^strategy-number 1)
=>WM: (6: I2 ^strategy-number 1)
Firing top-state*elaborate*io
-->
(I1 ^output-link O1 +)
Firing pd*initial-ps-and-state ## The problem space is set up.
-->
(S1 ^achieved yes +)
(S1 ^strategy-number none +)
(S1 ^problem-name none +)
(S1 ^turn p1 +)
(S1 ^p2total 0 +)
(S1 ^p1total 0 +)
(S1 ^p2choice none +)
(S1 ^p1choice none +)
(S1 ^round 1 +)
(S1 ^problem-space prisoners-dilemma +)
(S1 ^name top-state +)
=>WM: (18: S1 ^achieved yes)
=>WM: (17: S1 ^strategy-number none)
=>WM: (16: S1 ^problem-name none)
=>WM: (15: S1 ^turn p1)
=>WM: (14: S1 ^p2total 0)
=>WM: (13: S1 ^p1total 0)
=>WM: (12: S1 ^p2choice none)
=>WM: (11: S1 ^p1choice none)
=>WM: (10: S1 ^round 1)
=>WM: (9: S1 ^problem-space prisoners-dilemma)
=>WM: (8: S1 ^name top-state)
=>WM: (7: I1 ^output-link O1)
<=WM: (6: I2 ^strategy-number 1)
=>WM: (19: I2 ^strategy-number 1)
Firing pd*read-strategy-number ## The tcl interface for choosing
--> ## strategies.
Firing pd*propose-operator*fetch-problem
-->
(O2 ^name fetch-problem + [O] )
(S1 ^operator O2 <)
(S1 ^operator O2 +)
=>WM: (21: S1 ^operator O2 +)
=>WM: (20: O2 ^name fetch-problem)
<=WM: (19: I2 ^strategy-number 1)
=>WM: (22: I2 ^strategy-number 1)
=>WM: (23: S1 ^operator O2)
1: O: O2 (fetch-problem: ) ## The chosen strategy number
## is added to WM.
soar> d
<=WM: (22: I2 ^strategy-number 1)
=>WM: (24: I2 ^strategy-number 1)
Firing pd*elaborate*fetch-problem*strategy-number
-->
(S1 ^strategy-number 1 + [O] )
Firing pd*fetch-problem*remove-other-stuff
-->
(S1 ^achieved yes - [O] )
(S1 ^strategy-number none - [O] )
(S1 ^problem-name none - [O] )
Firing pd*fetch-problem*elaborate*main-get
-->
(O2 ^finished t + [O] )
(S1 ^achieved no + [O] )
(S1 ^achieved yes - [O] )
=>WM: (27: O2 ^finished t)
=>WM: (26: S1 ^achieved no)
=>WM: (25: S1 ^strategy-number 1)
<=WM: (18: S1 ^achieved yes)
<=WM: (17: S1 ^strategy-number none)
<=WM: (16: S1 ^problem-name none)
<=WM: (24: I2 ^strategy-number 1)
=>WM: (28: I2 ^strategy-number 1)
Firing pd*elaborate*strategy1 ## The strategy for each player
--> ## is added to WM.
(S1 ^strategynumberp2 1 +)
(S1 ^strategynumberp1 1 +)
Firing pd*fetch-problem*terminate
-->
(S1 ^operator O2 @)
Retracting pd*propose-operator*fetch-problem
--> (S1 ^operator O2 <)
(S1 ^operator O2 +)
=>WM: (30: S1 ^strategynumberp2 1)
=>WM: (29: S1 ^strategynumberp1 1)
<=WM: (21: S1 ^operator O2 +)
<=WM: (28: I2 ^strategy-number 1)
=>WM: (31: I2 ^strategy-number 1)
Firing pd*propose-op*p1-choose-coop-a ## An operator for p1 is
--> ## selected.
(O3 ^name p1-choose-coop + [O] )
(S1 ^operator O3 +)
=>WM: (33: S1 ^operator O3 +)
=>WM: (32: O3 ^name p1-choose-coop)
<=WM: (31: I2 ^strategy-number 1)
=>WM: (34: I2 ^strategy-number 1)
=>WM: (35: S1 ^operator O3)
<=WM: (23: S1 ^operator O2)
2: O: O3 (p1-choose-coop)
soar> d
<=WM: (34: I2 ^strategy-number 1)
=>WM: (36: I2 ^strategy-number 1)
Firing pd*apply-op-*p1-choose-coop
-->
(S1 ^turn p2 + [O] )
(S1 ^turn p1 - [O] )
(S1 ^p1choice coop + [O] )
(S1 ^p1choice none - [O] )
Retracting pd*fetch-problem*terminate
--> (S1 ^operator O2 @)
=>WM: (38: S1 ^turn p2)
=>WM: (37: S1 ^p1choice coop)
<=WM: (20: O2 ^name fetch-problem)
<=WM: (27: O2 ^finished t)
<=WM: (15: S1 ^turn p1)
<=WM: (11: S1 ^p1choice none)
<=WM: (36: I2 ^strategy-number 1)
=>WM: (39: I2 ^strategy-number 1)
Firing pd*teminate-op*p1-choose-coop
-->
(S1 ^operator O3 @)
Firing pd*propose-op*p2-choose-coop-a
-->
(O4 ^name p2-choose-coop + [O] )
(S1 ^operator O4 +)
Retracting pd*propose-op*p1-choose-coop-a
--> (S1 ^operator O3 +)
=>WM: (41: S1 ^operator O4 +)
=>WM: (40: O4 ^name p2-choose-coop)
<=WM: (33: S1 ^operator O3 +)
<=WM: (39: I2 ^strategy-number 1)
=>WM: (42: I2 ^strategy-number 1)
=>WM: (43: S1 ^operator O4)
<=WM: (35: S1 ^operator O3)
3: O: O4 (p2-choose-coop) ## An operator for p2 is
## selected
soar> d
<=WM: (42: I2 ^strategy-number 1)
=>WM: (44: I2 ^strategy-number 1)
Firing pd*apply-op-*p2-choose-coop
-->
(S1 ^turn p1 + [O] )
(S1 ^turn p2 - [O] )
(S1 ^p2choice coop + [O] )
(S1 ^p2choice none - [O] )
Retracting pd*teminate-op*p1-choose-coop
--> (S1 ^operator O3 @)
=>WM: (46: S1 ^turn p1)
=>WM: (45: S1 ^p2choice coop)
<=WM: (32: O3 ^name p1-choose-coop)
<=WM: (38: S1 ^turn p2)
<=WM: (12: S1 ^p2choice none)
<=WM: (44: I2 ^strategy-number 1)
=>WM: (47: I2 ^strategy-number 1)
Firing pd*teminate-op*p2-choose-coop
-->
(S1 ^operator O4 @)
Firing pd*propose-op*scores-coop-coop ## A score operator is chosen
-->
(O5 ^name score-coop-coop + [O] )
(S1 ^operator O5 +)
Retracting pd*propose-op*p2-choose-coop-a
--> (S1 ^operator O4 +)
=>WM: (49: S1 ^operator O5 +)
=>WM: (48: O5 ^name score-coop-coop)
<=WM: (41: S1 ^operator O4 +)
<=WM: (47: I2 ^strategy-number 1)
=>WM: (50: I2 ^strategy-number 1)
=>WM: (51: S1 ^operator O5)
<=WM: (43: S1 ^operator O4)
4: O: O5 (score-coop-coop)
soar> d
<=WM: (50: I2 ^strategy-number 1)
=>WM: (52: I2 ^strategy-number 1)
Firing pd*apply-op*scores-coop-coop
-->
(S1 ^p2choice none + [O] )
(S1 ^p2choice coop - [O] )
(S1 ^p1choice none + [O] )
(S1 ^p1choice coop - [O] )
(S1 ^round 1 + [O] )
(S1 ^round 1 + [O] )
(S1 ^p2score 3 + [O] )
(S1 ^p1score 3 + [O] )
Retracting pd*teminate-op*p2-choose-coop
--> (S1 ^operator O4 @)
=>WM: (56: S1 ^p2choice none)
=>WM: (55: S1 ^p1choice none)
=>WM: (54: S1 ^p2score 3)
=>WM: (53: S1 ^p1score 3)
<=WM: (40: O4 ^name p2-choose-coop)
<=WM: (45: S1 ^p2choice coop)
<=WM: (37: S1 ^p1choice coop)
<=WM: (52: I2 ^strategy-number 1)
=>WM: (57: I2 ^strategy-number 1)
Firing pd*terminate-op*scores-coop-coop
-->
(S1 ^operator O5 @)
Firing pd*propose-op*p1-choose-coop-a
-->
(O6 ^name p1-choose-coop + [O] )
(S1 ^operator O6 +)
Retracting pd*propose-op*scores-coop-coop
--> (S1 ^operator O5 +)
=>WM: (59: S1 ^operator O6 +)
=>WM: (58: O6 ^name p1-choose-coop)
<=WM: (49: S1 ^operator O5 +)
<=WM: (57: I2 ^strategy-number 1)
=>WM: (60: I2 ^strategy-number 1)
=>WM: (61: S1 ^operator O6)
<=WM: (51: S1 ^operator O5)
5: O: O6 (p1-choose-coop)
Trace 2
soar> d
=>WM: (2: S1 ^superstate nil)
=>WM: (1: S1 ^type state)
0: ==>S: S1 =>WM: (3: S1 ^io I1)
=>WM: (4: I1 ^input-link I2)
=>WM: (5: I2 ^strategy-number 1)
<=WM: (5: I2 ^strategy-number 1)
=>WM: (6: I2 ^strategy-number 1)
Firing top-state*elaborate*io
-->
(I1 ^output-link O1 +)
Firing pd*initial-ps-and-state
-->
(S1 ^achieved yes +)
(S1 ^strategy-number none +)
(S1 ^problem-name none +)
(S1 ^turn p1 +)
(S1 ^p2total 0 +)
(S1 ^p1total 0 +)
(S1 ^p2choice none +)
(S1 ^p1choice none +)
(S1 ^round 1 +)
(S1 ^problem-space prisoners-dilemma +)
(S1 ^name top-state +)
=>WM: (18: S1 ^achieved yes)
=>WM: (17: S1 ^strategy-number none)
=>WM: (16: S1 ^problem-name none)
=>WM: (15: S1 ^turn p1)
=>WM: (14: S1 ^p2total 0)
=>WM: (13: S1 ^p1total 0)
=>WM: (12: S1 ^p2choice none)
=>WM: (11: S1 ^p1choice none)
=>WM: (10: S1 ^round 1)
=>WM: (9: S1 ^problem-space prisoners-dilemma)
=>WM: (8: S1 ^name top-state)
=>WM: (7: I1 ^output-link O1)
<=WM: (6: I2 ^strategy-number 1)
=>WM: (19: I2 ^strategy-number 1)
Firing pd*read-strategy-number
-->
Firing pd*propose-operator*fetch-problem
-->
(O2 ^name fetch-problem + [O] )
(S1 ^operator O2 <)
(S1 ^operator O2 +)
=>WM: (21: S1 ^operator O2 +)
=>WM: (20: O2 ^name fetch-problem)
<=WM: (19: I2 ^strategy-number 1)
=>WM: (22: I2 ^strategy-number 36)
=>WM: (23: S1 ^operator O2)
1: O: O2 (fetch-problem: )
soar> d
<=WM: (22: I2 ^strategy-number 36)
=>WM: (24: I2 ^strategy-number 36)
Firing pd*elaborate*fetch-problem*strategy-number
-->
(S1 ^strategy-number 36 + [O] )
Firing pd*fetch-problem*remove-other-stuff
-->
(S1 ^achieved yes - [O] )
(S1 ^strategy-number none - [O] )
(S1 ^problem-name none - [O] )
Firing pd*fetch-problem*elaborate*main-get
-->
(O2 ^finished t + [O] )
(S1 ^achieved no + [O] )
(S1 ^achieved yes - [O] )
=>WM: (27: O2 ^finished t)
=>WM: (26: S1 ^achieved no)
=>WM: (25: S1 ^strategy-number 36)
<=WM: (18: S1 ^achieved yes)
<=WM: (17: S1 ^strategy-number none)
<=WM: (16: S1 ^problem-name none)
<=WM: (24: I2 ^strategy-number 36)
=>WM: (28: I2 ^strategy-number 36)
Firing pd*elaborate*strategy36
-->
(S1 ^strategynumberp2 6 +)
(S1 ^strategynumberp1 6 +)
Firing pd*fetch-problem*terminate
-->
(S1 ^operator O2 @)
Retracting pd*propose-operator*fetch-problem
--> (S1 ^operator O2 <)
(S1 ^operator O2 +)
=>WM: (30: S1 ^strategynumberp2 6)
=>WM: (29: S1 ^strategynumberp1 6)
<=WM: (21: S1 ^operator O2 +)
<=WM: (28: I2 ^strategy-number 36)
=>WM: (31: I2 ^strategy-number 36)
Firing pd*propose-op*p1-choose-coop-evolve
-->
(O3 ^name p1-choose-coop-evolve + [O] )
(S1 ^operator O3 +)
Firing pd*propose-op*p1-choose-def-evolve
-->
(O4 ^name p1-choose-def-evolve + [O] )
(S1 ^operator O4 +)
=>WM: (35: S1 ^operator O4 +)
=>WM: (34: S1 ^operator O3 +)
=>WM: (33: O4 ^name p1-choose-def-evolve)
=>WM: (32: O3 ^name p1-choose-coop-evolve)
<=WM: (31: I2 ^strategy-number 36)
=>WM: (36: I2 ^strategy-number 36)
=>WM: (44: S2 ^item O3)
=>WM: (43: S2 ^item O4)
=>WM: (42: S2 ^quiescence t)
=>WM: (41: S2 ^choices multiple)
=>WM: (40: S2 ^impasse tie)
=>WM: (39: S2 ^attribute operator)
=>WM: (38: S2 ^superstate S1)
=>WM: (37: S2 ^type state)
<=WM: (23: S1 ^operator O2)
2: ==>S: S2 (operator tie) ## Tie due to cooperate and
## defect operators both
soar> d ## proposed
<=WM: (36: I2 ^strategy-number 36)
=>WM: (45: I2 ^strategy-number 36)
Firing pd*propose-space*selection ## New problem space
-->
(P1 ^name selection +)
(S2 ^problem-space P1 <)
(S2 ^problem-space P1 +)
Retracting pd*fetch-problem*terminate
--> (S1 ^operator O2 @)
=>WM: (47: P1 ^name selection)
=>WM: (46: S2 ^problem-space P1)
<=WM: (20: O2 ^name fetch-problem)
<=WM: (27: O2 ^finished t)
<=WM: (45: I2 ^strategy-number 36)
=>WM: (48: I2 ^strategy-number 36)
Firing selection*propose*evaluate-object ## However, I have not set this
--> ## up properly as the same two
(O5 ^object O3 + [O] ) ## operators are tied here...
(O5 ^name evaluate-object + [O] )
(O5 ^state S2 + [O] )
(S2 ^operator O5 +)
Firing selection*propose*evaluate-object
-->
(O6 ^object O4 + [O] )
(O6 ^name evaluate-object + [O] )
(O6 ^state S2 + [O] )
(S2 ^operator O6 +)
=>WM: (56: S2 ^operator O6 +)
=>WM: (55: S2 ^operator O5 +)
=>WM: (54: O6 ^object O4)
=>WM: (53: O6 ^name evaluate-object)
=>WM: (52: O6 ^state S2)
=>WM: (51: O5 ^object O3)
=>WM: (50: O5 ^name evaluate-object)
=>WM: (49: O5 ^state S2)
<=WM: (48: I2 ^strategy-number 36)
=>WM: (57: I2 ^strategy-number 36)
=>WM: (65: S3 ^item O5)
=>WM: (64: S3 ^item O6)
=>WM: (63: S3 ^quiescence t)
=>WM: (62: S3 ^choices multiple)
=>WM: (61: S3 ^impasse tie)
=>WM: (60: S3 ^attribute operator)
=>WM: (59: S3 ^superstate S2)
=>WM: (58: S3 ^type state)
3: ==>S: S3 (operator tie)