diff --git a/.gitignore b/.gitignore index e7c41a4..2ec9d43 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* +/bin/ diff --git a/hello_strange.png b/hello_strange.png new file mode 100644 index 0000000..5b239dc --- /dev/null +++ b/hello_strange.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bc1b195bc9fed7040cd1374188a930d2132bf8fd2f3cd2e78e4780efb397a90 +size 11973 diff --git a/src/neural/BattlefieldParameterEvaluator.java b/src/neural/BattlefieldParameterEvaluator.java index 622e59a..0e73aa6 100644 --- a/src/neural/BattlefieldParameterEvaluator.java +++ b/src/neural/BattlefieldParameterEvaluator.java @@ -41,6 +41,8 @@ public class BattlefieldParameterEvaluator { final static int NUM_TRAINING_EPOCHS = 100000; // The requested error in nn training final static double NN_TRAINING_ERROR = 0.01; + // Maximum robot score obtained - used for scaling <0,1> + final static int BATTLE_MAX_SCORE = 250; static int NdxBattle; static double[] FinalScore1; @@ -72,8 +74,10 @@ public class BattlefieldParameterEvaluator { RobotSetup[] robotSetups = new RobotSetup[2]; for (NdxBattle = 0; NdxBattle < NUMSAMPLES; NdxBattle++) { // Choose the battlefield size and gun cooling rate   - BattlefieldSize[NdxBattle] = rangedRand(rng, MINBATTLEFIELDSIZE, MAXBATTLEFIELDSIZE); - GunCoolingRate[NdxBattle] = rangedRand(rng, MINGUNCOOLINGRATE, MAXGUNCOOLINGRATE); +// BattlefieldSize[NdxBattle] = rangedRand(rng, MINBATTLEFIELDSIZE, MAXBATTLEFIELDSIZE); +// GunCoolingRate[NdxBattle] = rangedRand(rng, MINGUNCOOLINGRATE, MAXGUNCOOLINGRATE); + BattlefieldSize[NdxBattle] = MAXBATTLEFIELDSIZE * (0.1 + 0.9 * rng.nextDouble()); + GunCoolingRate[NdxBattle] = MAXGUNCOOLINGRATE * (0.1 + 0.9 * rng.nextDouble()); // Create the battlefield BattlefieldSpecification battlefield = new BattlefieldSpecification((int) BattlefieldSize[NdxBattle], (int) BattlefieldSize[NdxBattle]); @@ -101,7 +105,7 @@ public class BattlefieldParameterEvaluator { // the interval [0,1]   RawInputs[NdxSample][0] = BattlefieldSize[NdxSample] / MAXBATTLEFIELDSIZE; RawInputs[NdxSample][1] = GunCoolingRate[NdxSample] / MAXGUNCOOLINGRATE; - RawOutputs[NdxSample][0] = FinalScore1[NdxSample] / 250; + RawOutputs[NdxSample][0] = FinalScore1[NdxSample] / BATTLE_MAX_SCORE; } BasicMLDataSet MyDataSet = new BasicMLDataSet(RawInputs, RawOutputs); @@ -144,12 +148,10 @@ public class BattlefieldParameterEvaluator { // Simulate the neural network with the test samples and fill a matrix for (int NdxBattleSize = 0; NdxBattleSize < NUMBATTLEFIELDSIZES; NdxBattleSize++) { for (int NdxCooling = 0; NdxCooling < NUMCOOLINGRATES; NdxCooling++) { - // TODO INSERT SOMETHING HERE + // Get the output data using teached neural network BasicMLData input = new BasicMLData(MyTestData[NdxCooling + NdxBattleSize * NUMCOOLINGRATES]); final MLData output = network.compute(input.clone()); double MyResult = output.getData()[0]; - // double MyResult = 0.0; // MyTestData[NdxCooling+NdxBattleSize*NUMCOOLINGRATES]; - // double MyResult = MyTestData[NdxCooling + NdxBattleSize * NUMCOOLINGRATES]; MyValue = ClipColor(MyResult); MyColor = new Color((float) MyValue, (float) MyValue, (float) MyValue); OutputRGBint[NdxCooling + NdxBattleSize * NUMCOOLINGRATES] = MyColor.getRGB(); @@ -158,7 +160,7 @@ public class BattlefieldParameterEvaluator { System.out.println("Testing completed."); // Plot the training samples for (int NdxSample = 0; NdxSample < NUMSAMPLES; NdxSample++) { - MyValue = ClipColor(FinalScore1[NdxSample] / 250); + MyValue = ClipColor(FinalScore1[NdxSample] / BATTLE_MAX_SCORE); MyColor = new Color((float) MyValue, (float) MyValue, (float) MyValue); int MyPixelIndex = (int) (Math.round(NUMCOOLINGRATES * ((GunCoolingRate[NdxSample] / MAXGUNCOOLINGRATE) - 0.1) / 0.9) + Math .round(NUMBATTLEFIELDSIZES * ((BattlefieldSize[NdxSample] / MAXBATTLEFIELDSIZE) - 0.1) / 0.9)