Open arr28 opened 8 years ago
Move distance analyser doesn't cope with propnets with loops. Other than that, it was looking okay.
19:20:58.205 - ======================================================
19:20:58.208 - Beginning new game: Base.hexbad.1471717258131
19:20:58.208 - Logs available at: http://localhost:9199/localview/Base.hexbad.1471717258131
19:21:00.651 ? Unrecognised game. Created new game directory: C:\Personal\Projects\GGP\ggp-base\data\games\1471717260650
19:21:00.769 - Starting watchdog with interval 600000ms
19:21:08.090 ? Propnet loop detected - skipping some optimization
19:21:08.142 - Filler move set: [( does red noop )]
19:21:08.659 ? Propnet loops detected - unable to check for duplicate logic amongst components fed from such loops
19:21:09.204 - Performing factor analysis
19:21:59.598 - Control set: [( true ( control red ) )(false), ( true ( control black ) )(false)]
19:22:00.155 - Reducing with respect to XSentence: ( true ( control red ) )
19:22:06.374 - Num components in goal-less X-net: 42061
19:22:06.374 - Num components in goal-less O-net: 42061
19:22:06.374 - Num components in goal net: 41413
19:22:06.374 - Num components in terminality net: 41406
19:22:06.997 - This is Sancho 1.61d with last commit b573590fa4a633e2a3cd1355aad3cfe4b8095d5b
19:22:06.997 - Running with machine-specific properties:
19:22:06.998 - SAFETY_MARGIN = 3300 (default: 2500)
19:22:06.998 - CREATING_DATABASE = false (default: false)
19:22:06.998 - WC_LOCATION = C:/Personal/Projects/GGP/ggp-base (default: null)
19:22:06.998 - CPU_INTENSIVE_THREADS = 4 (default: -1)
19:22:06.998 - USE_AFFINITY = false (default: true)
19:22:07.021 - Start clock: 300s
19:22:07.021 - Play clock: 30s
19:22:07.021 - We are: red
19:22:11.146 - Latch analysis results
19:22:11.146 - 162 positive base latches: ( ( true ( cell a 1 black ) ), ( true ( cell a 1 red ) ), ( true ( cell a 2 black ) ), ( true ( cell a 2 red ) ), ( true ( cell a 3 black ) ), ( true ( cell a 3 red ) ), ( true ( cell a 4 black ) ), ( true ( cell a 4 red ) ), ( true ( cell a 5 black ) ), ( true ( cell a 5 red ) ), ( true ( cell a 6 black ) ), ( true ( cell a 6 red ) ), ( true ( cell a 7 black ) ), ( true ( cell a 7 red ) ), ( true ( cell a 8 black ) ), ( true ( cell a 8 red ) ), ( true ( cell a 9 black ) ), ( true ( cell a 9 red ) ), ( true ( cell b 1 black ) ), ( true ( cell b 1 red ) ), ( true ( cell b 2 black ) ), ( true ( cell b 2 red ) ), ( true ( cell b 3 black ) ), ( true ( cell b 3 red ) ), ( true ( cell b 4 black ) ), ( true ( cell b 4 red ) ), ( true ( cell b 5 black ) ), ( true ( cell b 5 red ) ), ( true ( cell b 6 black ) ), ( true ( cell b 6 red ) ), ( true ( cell b 7 black ) ), ( true ( cell b 7 red ) ), ( true ( cell b 8 black ) ), ( true ( cell b 8 red ) ), ( true ( cell b 9 black ) ), ( true ( cell b 9 red ) ), ( true ( cell c 1 black ) ), ( true ( cell c 1 red ) ), ( true ( cell c 2 black ) ), ( true ( cell c 2 red ) ), ( true ( cell c 3 black ) ), ( true ( cell c 3 red ) ), ( true ( cell c 4 black ) ), ( true ( cell c 4 red ) ), ( true ( cell c 5 black ) ), ( true ( cell c 5 red ) ), ( true ( cell c 6 black ) ), ( true ( cell c 6 red ) ), ( true ( cell c 7 black ) ), ( true ( cell c 7 red ) ), ( true ( cell c 8 black ) ), ( true ( cell c 8 red ) ), ( true ( cell c 9 black ) ), ( true ( cell c 9 red ) ), ( true ( cell d 1 black ) ), ( true ( cell d 1 red ) ), ( true ( cell d 2 black ) ), ( true ( cell d 2 red ) ), ( true ( cell d 3 black ) ), ( true ( cell d 3 red ) ), ( true ( cell d 4 black ) ), ( true ( cell d 4 red ) ), ( true ( cell d 5 black ) ), ( true ( cell d 5 red ) ), ( true ( cell d 6 black ) ), ( true ( cell d 6 red ) ), ( true ( cell d 7 black ) ), ( true ( cell d 7 red ) ), ( true ( cell d 8 black ) ), ( true ( cell d 8 red ) ), ( true ( cell d 9 black ) ), ( true ( cell d 9 red ) ), ( true ( cell e 1 black ) ), ( true ( cell e 1 red ) ), ( true ( cell e 2 black ) ), ( true ( cell e 2 red ) ), ( true ( cell e 3 black ) ), ( true ( cell e 3 red ) ), ( true ( cell e 4 black ) ), ( true ( cell e 4 red ) ), ( true ( cell e 5 black ) ), ( true ( cell e 5 red ) ), ( true ( cell e 6 black ) ), ( true ( cell e 6 red ) ), ( true ( cell e 7 black ) ), ( true ( cell e 7 red ) ), ( true ( cell e 8 black ) ), ( true ( cell e 8 red ) ), ( true ( cell e 9 black ) ), ( true ( cell e 9 red ) ), ( true ( cell f 1 black ) ), ( true ( cell f 1 red ) ), ( true ( cell f 2 black ) ), ( true ( cell f 2 red ) ), ( true ( cell f 3 black ) ), ( true ( cell f 3 red ) ), ( true ( cell f 4 black ) ), ( true ( cell f 4 red ) ), ( true ( cell f 5 black ) ), ( true ( cell f 5 red ) ), ( true ( cell f 6 black ) ), ( true ( cell f 6 red ) ), ( true ( cell f 7 black ) ), ( true ( cell f 7 red ) ), ( true ( cell f 8 black ) ), ( true ( cell f 8 red ) ), ( true ( cell f 9 black ) ), ( true ( cell f 9 red ) ), ( true ( cell g 1 black ) ), ( true ( cell g 1 red ) ), ( true ( cell g 2 black ) ), ( true ( cell g 2 red ) ), ( true ( cell g 3 black ) ), ( true ( cell g 3 red ) ), ( true ( cell g 4 black ) ), ( true ( cell g 4 red ) ), ( true ( cell g 5 black ) ), ( true ( cell g 5 red ) ), ( true ( cell g 6 black ) ), ( true ( cell g 6 red ) ), ( true ( cell g 7 black ) ), ( true ( cell g 7 red ) ), ( true ( cell g 8 black ) ), ( true ( cell g 8 red ) ), ( true ( cell g 9 black ) ), ( true ( cell g 9 red ) ), ( true ( cell h 1 black ) ), ( true ( cell h 1 red ) ), ( true ( cell h 2 black ) ), ( true ( cell h 2 red ) ), ( true ( cell h 3 black ) ), ( true ( cell h 3 red ) ), ( true ( cell h 4 black ) ), ( true ( cell h 4 red ) ), ( true ( cell h 5 black ) ), ( true ( cell h 5 red ) ), ( true ( cell h 6 black ) ), ( true ( cell h 6 red ) ), ( true ( cell h 7 black ) ), ( true ( cell h 7 red ) ), ( true ( cell h 8 black ) ), ( true ( cell h 8 red ) ), ( true ( cell h 9 black ) ), ( true ( cell h 9 red ) ), ( true ( cell i 1 black ) ), ( true ( cell i 1 red ) ), ( true ( cell i 2 black ) ), ( true ( cell i 2 red ) ), ( true ( cell i 3 black ) ), ( true ( cell i 3 red ) ), ( true ( cell i 4 black ) ), ( true ( cell i 4 red ) ), ( true ( cell i 5 black ) ), ( true ( cell i 5 red ) ), ( true ( cell i 6 black ) ), ( true ( cell i 6 red ) ), ( true ( cell i 7 black ) ), ( true ( cell i 7 red ) ), ( true ( cell i 8 black ) ), ( true ( cell i 8 red ) ), ( true ( cell i 9 black ) ), ( true ( cell i 9 red ) ) )
19:22:11.147 - 0 negative base latches
19:22:11.147 - 0 simple positive goal latches
19:22:11.147 - 0 simple negative goal latches
19:22:11.147 - 0 complex positive goal latches
19:22:11.147 - Not all roles have positive goal latches
19:22:11.172 - Not suitable for PayoffMatrixGamePlayer: Can't prove that the game is fixed length
19:24:03.439 - No heuristics enabled
19:24:03.439 - Performed 100866 simulations to calculate heuristics
19:24:03.439 - Role 0 has control prop: ( true ( control red ) )
19:24:03.439 - Role 1 has control prop: ( true ( control black ) )
19:24:13.446 - branchingFactorApproximation = 45.783901413756865, averageBranchingFactor = 48.134552580013064, choices high water mark = 66
19:24:13.446 - Did 1531 simulations for game characteristics
19:24:13.446 - Fixed characteristics
19:24:13.446 - Game is not a simultaneous turn game
19:24:13.446 - Is 2 player game
19:24:13.446 - Statistical characteristics
19:24:13.446 - Range of lengths of sample games seen: [16,81]
19:24:13.446 - Average num turns: 46.142390594382825
19:24:13.446 - Std deviation num turns: 9.697816990255747
19:24:13.446 - Average num turns for non-drawn result: 46.14239059438275
19:24:13.446 - Average hyper-sequence length: 1.0
19:24:13.446 - Variance in hyper-sequence length: 0.0
19:24:13.446 - Goals stability: 0.1463456637854763
19:24:13.446 - Proportion of max length games ending in draws: 0.0
19:24:13.446 - Num factors: 1
19:24:13.446 - Max factor failure time (ms) 0
19:24:13.446 - IsFixedSum true
19:24:13.446 - Measured goal volatility is 0.34849394748597934 [monotonic]
19:24:13.446 - Using advanced heuristic mechanism
19:24:13.446 - Set explorationBias range to [0.40451780030737655, 0.6067767004610648]
19:24:13.447 - Greedy rollout terminal discovery effectiveness: 49.80092234539257
19:24:13.447 - Num terminal props seen: 162 out of 164
19:24:13.447 - Estimated greedy rollout cost: 24.1631014283386
19:24:13.742 - Min raw score = 0, max = 100
19:24:13.742 - multiRoleAverageScoreDiff = 0
19:24:13.742 - Use of RAVE forces sample size of 1
19:24:13.742 - Performed 38524 simulations in 10000ms
19:24:13.742 - 3852 simulations/second performed - setting rollout sample size to 1
19:24:18.742 - Iterations in 2500 ms with/without removal before adding: 4668/4539
19:24:18.742 - Speed improvement insufficient to justify 2-pass prop setting
19:24:18.747 - Not using greedy rollouts
19:24:18.993 - Hyper expansion processing is not enabled
19:24:18.993 - Weight decay disabled
19:24:18.993 - Expand-after-visits threshold set to 8
19:24:18.993 - Using periodic node score normalization
19:24:18.993 - Using UCB-tuned
19:24:18.993 - Early cutoff disabled
19:24:18.993 - Mixi-max selection disabled
19:24:19.098 - Begin analysing move distances...
19:24:19.109 - Exception in thread "GamePlayer - Sancho 1.61d (9147)"
19:24:19.109 - java.lang.StackOverflowError
19:24:19.111 - at org.ggp.base.player.gamer.statemachine.sancho.DependencyDistanceAnalyser.recursiveAddImmediatelyDependentMovesViaLegals(DependencyDistanceAnalyser.java:1010)
19:24:19.111 - at org.ggp.base.player.gamer.statemachine.sancho.DependencyDistanceAnalyser.recursiveAddImmediatelyDependentMovesViaLegals(DependencyDistanceAnalyser.java:1012)
19:24:19.111 - at org.ggp.base.player.gamer.statemachine.sancho.DependencyDistanceAnalyser.recursiveAddImmediatelyDependentMovesViaLegals(DependencyDistanceAnalyser.java:1012)
19:24:19.111 - at org.ggp.base.player.gamer.statemachine.sancho.DependencyDistanceAnalyser.recursiveAddImmediatelyDependentMovesViaLegals(DependencyDistanceAnalyser.java:1012)
19:24:19.112 - at org.ggp.base.player.gamer.statemachine.sancho.DependencyDistanceAnalyser.recursiveAddImmediatelyDependentMovesViaLegals(DependencyDistanceAnalyser.java:1012)
19:24:19.112 - at org.ggp.base.player.gamer.statemachine.sancho.DependencyDistanceAnalyser.recursiveAddImmediatelyDependentMovesViaLegals(DependencyDistanceAnalyser.java:1012)
So, there are at least 3 analysis steps that can't cope with propnets with loops. I wonder if there's any way of ensuring that we don't get propnets with loops (or, if we do, somehow modifying it afterwards to remove to loops) or whether there's some GDL that can't be converted to a loop-free propnet. Repurposing this bug...
Ah, I've just thought, because hexbad has the 2 different encodings, I don't know which one the ggp-base server will have picked. (The Stanford server uses the good encoding for itself and supplies the players with the difficult one.)
At a minimum we can presumably write an analysis step that performs loop detection (i.e. - results is a boolean indicating the presence of one or more loops), and use that to disable the analysis steps that cannot cope with them.
Yes, we already (partially) do that - see logs above.
19:21:08.090 ? Propnet loop detected - skipping some optimization
19:21:08.659 ? Propnet loops detected - unable to check for duplicate logic amongst components fed from such loops
So we could just extend it to drop the DependencyDistanceAnalyser too. I was just wondering whether we could do even better.
Timed out on meta-gaming & first move according to Bertrand.