void runLearningLoop() { QTable q = new QTable(getActionRange()); int moveCounter = 0; int count = 0; while (count < 100) { // PRINT MAP // printMap(); // CHECK IF WON, THEN RESET if (isGoalReached()) { System.out.println("GOAL REACHED IN " + moveCounter + " MOVES!"); resetMaze(); moveCounter = 0; count++; // q.updateQvalue(100, map); // return; } // DETERMINE ACTION int action = q.getNextAction(getMap()); // System.out.println(action+"MOVING: "+getMoveName(action)); goToNextState(action); moveCounter++; // REWARDS AND ADJUSTMENT OF WEIGHTS SHOULD TAKE PLACE HERE if (isGoalReached()) { q.updateQvalue(1, map); } else { q.updateQvalue(-100, map); } // COMMENT THE SLEEP FUNCTION IF YOU NEED FAST TRAINING WITHOUT // NEEDING TO ACTUALLY SEE IT PROGRESS // Thread.sleep(1000); } }