diff --git a/SimpleNoJumpEveryVisitMCA.png b/SimpleNoJumpEveryVisitMCA.png deleted file mode 100644 index 58c718d..0000000 Binary files a/SimpleNoJumpEveryVisitMCA.png and /dev/null differ diff --git a/convResAdvScale.png b/convResAdvScale.png deleted file mode 100644 index 7cce6c5..0000000 Binary files a/convResAdvScale.png and /dev/null differ diff --git a/convResultAdv.png b/convResultAdv.png deleted file mode 100644 index 0fe903a..0000000 Binary files a/convResultAdv.png and /dev/null differ diff --git a/convResultSimple.png b/convResultSimple.png deleted file mode 100644 index dc1e2e4..0000000 Binary files a/convResultSimple.png and /dev/null differ diff --git a/convergeSimpleMCEveryNew.txt b/convergeSimpleMCEveryNew.txt deleted file mode 100644 index 87b6ced..0000000 --- a/convergeSimpleMCEveryNew.txt +++ /dev/null @@ -1,21 +0,0 @@ -#Every visit MC; just distance -0.05,36,29147,7945,707,12,595,68,4913,8034,300,804,1731,715,64899,423,703,2685,173,468,8220,4182,80071,1418,17769,216,3859,44746,218,6794,2,4182,35,258,9015,2581,62,39,17439,7346,1000,56974,21,71655,20301,4834,18144,18393,613,5,39,609,586,6,28871,1021,18051,457,13629,59217,10278,173,24407,1373,48513,31749,190,25159,130,609,609,55,924,77,4379,72708,202,2096,25965,14394,1230,2833,1791,25512,230,16227,16090,3781,76,537,229,307,2651,2,4212,3,38602,159722,703,45887,31 -0.1,742,1269,9139,6764,782,25068,539,284,678,9327,2166,3469,3057,2971,1335,64551,22900,35519,62,29,15732,906,16,17,960,190,32183,2,40863,3324,37,6610,97,1578,12006,1784,3388,54,576,64,404,1638,95916,108,281,26288,1825,28,89,2359,49218,853,17821,10514,283,44669,256,6,12708,13085,3466,56628,8513,870,15,53906,20,1533,2164,1458,538,226,99,163,16,31398,76,2075,1474,36605,434,120,3744,91,2885,112,3285,69283,21176,3029,10113,2691,213,729,76694,9,1304,2,30950,74 -0.15,1085,42379,2065,4847,124,27681,2257,1617,4597,1033,39095,254,120,1343,2007,1907,2992,15207,95,7835,495,16224,362,97541,141,8692,32124,1302,1768,10853,480,2,2099,25,1889,66,67,11874,290,77899,7253,31,1190,72,95,141,7732,32,26,16,5,181,361,12321,22,1631,7180,18,40,310,95444,7146,102,5210,6,19593,434,3581,3120,35,14,980,19,3816,677,1494,337,68,2764,53854,147,28,732,23755,270,4818,15,3046,1557,117,13049,323,26709,2036,431,85,113,179178,13782,705 -0.2,11,119,8993,10,949,1495,20497,1325,5672,39392,35828,233,56,2707,456,12,3630,112,257,936,108,618,2353,52,2563,1632,10094,12336,24,1390,11,1130,4381,78,14658,1228,514,4706,215,15898,100,639,110,723,340,21,25,836,4,83,922,90321,22,747,11599,88,13,11,2101,43,642,1272,1742,169,614,832,681,41884,17,3159,392,9,178,2183,3271,10,378,69,35741,293,63,2733,3825,745,9,3151,2934,588,214,30150,1138,1304,98,566,1497,4474,24,944,1593,563 -0.25,21,222,230,10720,108,2978,2377,1398,3310,10274,27275,1674,22,720,293,52,863,16756,76,520,28985,247,195,5507,97,5916,96,11,1346,77,157,8,14,501,40,1502,32,58,561,8,327,74,91,20,5444,914,4278,30,27,399,2186,4,75,1149,2386,22,3415,3918,56,438,8,160,451,18150,520,329,33850,16,625,128,463,73,147,33074,2545,198,1210,637,1143,180,824,171,293,16,9592,699,8,929,664,1637,2524,18383,256,31,540,233,265,998,9667,685 -0.3,15,2847,8254,2332,2921,62,61322,1967,2375,4488,1142,1502,83,5177,519,128,7727,58,25,552,365,119,141,11859,7,9742,8,754,415,1534,641,8,498,12364,38,1062,75,336,3247,8,540,683,13,396,9242,194,24,935,62,83,611,4,5,5047,3134,243,1647,3294,96,257,9,1777,38112,6059,118,1702,4305,48,25907,113,715,8233,797,1721,147,39342,1111,26,11991,516,3292,24,126,1012,3290,305,5371,145,11939,65779,9057,3241,76,6924,2896,266,4380,902,634,577 -0.35,68,47,70,1307,4155,1031,15740,175,829,920,2649,599,214,494,544,5026,1647,2007,48,182,294,670,156,613,20,1161,250,1710,4153,270,78,81,17,81,4816,5955,87,428,189,8,235,225,3151,7884,205,1322,25,31,787,15,3728,4,5,1314,3193,454,1175,167,176,7596,49,74,3110,389,385,2940,317,17,3846,94,99,202,88,22,1957,749,2767,57,334,326,27205,1928,14,285,3293,43,6288,43,643,36225,58,2835,1126,8335,1101,1874,2916,391,2455,13320 -0.40,430,2482,4292,2558,7285,165,295,845,3480,43,2391,3,269,448,886,7400,6280,704,61,178,2706,4046,1089,139,947,855,46,415,1668,6922,235,22,5447,19,401,706,67,5379,73,527,178,3307,1254,996,276,4191,760,554,1140,15987,175,4,22,7793,4102,129,583,1056,228,27992,615,51,32,259,1508,867,2,1314,170,1135,390,3982,69,1228,1556,324,288,4165,504,504,173,313,85,2101,390,62,26544,468,793,1533,63,1838,167,3753,4042,402,6142,21336,841,72251 -0.45,684,893,1075,3710,10131,9449,999,337,136,3812,80,3,3113,132,11540,277,639,315,74,55,2061,53,23,3426,513,4798,60,37,7000,76680,2757,22,1241,87,1207,4540,49,4373,48,10391,561,1698,214,507,382,251,245,998,142,1680,290,4,21,390,13326,209,916,2873,108,38,417,16,13,503,247,4716,8,23,4030,1862,104,681,114,40,638,647,3693,22959,90,249,85,485,1448,346,1575,524,429,3365,489,1124,177,3188,188,1880,110,263,108,34,408,25180 -0.50,42,16830,1941,220,3775,815,2031,498,3436,2897,1061,3,2619,192,1034,672,14834,214,125,3387,1480,345,32,4599,682,350,45,572,863,45168,66,186,231,4381,596,1034,723,3776,10695,110,3889,975,809,86,579,16,40,228,180,259,54,4,1241,649,22145,372,671,1055,2444,1949,61,229,17,2392,266,1586,1820,24,2182,3007,124,270,233,46,1526,295,1276,996,352,1225,17,341,271,512,3197,474,3692,8,888,581,1091,71,4663,87,4268,1127,3638,1529,661,418 -0.55,3815,777,987,185,27,1230,1594,2210,312,303,15,2,2256,3099,7131,134,3533,158,5467,1954,3945,160,281,1095,216,676,60,6476,429,267,1781,966,1156,2818,3082,16615,233,3614,95,1157,2991,1286,78,1461,783,16,40,1439,5110,22,322,4,878,5,111,1464,249,6612,631,10027,145,1804,1304,2465,992,196,32,13,204,1639,255,1151,409,6002,331,585,1023,2579,1625,730,16,249,929,265,782,327,3763,142,24,4778,130,27170,653,30,64,2757,7624,10265,242,782 -0.60,72,219,1014,1553,13880,289,3735,1411,4136,112,3301,2,4284,1165,7631,675,1641,3996,728,1337,127,33,2489,3893,429,171,5,3243,128,5598,1049,1360,831,862,178,463,113,86,3557,1211,40,1309,185,34750,75,15,28,6889,743,49,15,4,582,3927,61,83,841,1639,4,984,195,2585,50,2949,2506,7500,33,14,901,2253,267,1783,254,2056,110,225,4108,3027,255,1567,24,905,91,3740,500,2585,2344,2102,160,468,258,3133,3619,5072,2158,2844,2325,343,18,2851 -0.65,259,481,1669,5179,15,2300,180,118,200,5180,238,2,15,1424,6185,1967,149,291,9749,666,1616,680,3145,96,650,5056,1247,1082,310,374,1614,937,563,322,1963,161,22,38,78,821,206,1006,390,319,1613,1992,1230,535,96,320,17,4,3067,6450,552,991,17929,3373,28,204,47,143,73,632,2433,2131,78,14,412,3296,782,4784,1067,629,2132,4082,9844,6593,2112,412,401,19872,1336,368,2487,319,814,27,170,1362,100,1678,127,1800,6572,5779,693,1565,2088,798 -0.70,1007,185,1973,2285,15,28,406,1468,382,1237,11692,2,55,1204,172,1042,3029,583,47,1430,2597,3431,2986,3363,4073,355,21980,1160,916,6140,893,535,13,418,578,535,3,47,3353,9003,816,3294,393,2578,2874,4252,1128,786,381,207,10,4,6397,895,2210,4982,763,54,11,1537,2,712,26,8748,123,3861,65,958,811,62,116,429,409,394,1029,1611,7386,298,1518,1322,3053,1359,5281,385,3349,4487,1939,5949,533,1506,3234,1492,2744,4,2985,7713,1492,3836,7254,342 -0.75,6523,317,3968,233,15,80,2863,4066,16,3262,883,704,117,5443,2409,59,3848,3450,65,87,3764,1652,62,1646,2864,512,1226,1816,3587,378,4243,1837,10,5908,16119,4734,5,328,2639,897,353,6208,4281,1671,1520,610,451,399,3650,2542,10,3,23,66,245,2607,58,470,4,1989,2,60,3256,3603,4903,568,743,251,14701,2671,4777,698,176,26,1302,787,3275,2738,1335,2634,8791,5806,2222,13223,311,4218,8479,5535,8898,189,2425,1919,2482,4,1536,3469,2201,345,390,5228 -0.80,83,2976,2164,17000,16090,4483,13563,987,14,505,282,3317,2053,387,12252,247,3519,4557,378,71,756,910,1921,2874,1862,1829,731,54,234,715,682,10015,530,633,3911,4709,265,116,104,9814,1312,601,61,19856,1102,595,10881,3728,3633,3388,9,3,811,1999,4075,2106,1888,2582,4,12564,154,383,15,2438,436,824,947,6212,3273,73,772,49,2818,11875,4322,4457,3292,3180,170,55,4707,100,5989,1835,4546,5414,808,65,7,811,1783,19664,219,4,248,1953,996,32118,7,257 -0.85,2075,497,11265,1960,3624,34,366,957,14,2817,4413,18269,5069,2370,2272,12272,330,2063,4130,6284,3628,9,1938,613,15316,3474,5446,100,3894,2899,67,892,4003,348,135,1151,5953,6105,6149,5830,2078,1831,4313,626,269,877,3822,19,1106,139,9,3,18364,1119,8355,22487,3265,1415,5,13005,781,27358,728,1977,616,6789,341,7050,2368,24,1281,1913,15870,1985,619,7965,5509,538,620,2012,2022,10890,20395,1500,12,6141,8327,107,7,8407,109,45,100,4,874,632,2101,396,7,5154 -0.90,902,3427,5470,42978,9193,2969,5514,2288,91,2048,1085,982,16,4210,3702,103,14119,5531,1076,2111,1360,16,10217,4417,544,607,1414,5350,1027,9041,3697,12502,43926,105,2941,31782,995,15661,773,338,153,19508,11985,33683,3006,4043,2942,2541,3817,2281,8561,6771,2305,37689,9198,19,899,13884,1818,12144,319,416,250,11815,44066,4825,783,4261,286,162,13125,138,3183,627,609,1736,1554,989,7559,3504,6641,3354,47,972,11,14096,278,15664,7,15571,389,286,1367,4,2434,25,297,3388,7,2743 -0.95,493,6960,769,1563,660,4208,778,8917,98,72,21014,100,6872,7998,26519,154,4073,178,11475,3714,184,9,7250,2416,1161,38061,85,3569,25036,7121,30470,300,270,8458,668,5242,610,21,2330,15540,3238,2429,8334,103,3945,6469,166,581,27569,8,3,7695,4772,212,4868,15107,11469,132,2466,1252,4425,21010,6871,2827,155,4470,59064,5478,504,38380,5933,18,4313,4131,26218,5916,1479,4514,14507,64879,4715,2885,11,7370,2070,4241,7,11518,6675,3896,6503,26757,38,15158,1246,63,7,86,18039,5131 -1.00,5753,31823,1131,5008,814,2498,3289,4148,1189,3345,455,16054,1727,4275,8701,177,354,21971,2838,2195,9,7887,682,34,1657,23710,296,29250,5562,79,7168,176,369,9651,140,19561,4518,6518,3711,20169,4594,3547,809,14814,220,774,16,2280,3,318,1921,6150,254,8587,7848,23995,2323,7108,2348,58820,3945,62059,984,10839,10909,28613,8046,20249,12086,4325,9060,176,86,47797,1107,119,12405,8481,12,4521,683,92,419,1714,584,596,102,47669,23214,665,98,8,486,2610,4602,98,3954,11155,3,14700 diff --git a/src/main/java/core/RNG.java b/src/main/java/core/RNG.java index b0708af..c573c55 100644 --- a/src/main/java/core/RNG.java +++ b/src/main/java/core/RNG.java @@ -15,18 +15,26 @@ import java.util.Random; */ public class RNG { private static Random rng; + private static Random rngEnv; private static int seed = 123; static { rng = new Random(); - rng.setSeed(seed); + setSeed(seed, true); } public static Random getRandom() { return rng; } - public static void setSeed(int seed){ + public static Random getEnvRandom() { + return rngEnv; + } + + public static void setSeed(int seed, boolean setEnvSeed) { RNG.seed = seed; rng.setSeed(seed); + if(setEnvSeed) { + rngEnv.setSeed(seed); + } } } diff --git a/src/main/java/core/algo/EpisodicLearning.java b/src/main/java/core/algo/EpisodicLearning.java index 5466a7a..8a5dffe 100644 --- a/src/main/java/core/algo/EpisodicLearning.java +++ b/src/main/java/core/algo/EpisodicLearning.java @@ -80,18 +80,6 @@ public abstract class EpisodicLearning extends Learning imple private void dispatchEpisodeStart(){ ++currentEpisode; - /* - 2f 0.02 => 100 - 1.5f 0.02 => 75 - 1.4f 0.02 => fail - 1.5f 0.1 => 16 ! - */ -// if(this.policy instanceof EpsilonGreedyPolicy){ -// float ep = 2f/(float)currentEpisode; -// if(ep < 0.02) ep = 0; -// ((EpsilonGreedyPolicy) this.policy).setEpsilon(ep); -// System.out.println(ep); -// } episodesToLearn.decrementAndGet(); for(LearningListener l: learningListeners){ l.onEpisodeStart(); diff --git a/src/main/java/core/algo/mc/MonteCarloControlFirstVisitEGreedy.java b/src/main/java/core/algo/mc/MonteCarloControlEGreedy.java similarity index 90% rename from src/main/java/core/algo/mc/MonteCarloControlFirstVisitEGreedy.java rename to src/main/java/core/algo/mc/MonteCarloControlEGreedy.java index 3618eb0..92aa994 100644 --- a/src/main/java/core/algo/mc/MonteCarloControlFirstVisitEGreedy.java +++ b/src/main/java/core/algo/mc/MonteCarloControlEGreedy.java @@ -19,7 +19,7 @@ import java.util.*; * Change to Every-Visit by setting flag "useEveryVisit" in the constructor to true. * @param */ -public class MonteCarloControlFirstVisitEGreedy extends EpisodicLearning { +public class MonteCarloControlEGreedy extends EpisodicLearning { private Map, Double> returnSum; private Map, Integer> returnCount; @@ -31,7 +31,7 @@ public class MonteCarloControlFirstVisitEGreedy extends Episodic private Policy greedyPolicy = new GreedyPolicy<>(); - public MonteCarloControlFirstVisitEGreedy(Environment environment, DiscreteActionSpace actionSpace, float discountFactor, float epsilon, int delay, boolean useEveryVisit) { + public MonteCarloControlEGreedy(Environment environment, DiscreteActionSpace actionSpace, float discountFactor, float epsilon, int delay, boolean useEveryVisit) { super(environment, actionSpace, discountFactor, delay); isEveryVisit = useEveryVisit; // t @@ -42,11 +42,11 @@ public class MonteCarloControlFirstVisitEGreedy extends Episodic returnCount = new HashMap<>(); } - public MonteCarloControlFirstVisitEGreedy(Environment environment, DiscreteActionSpace actionSpace, float discountFactor, float epsilon, int delay) { + public MonteCarloControlEGreedy(Environment environment, DiscreteActionSpace actionSpace, float discountFactor, float epsilon, int delay) { this(environment, actionSpace, discountFactor, epsilon, delay, false); } - public MonteCarloControlFirstVisitEGreedy(Environment environment, DiscreteActionSpace actionSpace, int delay) { + public MonteCarloControlEGreedy(Environment environment, DiscreteActionSpace actionSpace, int delay) { this(environment, actionSpace, LearningConfig.DEFAULT_DISCOUNT_FACTOR, LearningConfig.DEFAULT_EPSILON, delay); } diff --git a/src/main/java/core/algo/td/QLearningOffPolicyTDControl.java b/src/main/java/core/algo/td/QLearningOffPolicyTDControl.java index 69919fa..5b78818 100644 --- a/src/main/java/core/algo/td/QLearningOffPolicyTDControl.java +++ b/src/main/java/core/algo/td/QLearningOffPolicyTDControl.java @@ -40,9 +40,9 @@ public class QLearningOffPolicyTDControl extends EpisodicLearnin while(envResult == null || !envResult.isDone()) { actionValues = stateActionTable.getActionValues(state); A action; - if(currentEpisode % 2 == 0){ + if(currentEpisode % 2 == 0) { action = greedyPolicy.chooseAction(actionValues); - }else{ + } else { action = policy.chooseAction(actionValues); } if(converged) return; @@ -51,7 +51,7 @@ public class QLearningOffPolicyTDControl extends EpisodicLearnin double reward = envResult.getReward(); State nextState = envResult.getState(); sumOfRewards += reward; - if(currentEpisode % 2 == 0){ + if(currentEpisode % 2 == 0) { state = nextState; dispatchStepEnd(); continue; diff --git a/src/main/java/core/controller/RLController.java b/src/main/java/core/controller/RLController.java index 895102a..e4df7e0 100644 --- a/src/main/java/core/controller/RLController.java +++ b/src/main/java/core/controller/RLController.java @@ -7,7 +7,7 @@ import core.ListDiscreteActionSpace; import core.algo.EpisodicLearning; import core.algo.Learning; import core.algo.Method; -import core.algo.mc.MonteCarloControlFirstVisitEGreedy; +import core.algo.mc.MonteCarloControlEGreedy; import core.algo.td.QLearningOffPolicyTDControl; import core.algo.td.SARSA; import core.listener.LearningListener; @@ -49,10 +49,10 @@ public class RLController implements LearningListener { public void start() { switch(method) { case MC_CONTROL_FIRST_VISIT: - learning = new MonteCarloControlFirstVisitEGreedy<>(environment, discreteActionSpace, discountFactor, epsilon, delay); + learning = new MonteCarloControlEGreedy<>(environment, discreteActionSpace, discountFactor, epsilon, delay); break; case MC_CONTROL_EVERY_VISIT: - learning = new MonteCarloControlFirstVisitEGreedy<>(environment, discreteActionSpace, discountFactor, epsilon, delay, true); + learning = new MonteCarloControlEGreedy<>(environment, discreteActionSpace, discountFactor, epsilon, delay, true); break; case SARSA_ON_POLICY_CONTROL: diff --git a/src/main/java/evironment/antGame/Grid.java b/src/main/java/evironment/antGame/Grid.java index dd23e78..28ae0e5 100644 --- a/src/main/java/evironment/antGame/Grid.java +++ b/src/main/java/evironment/antGame/Grid.java @@ -29,7 +29,7 @@ public class Grid { initialGrid[x][y] = new Cell(new Point(x, y), CellType.FREE); } } - start = new Point(RNG.getRandom().nextInt(width), RNG.getRandom().nextInt(height)); + start = new Point(RNG.getEnvRandom().nextInt(width), RNG.getEnvRandom().nextInt(height)); initialGrid[start.x][start.y] = new Cell(new Point(start.x, start.y), CellType.START); spawnNewFood(initialGrid); spawnObstacles(); @@ -58,8 +58,8 @@ public class Grid { Point potFood = new Point(0, 0); CellType potFieldType; while(!foodSpawned) { - potFood.x = RNG.getRandom().nextInt(width); - potFood.y = RNG.getRandom().nextInt(height); + potFood.x = RNG.getEnvRandom().nextInt(width); + potFood.y = RNG.getEnvRandom().nextInt(height); potFieldType = grid[potFood.x][potFood.y].getType(); if(potFieldType != CellType.START && grid[potFood.x][potFood.y].getFood() == 0 && potFieldType != CellType.OBSTACLE) { grid[potFood.x][potFood.y].setFood(1); diff --git a/src/main/java/evironment/blackjack/cards/CardDeck.java b/src/main/java/evironment/blackjack/cards/CardDeck.java index 4878b62..bd47f19 100644 --- a/src/main/java/evironment/blackjack/cards/CardDeck.java +++ b/src/main/java/evironment/blackjack/cards/CardDeck.java @@ -29,6 +29,6 @@ public class CardDeck { nextInt(int bound) returns random int value from (inclusive) 0 and EXCLUSIVE! bound */ - return cards.get(RNG.getRandom().nextInt(cards.size())); + return cards.get(RNG.getEnvRandom().nextInt(cards.size())); } } diff --git a/src/main/java/evironment/jumpingDino/DinoWorldAdvanced.java b/src/main/java/evironment/jumpingDino/DinoWorldAdvanced.java index a2ae420..4f4dab3 100644 --- a/src/main/java/evironment/jumpingDino/DinoWorldAdvanced.java +++ b/src/main/java/evironment/jumpingDino/DinoWorldAdvanced.java @@ -31,7 +31,7 @@ public class DinoWorldAdvanced extends DinoWorld{ protected void spawnNewObstacle() { int dx; int xSpawn; - double ran = RNG.getRandom().nextDouble(); + double ran = RNG.getEnvRandom().nextDouble(); if(ran < 0.25){ dx = -(int) (0.35 * Config.OBSTACLE_SPEED); }else if(ran < 0.5){ @@ -41,7 +41,7 @@ public class DinoWorldAdvanced extends DinoWorld{ } else{ dx = -(int) (3.5 * Config.OBSTACLE_SPEED); } - double ran2 = RNG.getRandom().nextDouble(); + double ran2 = RNG.getEnvRandom().nextDouble(); if(ran2 < 0.25) { // randomly spawning more right outside of the screen xSpawn = Config.FRAME_WIDTH + Config.FRAME_WIDTH + Config.OBSTACLE_SIZE; diff --git a/src/main/java/example/BlackJack.java b/src/main/java/example/BlackJack.java index 551d610..bf8739a 100644 --- a/src/main/java/example/BlackJack.java +++ b/src/main/java/example/BlackJack.java @@ -9,7 +9,7 @@ import evironment.blackjack.PlayerAction; public class BlackJack { public static void main(String[] args) { - RNG.setSeed(55); + RNG.setSeed(55, true); RLController rl = new RLControllerGUI<>( new BlackJackTable(), diff --git a/src/main/java/example/DinoSampling.java b/src/main/java/example/DinoSampling.java index a4ed314..0232127 100644 --- a/src/main/java/example/DinoSampling.java +++ b/src/main/java/example/DinoSampling.java @@ -13,7 +13,6 @@ import java.nio.file.Path; import java.nio.file.StandardOpenOption; public class DinoSampling { - public static final float f =0.05f; public static final String FILE_NAME = "advancedEveryVisit.txt"; public static void main(String[] args) { File file = new File(FILE_NAME); @@ -30,7 +29,7 @@ public class DinoSampling { } for(int i = 1; i <= 100; i++) { System.out.println("seed: " + i * 13); - RNG.setSeed(i * 13); + RNG.setSeed(i * 13, true); RLController rl = new RLController<>( new DinoWorldAdvanced(), diff --git a/src/main/java/example/JumpingDino.java b/src/main/java/example/JumpingDino.java index b738fbb..a6ae661 100644 --- a/src/main/java/example/JumpingDino.java +++ b/src/main/java/example/JumpingDino.java @@ -4,12 +4,11 @@ import core.RNG; import core.algo.Method; import core.controller.RLController; import evironment.jumpingDino.DinoAction; -import evironment.jumpingDino.DinoWorld; import evironment.jumpingDino.DinoWorldAdvanced; public class JumpingDino { public static void main(String[] args) { - RNG.setSeed(29); + RNG.setSeed(29, true); RLController rl = new RLController<>( new DinoWorldAdvanced(), diff --git a/src/main/java/example/Results b/src/main/java/example/Results deleted file mode 100644 index ba42fc7..0000000 --- a/src/main/java/example/Results +++ /dev/null @@ -1,15 +0,0 @@ -Method: -Epsilon = k / currentEpisode -set to 0 if Epsilon < b - -k = 1.5 -b = 0.1 => conv. 16 - -k = 1.5 -b = 0.02 => 75 - -k = 1.4 -b = 0.02 => fail - -k = 2.0 -b = 0.02 => conv. 100 diff --git a/src/main/java/example/RunningAnt.java b/src/main/java/example/RunningAnt.java index d01461c..3dceab1 100644 --- a/src/main/java/example/RunningAnt.java +++ b/src/main/java/example/RunningAnt.java @@ -9,7 +9,7 @@ import evironment.antGame.AntWorld; public class RunningAnt { public static void main(String[] args) { - RNG.setSeed(56); + RNG.setSeed(56, true); RLController rl = new RLControllerGUI<>( new AntWorld(8, 8), @@ -20,7 +20,6 @@ public class RunningAnt { rl.setNrOfEpisodes(10000); rl.setDiscountFactor(0.9f); rl.setEpsilon(0.15f); - rl.start(); } } diff --git a/src/main/java/example/Test.java b/src/main/java/example/Test.java deleted file mode 100644 index c7ee691..0000000 --- a/src/main/java/example/Test.java +++ /dev/null @@ -1,52 +0,0 @@ -package example; - -public class Test { - interface Drawable{ - void draw(); - } - interface State{ - int getInt(); - } - - static class A implements Drawable, State{ - private int k; - public A(int a){ - k = a; - } - @Override - public void draw() { - System.out.println("draw " + k); - } - - @Override - public int getInt() { - System.out.println("getInt" + k); - return k; - } - } - - static class B implements State{ - @Override - public int getInt() { - return 0; - } - } - - public static void main(String[] args) { - State state = new A(24); - State state2 = new B(); - state.getInt(); - - System.out.println(state2 instanceof Drawable); - drawState(state2); - } - - static void drawState(State s){ - if(s instanceof Drawable){ - Drawable d = (Drawable) s; - d.draw(); - }else{ - System.out.println("invalid"); - } - } -} diff --git a/src/test/java/MCFirstVisit.java b/src/test/java/MCFirstVisit.java deleted file mode 100644 index c1cd581..0000000 --- a/src/test/java/MCFirstVisit.java +++ /dev/null @@ -1,30 +0,0 @@ -import core.RNG; -import core.algo.Method; -import core.controller.RLController; -import core.controller.RLControllerGUI; -import evironment.jumpingDino.DinoAction; -import evironment.jumpingDino.DinoWorld; -import org.junit.Test; - -public class MCFirstVisit { - - /** - * Test if the action sequence is deterministic - */ - @Test - public void deterministicActionSequence(){ - RNG.setSeed(55); - - RLController rl = new RLControllerGUI<>( - new DinoWorld(false, false), - Method.MC_CONTROL_FIRST_VISIT, - DinoAction.values()); - - rl.setDelay(10); - rl.setDiscountFactor(1f); - rl.setEpsilon(0.1f); - rl.setLearningRate(0.8f); - rl.setNrOfEpisodes(4000000); - rl.start(); - } -}