public override Move Move(Virus percept) { VirusBoard newState = percept.GetBoardCopy(); if (learn && !prevState.Equals(default(VirusBoard))) Learn(prevState, newState, prevAction); prevState = newState; prevAction = GetMaxExplorationFunctionA(newState); prevReward = 0; return prevAction; }
public override Move Move(Virus percept) { VirusBoard newState = percept.GetBoardCopy(); if (!prevState.Equals(default(VirusBoard))) { ShortTermMemory.Add(new VirusMemory(prevState, prevAction, newState)); } prevState = newState; prevAction = GetMaxExplorationFunctionA(newState); prevReward = 0; return prevAction; }
public override void EndGame(Virus percept) { VirusBoard newState = percept.GetBoardCopy(); double reward = 0; if (percept.Winner == playerNumber) reward = 1; else if (percept.Winner != playerNumber && percept.Winner != 0) reward = -1; ShortTermMemory.Add(new VirusMemory(prevState, prevAction, newState, reward)); prevState = default(VirusBoard); prevAction = default(Move); prevReward = 0; }
public override Move Move(Virus percept) { VirusBoard newState = percept.GetBoardCopy(); if (learn && !prevState.Equals(default(VirusBoard))) { Learn(prevState, newState, prevAction); } prevState = newState; prevAction = GetMaxExplorationFunctionA(newState); prevReward = 0; return(prevAction); }
public override Move Move(Virus percept) { VirusBoard newState = percept.GetBoardCopy(); if (!prevState.Equals(default(VirusBoard))) { ShortTermMemory.Add(new VirusMemory(prevState, prevAction, newState)); } prevState = newState; prevAction = GetMaxExplorationFunctionA(newState); prevReward = 0; return(prevAction); }
private Move GetAnnMove(Virus percept) { VirusBoard currentState = percept.GetBoardCopy(); Move[] actions = currentState.GetPossibleMoves(playerNumber); Move move = OutputsToMove(network.Compute(BoardToInput(currentState))); if (actions.Contains(move)) { using (StreamWriter writer = new StreamWriter("ann" + percept.Size + "log.txt", true)) writer.WriteLine("using learned move"); return move; } using (StreamWriter writer = new StreamWriter("ann" + percept.Size + "log.txt", true)) writer.WriteLine("using default move"); return actions[0]; }
private Move GetAnnMove(Virus percept) { VirusBoard currentState = percept.GetBoardCopy(); Move[] actions = currentState.GetPossibleMoves(playerNumber); Move move = OutputsToMove(network.Compute(BoardToInput(currentState))); if (actions.Contains(move)) { using (StreamWriter writer = new StreamWriter("ann" + percept.Size + "log.txt", true)) writer.WriteLine("using learned move"); return(move); } using (StreamWriter writer = new StreamWriter("ann" + percept.Size + "log.txt", true)) writer.WriteLine("using default move"); return(actions[0]); }
private Move LearnFromMinimax(Virus percept) { //lær fra MiniMax Move move = teacher.Move(percept); VirusBoard currentState = percept.GetBoardCopy(); backProp.LearningRate = 0.1; backProp.Momentum = 0.1; Move annMove = OutputsToMove(network.Compute(BoardToInput(currentState))); double error = backProp.Run(BoardToInput(currentState), MoveToOutputs(move, currentState.Size)); if (move.Equals(annMove)) using (StreamWriter writer = new StreamWriter("ann" + percept.Size + "log.txt", true)) writer.WriteLine("using right move. E: " + error); else using (StreamWriter writer = new StreamWriter("ann" + percept.Size + "log.txt", true)) writer.WriteLine("using wrong move. E: " + error); return move; }
public override void EndGame(Virus percept) { VirusBoard newState = percept.GetBoardCopy(); double reward = 0; if (percept.Winner == playerNumber) { reward = 1; } else if (percept.Winner != playerNumber && percept.Winner != 0) { reward = -1; } ShortTermMemory.Add(new VirusMemory(prevState, prevAction, newState, reward)); prevState = default(VirusBoard); prevAction = default(Move); prevReward = 0; }
private Move LearnFromMinimax(Virus percept) { //lær fra MiniMax Move move = teacher.Move(percept); VirusBoard currentState = percept.GetBoardCopy(); backProp.LearningRate = 0.1; backProp.Momentum = 0.1; Move annMove = OutputsToMove(network.Compute(BoardToInput(currentState))); double error = backProp.Run(BoardToInput(currentState), MoveToOutputs(move, currentState.Size)); if (move.Equals(annMove)) { using (StreamWriter writer = new StreamWriter("ann" + percept.Size + "log.txt", true)) writer.WriteLine("using right move. E: " + error); } else { using (StreamWriter writer = new StreamWriter("ann" + percept.Size + "log.txt", true)) writer.WriteLine("using wrong move. E: " + error); } return(move); }