예제 #1
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;
		}
예제 #2
0
		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;
		}
예제 #3
0
		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;
		}
예제 #4
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);
        }
예제 #5
0
        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);
        }
예제 #6
0
파일: ANNAgent.cs 프로젝트: Armienn/Virus
		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];
		}
예제 #7
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]);
        }
예제 #8
0
파일: ANNAgent.cs 프로젝트: Armienn/Virus
		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;
		}
예제 #9
0
        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;
        }
예제 #10
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);
        }