Пример #1
0
        public int RandMove(Board board, List <Button> buttonList)
        {
            memPart memP = new memPart();

            memP.action    = generateRandomComputerMove(buttonList);
            memP.boardInfo = getBoardTOInputForNN(board);
            memory.Add(memP);

            return(memP.action);
        }
Пример #2
0
        public void makeDecision(Board board, List <Button> buttonList)
        {
            List <double> boardInfoH = getBoardTOInputForNN(board);

            double[] output = nn.Run(boardInfoH);
            memPart  memP   = new memPart();

            memP.action    = OutputToAction(output);
            memP.boardInfo = boardInfoH;
            memory.Add(memP);
            performAction(memP.action, buttonList);
        }
Пример #3
0
        public bool makeDecision(Board board, List <Button> buttonList)//EXTRA saves memories
        {
            List <double> boardInfoH = getBoardTOInputForNN(board);

            double[] output = nn.Run(boardInfoH);

            boardForComp.GameBoard = board.GameBoard;
            int action = OutputToAction(output);

            memPart m = new memPart();

            m.action = action;
            m.state  = getBoardTOInputForNN(board);
            boardForComp.submitMove(action, marker); m.nextState = getBoardTOInputForNN(board);
            m.nextState = getBoardTOInputForNN(boardForComp);
            if (boardForComp.isWin())
            {
                m.reward = 1;
            }
            else if (boardForComp.isCat())
            {
                m.reward = 0.5;
            }
            else if (false)//TODO if lose
            {
            }
            else
            {
                m.reward = -0.01;
            }

            indexOfMemoryPartAtWork++;

            ///
            trainNNViaRLMethod();
            ///

            return(performAction(action, buttonList));//return false if the action is random//and presses and button on the ui
        }