1 | sclass AIStrategy_Racer_RandomWithVary<A> extends AIStrategy<A> {
|
2 | // user must set |
3 | F0<A> random; |
4 | F1<A> vary; |
5 | |
6 | // user can set |
7 | int discardEvery = 5000; |
8 | |
9 | // internal |
10 | AIStrategy_RandomWithVariation<A> leader, overtaker; |
11 | new Best<A> leadersBest; |
12 | int roundsSinceChange; |
13 | |
14 | public bool step() { go(); false; }
|
15 | |
16 | AIStrategy_RandomWithVariation newAI() {
|
17 | ret copyFields(this, new AIStrategy_RandomWithVariation, 'random, 'vary); |
18 | } |
19 | |
20 | void go {
|
21 | if (tossACoin()) {
|
22 | if (leader == null) leader = newAI(); |
23 | A guess = leader.guess(); |
24 | if (guess == null) ret; |
25 | double score = submit(guess); |
26 | leader.updateBest(guess, score); |
27 | leadersBest.put(guess, score); |
28 | } else {
|
29 | if (overtaker == null) overtaker = newAI(); |
30 | A guess = overtaker.guess(); |
31 | if (guess == null) ret; |
32 | double score = submit(guess); |
33 | overtaker.updateBest(guess, score); |
34 | if (score > leadersBest.score()) {
|
35 | // displace leader! |
36 | if (verbose) |
37 | print("Overtake at " + formatScore(overtaker.best.score()) + " vs " + formatScore(leadersBest.score()));
|
38 | leader = overtaker; |
39 | overtaker = null; |
40 | roundsSinceChange = 0; |
41 | } else if (roundsSinceChange++ >= discardEvery) {
|
42 | // make new overtaker |
43 | if (verbose) |
44 | print("Discarding overtaker at " + formatScore(overtaker.best.score()) + " vs " + formatScore(leadersBest.score()));
|
45 | overtaker = null; |
46 | roundsSinceChange = 0; |
47 | } |
48 | } |
49 | } |
50 | } |
Began life as a copy of #1018798
download show line numbers debug dex old transpilations
Travelled to 9 computer(s): bhatertpkbcr, cfunsshuasjs, gwrvuhgaqvyk, irmadwmeruwu, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1019838 |
| Snippet name: | AIStrategy_Racer_RandomWithVary - Racer AI based on RandomWithVariation |
| Eternal ID of this version: | #1019838/8 |
| Text MD5: | 7c442f7f67cd508d5452a0ed25a92a51 |
| Author: | stefan |
| Category: | javax / a.i. |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2019-04-14 21:56:09 |
| Source code size: | 1563 bytes / 50 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 583 / 1127 |
| Version history: | 7 change(s) |
| Referenced in: | [show references] |