diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..58da188
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.project b/.project
new file mode 100644
index 0000000..ab441bf
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ neural
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..7341ab1
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/bin/neural/BattlefieldParameterEvaluator$BattleObserver.class b/bin/neural/BattlefieldParameterEvaluator$BattleObserver.class
new file mode 100644
index 0000000..a2df510
Binary files /dev/null and b/bin/neural/BattlefieldParameterEvaluator$BattleObserver.class differ
diff --git a/bin/neural/BattlefieldParameterEvaluator.class b/bin/neural/BattlefieldParameterEvaluator.class
new file mode 100644
index 0000000..49083ad
Binary files /dev/null and b/bin/neural/BattlefieldParameterEvaluator.class differ
diff --git a/src/neural/BattlefieldParameterEvaluator.java b/src/neural/BattlefieldParameterEvaluator.java
new file mode 100644
index 0000000..aa8bd1b
--- /dev/null
+++ b/src/neural/BattlefieldParameterEvaluator.java
@@ -0,0 +1,217 @@
+package neural;
+
+import java.util.Arrays;
+import java.awt.Color;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.util.Random;
+import javax.imageio.ImageIO;
+import org.encog.engine.network.activation.ActivationSigmoid;
+import org.encog.ml.data.basic.BasicMLData;
+import org.encog.neural.data.basic.BasicNeuralDataSet;
+import org.encog.neural.networks.BasicNetwork;
+import org.encog.neural.networks.layers.BasicLayer;
+import org.encog.neural.networks.training.propagation.resilient.ResilientPropagation;
+import robocode.BattleResults;
+import robocode.control.*;
+import robocode.control.events.*;
+
+public class BattlefieldParameterEvaluator {
+ // Minimum allowable battlefield size is 400
+ final static int MAXBATTLEFIELDSIZE = 4000;
+ // Minimum allowable gun cooling rate is 0.1
+ final static double MAXGUNCOOLINGRATE = 10;
+ final static int NUMBATTLEFIELDSIZES = 601;
+ final static int NUMCOOLINGRATES = 501;
+ final static int NUMSAMPLES = 1000;
+ // Number of inputs for the multilayer perceptron (size of the input vectors)
+ final static int NUM_NN_INPUTS = 2;
+ // Number of hidden neurons of the neural network
+ final static int NUM_NN_HIDDEN_UNITS = 50;
+ // Number of epochs for training
+ final static int NUM_TRAINING_EPOCHS = 100000;
+ static int NdxBattle;
+ static double[] FinalScore1;
+ static double[] FinalScore2;
+
+ public static void main(String[] args) {
+double []BattlefieldSize=new double[NUMSAMPLES];
+double []GunCoolingRate=new double[NUMSAMPLES];
+FinalScore1=new double[NUMSAMPLES];
+FinalScore2=new double[NUMSAMPLES];
+Random rng=new Random(15L);
+// Disable log messages from Robocode
+RobocodeEngine.setLogMessagesEnabled(false);
+// Create the RobocodeEngine
+// Run from C:/Robocode
+RobocodeEngine engine = new RobocodeEngine(new java.io.File("C:/Robocode"));
+// Add our own battle listener to the RobocodeEngine
+engine.addBattleListener(new BattleObserver());
+// Show the Robocode battle view
+engine.setVisible(false);
+// Setup the battle specification
+// Setup battle parameters
+int numberOfRounds = 1;
+long inactivityTime = 100;
+int sentryBorderSize = 50;
+boolean hideEnemyNames = false;
+// Get the robots and set up their initial states
+RobotSpecification[] competingRobots =
+engine.getLocalRepository("sample.RamFire,sample.TrackFire");
+RobotSetup[] robotSetups = new RobotSetup[2];
+for(NdxBattle=0;NdxBattle=0) &&
+(MyPixelIndex 1.0) {
+ Value = 1.0;
+ }
+ return Value;
+ }
+
+ //
+ // Our private battle listener for handling the battle event we are interested in.
+ //
+ static class BattleObserver extends BattleAdaptor {
+ // Called when the battle is completed successfully with battle results
+ public void onBattleCompleted(BattleCompletedEvent e) {
+ System.out.println("‐‐ Battle has completed ‐‐");
+ // Get the indexed battle results
+ BattleResults[] results = e.getIndexedResults();
+ // Print out the indexed results with the robot names
+ System.out.println("Battle results:");
+ for (BattleResults result : results) {
+ System.out.println(" " + result.getTeamLeaderName() + ": " + result.getScore());
+ }
+ // Store the scores of the robots
+ BattlefieldParameterEvaluator.FinalScore1[NdxBattle] = results[0].getScore();
+ BattlefieldParameterEvaluator.FinalScore2[NdxBattle] = results[1].getScore();
+ }
+
+ // Called when the game sends out an information message during the battle
+ public void onBattleMessage(BattleMessageEvent e) {
+ // System.out.println("Msg> " + e.getMessage());
+ }
+
+ // Called when the game sends out an error message during the battle
+ public void onBattleError(BattleErrorEvent e) {
+ System.out.println("Err> " + e.getError());
+ }
+ }
+}