let us specify start load etc

This commit is contained in:
wassname committed 2018-12-04 17:17:47 +08:00
1 parent 3dbccfc316
commit 50dcbebbc7
8 files changed
+44 -40

No files matched your search

+1 -1
View File
@@ -21,7 +21,7 @@
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"display": "webpack-dev-server -d",
"train": "node --max-old-space-size=4096 scripts/train | tee outputs/train_$(date +\"%Y-%m-%d_%H-%M-%S\").log"
"train": "node --max-old-space-size=8192 scripts/train | tee outputs/train_$(date +\"%Y-%m-%d_%H-%M-%S\").log"
},
"repository": {
"type": "git",
+3 -3
View File
@@ -144,7 +144,7 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAmYAAAEWCAYAAADM5lvWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3X+QHPV55/H3s7sIgy0jGREQrH7ACbggnORWG6wUSQyB+AfWhQSBA6Ec7OCjkpAfnO8qhjgn+4h9heOLI1yhbCs4F1LHD2PklDkSYiOC7TsSAbuyMcIOiixrYYVsQKwwMQrS7j73x/Qsvb3zo2eme/rbM59X1dbO9sxO90zPdD/9fJ/v92vujoiIiIgUb6DoDRARERGRCgVmIiIiIoFQYCYiIiISCAVmIiIiIoFQYCYiIiISCAVmIiIiIoFQYCYikpKZ7TWzC4veDhHpXQrMRERERAKhwExEgmZmQ/2wThERUGAmIgGKmgw/aGbfAn5kZivNbKuZPW9m3zOz34se9zozO2Rmy6K/P2Rm02b2xujvPzazzdHtd5nZN8zsh2b2jJl9JLa+1WbmZna1mT0N/EO0/D1mNmFmB8zsQ11+G0SkDykwE5FQXQG8C3gT8DfA48ApwAXAdWb2dnf/N+Ax4K3R/7wVmADOjf39tej2j4BfB5ZEz/tbZvbLiXW+Ffhx4O1mdhbwaeA9wMnA8cBwxq9RRGQeBWYiEqpPufszwNnACe5+o7sfdvc9wF8Al0eP+xrw1qj58SeAT0V/vw74aeDrAO7+VXd/wt1n3f1bwJ28FtBVfcTdf+Tuh4BLgfvc/evu/irw34DZfF+yiPQ71VGISKieiX6vAk42s4Ox+waB/xvd/hrwSWAEeAJ4APgcsB7Y7e4HAMzsLcBNVAK9RcDRwBfqrBMqWbK5v939R2Z2oPOXJSJSnzJmIhIqj34/A3zP3ZfEfha7+0XR/f8InAn8CvA1d/82sBK4iNeaMQHuAO4FVrj7ccBnAKuzToD9wIrqH2Z2LJXmTBGR3CgwE5HQPQq8HHUGOMbMBs3sbDP7aQB3fwUYB67ltUDsH4HfZH5gthh40d3/zczOAX6tyXrvATaY2c+a2SLgRnTMFJGc6SAjIkFz9xlgA/BTwPeAF4BbgeNiD/sacBSVIK7692Ki+rLIbwM3mtnLwCbg7ibrfZJKsHcHlezZFDDZ4csREWnI3L35o0REREQkd8qYiYiIiARCgZmIiIhIIBSYiYiIiARCgZmIiIhIIIIaYHbZsmW+evXqojdDREREpKnx8fEX3P2ELJ8zqMBs9erVjI2NFb0ZIiIiIk2Z2UTWz6mmTBEREZFAKDATERERCYQCMxEREZFAKDATERERCYQCMxEREZFAKDATERERCYQCMxERCd74xBS3PLSb8YmpXB4vEoqgxjETERFJGp+Y4spbt3N4epahAeOy0RVcMjLMulVLGZ+YYvueA6w/7XjWrVq64PGLhga4/f3r5+5Ls67k84l0kwIzEREJ2vY9Bzg8Pcusw+EZ545Hnmbrjkk2bVjLjfc9uSAAiz/+yPQs2/ccSBVkdRLQiWRFTZkiIhK09acdz6KhASz626kEXPfv3L8gAIs/ftDgqKEB1p92fKr11AroRLpNGTMREQnaulVLuf3969m6Y5J7xieZmZnlqKEB3nn2ch7b+yJHpmfnBWDVx7faJFkN6JLPJ9JN5u5Fb8Oc0dFR11yZIiLl1I36rOo6lh67iKlXDs/9zmqdqjGTVpjZuLuPZvmcqTNmZvaXwAbgOXc/O1r2JuDzwGpgL/Bud58yMwNuBi4CXgHe6+47stxwERFpLK8gI/m84xNTc9ms6Zl867Oqz1mvFqzd1xz/v2vPXzPXqzPrwE8aU2DcWlPmXwF/Dvx1bNn1wIPufpOZXR/9/UHgncDp0c9bgE9Hv0VEJGd5BkrJAvlqAf6rR2aptr+0UnDfjnrF/e0W7zd7TQOGOgN0gTpfVKQu/nf3rwMvJhZfDNwW3b4N+OXY8r/2iu3AEjNb3unGiohIfeMTU/zh3zzBFX+xnTsfeTqXQvZkUFQtwK8GZUZrBfftqFfc327xfrPXpM4A3aHOFxWdFv+f6O77o9vfB06Mbp8CPBN73GS0bD8JZnYNcA3AypUrO9wcEZH+VM02xDNXkH2glCyQjxfgDybGGMtLreL+8Ykp9h08xNDgwFzngLSvud5rOnxkllkqGTN1BsifOl9UZNYr093dzFruSeDuW4AtUCn+z2p7RET6STXbMC9zNZh9oFQrKDrzpMWZ1QWlLe5ft2ppzQFlhwaMy89ZueA1N6pdavSaVGPWPe32pu01nQZmPzCz5e6+P2qqfC5avg9YEXvccLRMRERyEM825J25igdFtf6uarWQO5n1M0hV4xVvApuZdU5ecsyCoCxNZ4Frz1/T9DVJvvS+dx6Y3QtcBdwU/f5SbPnvmNldVIr+X4o1eYqISMbyzDbUC7AaBV7tFHIns361arxqPUezJrCsOwuI5KmV4TLuBM4DlpnZJPBhKgHZ3WZ2NTABvDt6+N9RGSpjN5XhMt6X4TaLiEgNWWcbkr074/NUQv0hK6B+MNRINcCq1nbFM2aNao6aBaX1Ard2p24SyVPqwMzdr6hz1wU1HuvAte1ulIiIpJfH2E+1OhPE56ncODLcMKhpp5A7HmC1OoBso6A0+bzJqZv6vdhcwqIpmURESqyV5rhWArhks2JVdZ5Kh4ZBTatNq/VqvbJSb2DatNuogU+lWxSYiYiUWNrmuFbrqZKdCc4788f46q7n54ai2DgyzMaR4aa1Z2mCrG7VetV6r649f02qoFG1aPlQwLuQAjMRkRJL2xxXb/DOVoaQqHUSzbLoP+9ar2Sw+ezBQ4xPTAWzff0mOcxJN8bAKwMFZiIiJVEvMErTHJcM4JYeu6hpAJV2WIy4VjJ41W3uVq1X9b2qdmi489FKvVwr2UPVomUn/lmJ1y/2e0ZSgZmISAk0ykSlCZiSAVxeWaA0QUyt19KtgUXXrVrK9j0HmJ5J/9o18Gl2agXk1Q4m1frF5P7ot+ZOBWYiIiWQRSCVDODyyAKlCWLarfXKSrs9RvshKMhTvYC8msGsNZVWP9b3KTATESmBWsFEJ5mEPLNAzYKYopsGlQErxrymyyOzbN62i+suPIP/8StvrtuRpNXayF5glSHHwjA6OupjY2NFb4aISJDigRg0HuA17fMUdWILYRuku+ayX7HJ4dMM8XLlrdvngvhNG9Zy431PBpNBM7Nxdx/N8jmVMRMRKYl4JuqWh3a31bSZdt7IrE92ycnJ8xqvTMJVzVRu3raLh3e/kOqz263ayJAoMBMRCVytgKnd5sAi5o1MziKQJlMivWndqqVcd+EZPLb3xdSf3eoFyfjEFPsOHmJocKBmPVqvUGAmIhKwegFTu3VSRcwbmZxFoJezHdJcO5/d5Jhnl5+zsmfHPFNgJiISsGbFz602B9YbODbPTERycvL4pOSqNetPrfZyjX8PZmadk5cck/vnpajPpgIzEZFApGmyTDMwbDPxk2KtTMTak4+bCwCzOCHVmpy80w4MRVEgWYyseyU3U+QwHQrMREQCUOtEAJVMwaYNa+eCmXaaHBudwJKZCIdcer3VypC024GhKP04plYokpleyDeoL7KTgQIzEZE2ZXnFnhzj6cb/8yTf+f7LTM8sPPG0UvTfLJhIZiIMunZCKno8s1b1Q4/AENTqwVsN7Bv1SoZsxjcrupOBAjMRkTZknT1J1mF9a/KluWL5eBDQauF0s2CiViZi647JrgRLZRvotWyBZJ7yakZM24M3jyb++PqL7GSgwExEpEXjE1Ns3rar4+xJ8uSWHOMJwGBBENBK4XSaYCL5fN0Mlso01VHZAsm85Nmkm7YHb17jmxXRySBJgZmISAtqXdG3U4xc7+QWH+NpcMC4bHRFR1fs7QQTZQqWuk3vTb5Nuo168CblMfdrtzsZ1KLATESkBfEr+gHg3DXLuO7CM4DWipHrndzyyMoomJAs5dmkW68Hb6PPbzVwineSyepCBrrfc1iBmYhIC5InpWpQ1mrTZqOTmwKp8ujH4TPybtJt5fPfSbNqvX2XxdRnnVBgJiI9K4+TZr0r6lpNm608T7+c1HtJPw+fkQyeigpQ221WTbvviujwocBMRHpSnifNWlfUyaZN1XL1tqw6gPSCIgPUrOeMTSriAiqTwMzM/jPwfsCBJ4D3AcuBu4DjgXHgPe5+OIv1iYg0k0eBcpqR+atNm7c8tFuZsB7VqANIPypyfLd6U4w1C6RaCei6fQHVcWBmZqcAvwec5e6HzOxu4HLgIuDP3P0uM/sMcDXw6U7XJyKSRhZNEPEDPNQuAg6hWFi6q14HkDLt53qDuLaj6PHd6k0x1uj7F3IpQVZNmUPAMWZ2BDgW2A/8AvBr0f23AR9BgZlIaZS9qLnTA2/yAL9xZLhuVqDTYuGyv9f9plaWtEz7Le0grmmFFOS0kr0LtZSg48DM3feZ2f8EngYOAV+h0nR50N2no4dNAqfU+n8zuwa4BmDlypWdbo6IZKBXipo7OfAmD/BOunGS0mQP0mTiekmvBZ4hBSLtSDuIa1yzfRhKkNNO9i60z2cWTZlLgYuBU4GDwBeAd6T9f3ffAmwBGB0d9SYPF5Eu6LU5Adtptokf4AcHDINU4yQ1O2m3konrBb0S5CeFEoi0o5VBXKFc+7DVoDnE15ZFU+aFwPfc/XkAM/sicC6wxMyGoqzZMLAvg3WJSBcUXTOSpTTNNsnArfp704a17Hz2Je4Zn+TOR59OfeCud9Ku1ZMvbSaurHotyE8rtCxMXKuDuJZtH7YSNIf42rIIzJ4G1pvZsVSaMi8AxoCHgEup9My8CvhSBuuSAoV8oJFslb2pJq5Ws83hI7Ns3rZr3oj91cDNYF4At3FkmOmZzg/c9XrybRwZZuPIcE+817X0UpCfVohZmKRLine truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbe8bb2c0b8>"
]
@@ -352,7 +352,7 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbe8bff00b8>"
]
@@ -492,7 +492,7 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbe8c7a3358>"
]
+16 -2
View File
@@ -3,14 +3,14 @@
<head>
<title>Reinforcement Learning 2D Biped Walkers</title>
<style link="css/walkers.css"></style>
</head>
<body>
<div id="main_holder">
<h1>Reinforcement Learning 2D Humanoid Walkers</h1>
<h3 id="page_quote">"Play that funky music, robot"</h3>
<canvas id="main_screen" width="800" height="350" style="background: url('./images/background.png')"></canvas>
<canvas id="main_screen2" width="800" height="350" style="background: url('./images/background.png')"></canvas>
<image style="display: none" src="./images/background.png"></image><!-- for google and previews-->
@@ -47,5 +47,19 @@
</body>
<script>
function init() {
var canvas_id = 'main_screen2'
window.game = new Game(config, canvas_id)
game.agent.restore('./checkpoints', 'model-ddpg-walker-22h/model') // load checkpoint
game.agent.restore('../outputs', 'model-ddpg-walker/model') // load latest
game.loop()
chooseQoute()
var canvas=document.getElementById(canvas_id)
canvas.style.background=''
}
window.addEventListener("load", init, false);
</script>
</html>
+5 -13
View File
@@ -1,15 +1,7 @@
const { Game } = require('./js/game')
const { Game, chooseQoute } = require('./js/game')
window.b2 = require('./vendor/jsbox2d')
const config = require('./js/config')
window.config = require('./js/config')
window.chooseQoute = chooseQoute
window.Game = Game
require('./css/walkers.css')
var game
window.game = game
function init() {
window.game = new Game(config)
}
window.addEventListener("load", init, false);
module.exports = {game, Game}
module.exports = {Game}
+4 -1
View File
@@ -23,7 +23,10 @@ function createFloor(world, max_floor_tiles) {
edges[edges.length - 1].y + (ratio * Math.random() - ratio / 2)));
// edges.push(new b2.Vec2(edges[edges.length-1].x + 1,-0.16));
}
edges.push(new b2.Vec2(edges[edges.length - 1].x, edges[edges.length - 1].y + 18)); // front wall
edges.push(new b2.Vec2(edges[edges.length - 1].x + 5, edges[edges.length - 1].y + 5)); // front wall
edges.push(new b2.Vec2(edges[edges.length - 1].x + 7, edges[edges.length - 1].y + 15)); // front wall
edges.push(new b2.Vec2(edges[edges.length - 1].x + 8, edges[edges.length - 1].y + 35)); // front wall
edges.push(new b2.Vec2(edges[edges.length - 1].x + 8, edges[edges.length - 1].y + 45)); // front wall
fix_def.shape.CreateChain(edges, edges.length);
body.CreateFixture(fix_def);
return body;
+6 -9
View File
@@ -93,23 +93,20 @@ class HeadlessGame {
}
}
var removeCanvasBackground = function (){
var canvas=document.getElementById('main_screen')
canvas.style.background=''
}
class Game extends HeadlessGame {
constructor(config) {
constructor(config, canvas_id) {
config.canvas_id = canvas_id
super(config)
this.agent.stop()
this.agent.restore('./checkpoints', 'model-ddpg-walker-22h/model') // load checkpoint
this.agent.restore('../outputs', 'model-ddpg-walker/model') // load latest
}
loop() {
setInterval(() => {
this.play()
}, 1000/this.config.draw_fps)
chooseQoute()
removeCanvasBackground()
}
/**
+2 -2
View File
@@ -4,8 +4,8 @@ class Renderer {
this.walkers = [walker]
this.floor = floor
this.main_screen = document.getElementById("main_screen");
this.ctx = main_screen.getContext("2d");
this.main_screen = document.getElementById(config.canvas_id);
this.ctx = this.main_screen.getContext("2d");
this.resetCamera();
}
+7 -9
View File
@@ -8,14 +8,12 @@ var ENV = process.env.NODE_ENV || "development";
module.exports = {
entry: {
app: './src/index.js',
// lib: './src/vendor/index.js'
},
target: 'web',
devtool: ENV==="development"? 'dev-source-map': null,
devtool: ENV==="development"? 'dev-source-map': false,
output: {
path: path.join(__dirname, 'dist'),
filename: '[name].bundle.js',
// path:'/dist',
},
module: {
rules: [
@@ -46,16 +44,16 @@ module.exports = {
}
},
plugins: [
new webpack.DefinePlugin({
// A flag to disable node imports, and enable window/dom usage
WEB: true
}),
new HtmlWebpackPlugin({ template: '!!html-loader!src/index.html' }),
new CopyWebpackPlugin([
{ from: 'src/images', to: 'images' },
{from:'checkpoints',to:'checkpoints'}
{ from: 'checkpoints', to: 'checkpoints' },
{from:'src/css',to:'css'}
]),
new webpack.DefinePlugin({
// A flag to disable node imports, and enable window/dom usage
WEB: true
}),
]
};