Skip to content

Instantly share code, notes, and snippets.

@AlexandreSi
Created April 27, 2018 09:06
Show Gist options
  • Select an option

  • Save AlexandreSi/1069b476b55e8fe23ed1d783a7340c31 to your computer and use it in GitHub Desktop.

Select an option

Save AlexandreSi/1069b476b55e8fe23ed1d783a7340c31 to your computer and use it in GitHub Desktop.
connect4ai - QLearning
// @flow
const NeuralNetwork = require('./NeuralNetwork');
exports.trainOnPreviousPlays = (
networkType: string,
myNetwork: any,
myTrainer: any,
boards: Array<any>,
plays: Array<number>,
learningRate: number,
reward: number,
discount: number,
gamma: number,
) => {
const playsLength = plays.length;
let previousQValue = NeuralNetwork.predict(
networkType,
myNetwork,
boards[playsLength - 1],
);
for (let playIndex = playsLength - 2; playIndex >= 0; playIndex--) {
NeuralNetwork.backPropagate(
networkType,
myTrainer,
boards[playIndex],
discount ** (playsLength - playIndex - 1) * reward + gamma * Math.max(...previousQValue),
plays[playIndex],
learningRate
)
previousQValue = NeuralNetwork.predict(
networkType,
myNetwork,
boards[playIndex],
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment