JavaScript
var num_inputs = 3;
var num_actions = 3;
var temporal_window = 1;
var network_size = num_inputs * temporal_window + num_actions * temporal_window + num_inputs;
var layer_defs = [];
layer_defs.push({
type: 'input',
out_sx: 1,
out_sy: 1,
out_depth: network_size
});
layer_defs.push({
type: 'fc',
num_neurons: 3,
activation: 'relu'
});
//layer_defs.push({type:'fc', num_neurons: 3, activation:'relu'});
layer_defs.push({
type: 'regression',
num_neurons: num_actions
});
brain = new deepqlearn.Brain(num_inputs, num_actions, {
temporal_window: temporal_window,
layer_defs: layer_defs,
epsilon_test_time: 0.00
});
brain.gamma=0.5;
pos = 1;
var gamesPlayed = 0;
var score = 0;
var scoreMax = 0;
result = -1;
ctx = document.getElementById("game").getContext("2d")
data = [
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 2, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]
];
//data[0].concat(data[1]).concat(data[2])
ni = function() {
score++;
brain.backward(score)
think = [
data[pos - 1 < 0 ? 2 : pos - 1][3]==1?1:0,
data[pos][3]==1?1:0,
data[pos + 1 > 2 ? 0 : pos + 1][3]==1?1:0,
data[pos - 1 < 0 ? 2 : pos - 1][3]==3?1:0,
data[pos][3]==3?1:0,
data[pos + 1 > 2 ? 0 : pos + 1][3]==3?1:0
]
result = brain.forward(think);
data[pos][2] = 0
switch (result) {
case 0:
pos++;
if (pos > 2) {
pos = 0
}
break;
case 2:
pos--
if (pos < 0) {
pos = 2
}
}
data[pos][2] = 2
for (var i = 0; i < 3; i++) {
for (var o = 0; o < 9; o++) {
switch (data[i][o]) {
case 1:
data[i][o] = 0
try {
data[i][o - 1] = 1
} catch (e) {}
/*if (i == pos && o == 2) {
gamesPlayed++;
scoreMax=Math.max(scoreMax,score)
disp();
score=0;
data = [
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]
...