Search in sources :

Example 6 with EvoAlg

use of evodef.EvoAlg in project SimpleAsteroids by ljialin.

the class TestSimpleGA method main.

public static void main(String[] args) {
    NoisySolutionEvaluator evaluator = new EvalMaxM(10, 2, 1.0);
    EvoAlg evoAlg = new SimpleGA().setPopulationSize(100);
    int[] solution = evoAlg.runTrial(evaluator, 10000);
    System.out.println(Arrays.toString(solution));
}
Also used : EvalMaxM(evodef.EvalMaxM) EvoAlg(evodef.EvoAlg) NoisySolutionEvaluator(evodef.NoisySolutionEvaluator)

Example 7 with EvoAlg

use of evodef.EvoAlg in project SimpleAsteroids by ljialin.

the class AsteroidsTest method runOnce.

public static double runOnce() throws Exception {
    // make an agent to test
    // AsteroidsLinkState.defaultStartLevel = 1;
    AsteroidsLinkState stateObs = new AsteroidsLinkState();
    System.out.println(stateObs.getGameScore());
    System.out.println(stateObs.copy().getGameScore());
    ElapsedCpuTimer timer = new ElapsedCpuTimer();
    AbstractPlayer player;
    controllers.singlePlayer.sampleOLMCTS.Agent olmcts = new controllers.singlePlayer.sampleOLMCTS.Agent(stateObs, timer);
    controllers.singlePlayer.discountOLMCTS.Agent discountOlmcts = new controllers.singlePlayer.discountOLMCTS.Agent(stateObs, timer);
    controllers.singlePlayer.nestedMC.Agent nestedMC = new controllers.singlePlayer.nestedMC.Agent(stateObs, timer);
    int depth = 100;
    int ticks = 2000;
    controllers.singlePlayer.discountOLMCTS.SingleTreeNode.DEFAULT_ROLLOUT_DEPTH = depth;
    SingleTreeNode.scoreDiscountFactor = 0.999;
    SingleTreeNode.useScoreDiscount = true;
    controllers.singlePlayer.discountOLMCTS.SingleTreeNode.DEFAULT_ROLLOUT_DEPTH = depth;
    controllers.singlePlayer.discountOLMCTS.Agent.MCTS_ITERATIONS = ticks / depth;
    // player = olmcts;
    player = discountOlmcts;
    int nResamples = 1;
    EvoAlg evoAlg = new SimpleRMHC(nResamples);
    int nEvals = 20;
    double kExplore = 10;
    int nNeighbours = 100;
    // evoAlg = new NTupleBanditEA(kExplore, nNeighbours);
    // evoAlg = new SlidingMeanEDA();
    DefaultMutator.totalRandomChaosMutation = true;
    Agent.useShiftBuffer = true;
    controllers.singlePlayer.ea.Agent.SEQUENCE_LENGTH = ticks / nEvals;
    player = new controllers.singlePlayer.ea.Agent(stateObs, timer, evoAlg, nEvals);
    // player = new controllers.singlePlayer.ea.Agent(stateObs, timer);
    // nestedMC.maxRolloutLength = 5;
    // nestedMC.nestDepth = 5;
    // player = nestedMC;
    // in milliseconds
    int thinkingTime = 10;
    int delay = 20;
    // player = new controllers.singlePlayer.sampleRandom.Agent(stateObs, timer);
    // check that we can play the game
    Random random = new Random();
    // this is how many steps we'll take in the actual game ...
    int nSteps = 1000;
    ElapsedTimer t = new ElapsedTimer();
    View view = new View(stateObs.state);
    // set view to null to run fast with no visuals
    view = null;
    JEasyFrame frame;
    if (view != null) {
        frame = new JEasyFrame(view, "Asteroids");
    }
    for (int i = 0; i < nSteps && !stateObs.isGameOver(); i++) {
        timer = new ElapsedCpuTimer();
        timer.setMaxTimeMillis(thinkingTime);
        Types.ACTIONS action = player.act(stateObs.copy(), timer);
        // System.out.println("Selected: " + action); //  + "\t " + action.ordinal());
        stateObs.advance(action);
        // System.out.println(stateObs.getGameScore());
        if (view != null) {
            view.repaint();
            Thread.sleep(delay);
        }
    }
    System.out.println(stateObs.getGameScore());
    System.out.println(stateObs.isGameOver());
    System.out.println(t);
    System.out.println("Agent of type: " + player.getClass().getSimpleName());
    return stateObs.getGameScore();
}
Also used : Agent(controllers.singlePlayer.ea.Agent) Types(ontology.Types) Agent(controllers.singlePlayer.ea.Agent) View(asteroids.View) EvoAlg(evodef.EvoAlg) SimpleRMHC(ga.SimpleRMHC) Random(java.util.Random) JEasyFrame(utilities.JEasyFrame) AbstractPlayer(core.player.AbstractPlayer) ElapsedTimer(utilities.ElapsedTimer) ElapsedCpuTimer(tools.ElapsedCpuTimer)

Example 8 with EvoAlg

use of evodef.EvoAlg in project SimpleAsteroids by ljialin.

the class Game method getEvoAgent.

Controller getEvoAgent() {
    // 
    // todo Add in the code t make this
    int nResamples = 1;
    DefaultMutator mutator = new DefaultMutator(null);
    // setting to true may give best performance
    mutator.totalRandomChaosMutation = true;
    SimpleRMHC simpleRMHC = new SimpleRMHC();
    simpleRMHC.setSamplingRate(nResamples);
    simpleRMHC.setMutator(mutator);
    EvoAlg evoAlg = simpleRMHC;
    // evoAlg = new SlidingMeanEDA();
    int nEvals = 20;
    int seqLength = 100;
    EvoAgent evoAgent = new EvoAgent().setEvoAlg(evoAlg, nEvals).setSequenceLength(seqLength);
    evoAgent.setUseShiftBuffer(true);
    evoAgent.setVisual();
    return new EvoAgentAdapter().setAgent(evoAgent);
}
Also used : SimpleRMHC(ga.SimpleRMHC) DefaultMutator(evodef.DefaultMutator) EvoAgent(planetwar.EvoAgent) EvoAlg(evodef.EvoAlg)

Example 9 with EvoAlg

use of evodef.EvoAlg in project SimpleAsteroids by ljialin.

the class GameRunner method getEvoAgent.

public static EvoAgent getEvoAgent() {
    int nResamples = 1;
    EvoAlg evoAlg = new SimpleRMHC(nResamples);
    // evoAlg = new SlidingMeanEDA();
    evoAlg = new NTupleBanditEA();
    int nEvals = 20;
    int seqLength = 100;
    EvoAgent evoAgent = new EvoAgent().setEvoAlg(evoAlg, nEvals).setSequenceLength(seqLength);
    evoAgent.setUseShiftBuffer(true);
    return evoAgent;
}
Also used : SimpleRMHC(ga.SimpleRMHC) EvoAgent(planetwar.EvoAgent) NTupleBanditEA(ntuple.NTupleBanditEA) EvoAlg(evodef.EvoAlg)

Example 10 with EvoAlg

use of evodef.EvoAlg in project SimpleAsteroids by ljialin.

the class PlanetWarsLinkTest method runTest.

public static double runTest() throws Exception {
    PlanetWarsLinkState state = new PlanetWarsLinkState();
    // state.state.
    GameState.includeBuffersInScore = true;
    PlanetWarView view = null;
    view = new PlanetWarView((GameState) state.state);
    // JEasyFrame frame = new JEasyFrame(view, "Simple Planet Wars");
    // KeyController controller = new KeyController();
    // frame.addKeyListener(controller);
    // now play
    Random random = new Random();
    AbstractMultiPlayer player1, player2;
    GameActionSpaceAdapterMulti.visual = false;
    // DefaultMutator.totalRandomChaosMutation = true;
    // controllers.singlePlayer.sampleOLMCTS.Agent olmcts =
    // new controllers.singlePlayer.sampleOLMCTS.Agent(linkState, timer);
    int idPlayer1 = 0;
    int idPlayer2 = 1;
    ElapsedCpuTimer timer = new ElapsedCpuTimer();
    player2 = new controllers.multiPlayer.discountOLMCTS.Agent(state.copy(), timer, idPlayer2);
    // player2 = new controllers.multiPlayer.sampleOLMCTS.Agent(state.copy(), timer, idPlayer2);
    // try the evolutionary players
    int nResamples = 1;
    EvoAlg evoAlg = new SimpleRMHC(nResamples);
    int nEvals = 133;
    // evoAlg = new SlidingMeanEDA().setHistoryLength(20);
    Agent evoAgent = new controllers.multiPlayer.ea.Agent(state.copy(), timer, evoAlg, idPlayer1, nEvals);
    evoAgent.sequenceLength = 15;
    evoAgent.setUseShiftBuffer(true);
    player1 = evoAgent;
    // player2 = new controllers.multiPlayer.ea.Agent(linkState, timer, evoAlg2, idPlayer2, nEvals);
    // player2 = new controllers.multiPlayer.ea.Agent(linkState, timer, new SimpleRMHC(nResamples), idPlayer2, nEvals);
    // player1 = new controllers.multiPlayer.smlrand.Agent();
    // player2 = new controllers.multiPlayer.smlrand.Agent();
    // player2 = new controllers.multiPlayer.doNothing.Agent(state, timer, 1);
    // EvoAlg evoAlg2 = new SimpleRMHC(2);
    // player1 = new controllers.multiPlayer.ea.Agent(linkState, timer, evoAlg2, idPlayer1, nEvals);
    // player1 =
    // in milliseconds
    int thinkingTime = 50;
    int delay = 200;
    // player = new controllers.singlePlayer.sampleRandom.Agent(stateObs, timer);
    // check that we can play the game
    int nSteps = 200;
    view = null;
    for (int i = 0; i < nSteps; i++) {
        timer = new ElapsedCpuTimer();
        timer.setMaxTimeMillis(thinkingTime);
        Types.ACTIONS action1 = player1.act(state.copy(), timer);
        timer = new ElapsedCpuTimer();
        timer.setMaxTimeMillis(thinkingTime);
        Types.ACTIONS action2 = player2.act(state.copy(), timer);
        // §action2 =
        state.advance(new Types.ACTIONS[] { action1, action2 });
        if (view != null) {
            view.update((GameState) state.state);
            Thread.sleep(delay);
        }
    // System.out.println("Game tick: " + i);
    }
    System.out.println("Game Score: " + state.getGameScore());
    // System.out.println("MCTS Evals: " + TreeNode);
    return state.getGameScore() > 0 ? 1 : 0;
}
Also used : PlanetWarView(planetwar.PlanetWarView) Agent(controllers.multiPlayer.ea.Agent) Types(ontology.Types) AbstractMultiPlayer(core.player.AbstractMultiPlayer) GameState(planetwar.GameState) EvoAlg(evodef.EvoAlg) Random(java.util.Random) SimpleRMHC(ga.SimpleRMHC) ElapsedCpuTimer(tools.ElapsedCpuTimer)

Aggregations

EvoAlg (evodef.EvoAlg)23 SimpleRMHC (ga.SimpleRMHC)17 Random (java.util.Random)9 NTupleBanditEA (ntuple.NTupleBanditEA)9 ElapsedCpuTimer (tools.ElapsedCpuTimer)9 Types (ontology.Types)7 ElapsedTimer (utilities.ElapsedTimer)7 SlidingMeanEDA (ntuple.SlidingMeanEDA)6 AbstractMultiPlayer (core.player.AbstractMultiPlayer)5 JEasyFrame (utilities.JEasyFrame)5 Agent (controllers.singlePlayer.ea.Agent)4 AbstractPlayer (core.player.AbstractPlayer)4 StatSummary (utilities.StatSummary)4 StateObservation (core.game.StateObservation)3 SimpleMaxGame (altgame.SimpleMaxGame)2 BattleView (battle.BattleView)2 Agent (controllers.multiPlayer.ea.Agent)2 StateObservationMulti (core.game.StateObservationMulti)2 AnnotatedFitnessSpace (evodef.AnnotatedFitnessSpace)2 CompactSlidingGA (ntuple.CompactSlidingGA)2