Updated neural network and interface

This commit is contained in:
axapaxa123 authored and GitHub committed 2019-04-10 01:14:39 +02:00
1 parent 86d4f3dba4
commit ce9e1d876a
1 file changed
+32 -36
+32 -36
View File
@@ -38,47 +38,41 @@ function sigmoid3(x)
//0.Number of items to give in that dose
//1.New dole for item X
//2.New carry for item X slave Y
function Dose(numreq,instore,store_last_tick,dole,carry,prev_req,doleinfo_last)
function Dose(numreq,instore,store_last_tick,dole,carry,prev_req,numreq_total_adj)
{
numreq=Number(numreq);
instore=Number(instore);
var instore_adj=instore;
if (instore_adj==0) instore_adj=0.1;
var numreq_total_adj=doleinfo_last.numreq;
if (numreq_total_adj==0) numreq_total_adj=0.1;
var a=(doleinfo_last.numslave)*numreq;
if (a>0) {a=(doleinfo_last.numreq)/a;} else {a=1000;}
var b=Math.trunc(prev_req/instore_adj*numreq);
var inputs=[numreq,instore_adj,store_last_tick/numreq,dole,carry,prev_req/numreq,doleinfo_last.numslave,numreq/numreq_total_adj,a,store_last_tick/numreq_total_adj,prev_req/instore,b];
var inp1=[numreq,instore_adj,store_last_tick/numreq,dole,carry];//0..4
var inp2=[prev_req/numreq,numreq/numreq_total_adj,store_last_tick/numreq_total_adj,prev_req/instore_adj,b];//5..9
var inputs=inp1.concat(inp2);
var internal=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var outputs=[0,0,0];
//NN: Please don't touch :), code is generated
internal[11]=inputs[1]*2.584747791;
internal[11]=internal[11]+inputs[4]*0.9939581156;
internal[11]=internal[11]+inputs[5]*-0.5315227509;
internal[11]=internal[11]+inputs[3]*0.2037106603;
internal[11]=internal[11]+inputs[2]*1.38696003;
internal[11]=internal[11]+inputs[6]*-0.5434055328;
internal[11]=internal[11]+inputs[8]*-0.4344435036;
internal[11]=internal[11]+1.0*-1.461762667;
internal[11]=sigmoid0(internal[11]);
outputs[0]=inputs[0]*0.4289886355;
outputs[0]=outputs[0]+internal[11]*1.96782124;
outputs[0]=outputs[0]+inputs[3]*-2.196558237;
outputs[0]=sigmoid3(outputs[0]);
outputs[1]=outputs[0]*3.200549364;
outputs[1]=outputs[1]+inputs[7]*-0.3701510429;
outputs[0]=inputs[2]*3.101320028;
outputs[0]=outputs[0]+inputs[7]*0.5471593142;
outputs[0]=outputs[0]+inputs[3]*2.691268921;
outputs[0]=outputs[0]+outputs[1]*-1.64255929;
outputs[0]=outputs[0]+inputs[6]*0.7746122479;
outputs[0]=sigmoid0(outputs[0]);
outputs[1]=inputs[2]*-0.9946503043;
outputs[1]=outputs[1]+inputs[1]*0.2128598392;
outputs[1]=sigmoid0(outputs[1]);
outputs[2]=sigmoid0(outputs[2]);
outputs[2]=sigmoid2(outputs[2]);
outputs[0]=Number(outputs[0]);
if (outputs[0]<0) outputs[0]=0;
outputs[0]=outputs[0]*numreq;
var res1=Math.trunc(outputs[0]);
var res1=Math.round(outputs[0]);
if (res1>numreq) res1=numreq;
if (res1>instore) res1=instore;
if (res1<0) res1=0;
carry=outputs[2];
return [res1,outputs[1],carry];
carry=sigmoid0(outputs[2]);
return [res1,sigmoid0(outputs[1]),carry];
}
//TICK - Updates values for item X, should be called once for each item for each round of all slaves requesting that item
@@ -92,31 +86,33 @@ outputs[2]=sigmoid0(outputs[2]);
//Returns: Array of 2 elements
//0.New dole for item X
//1.Guessed percentage average of items supplied in last 10 ticks
function Tick(instore,dole,store_last_tick,doleinfo_last,doleinfo_new)
function Tick(instore,dole,store_last_tick,numreq_total_adj)
{
var instore_adj=instore;
if (instore_adj==0) instore_adj=0.1;
var numreq_total_adj=doleinfo_last.numreq;
if (numreq_total_adj==0) numreq_total_adj=0.1;
var a=doleinfo_new.numreq;
if (a>0) {a=doleinfo_last.numreq/doleinfo_new.numreq;} else {a=1000;}
var aa=doleinfo_last.numslave*instore;
if (aa>0) {doleinfo_last.numreq/aa;} else {aa=1000;}
var inputs=[instore,dole,store_last_tick/instore_adj,a,doleinfo_last.numslave,doleinfo_new.numslave,aa,store_last_tick/numreq_total_adj];
var inputs=[instore,dole,store_last_tick/instore_adj,store_last_tick/numreq_total_adj];
var internal=[0,0,0,0,0];
var outputs=[0,0];
//NN: Please don't touch :), code is generated
outputs[0]=sigmoid0(outputs[0]);
outputs[1]=inputs[7]*4.376355648;
internal[2]=sigmoid0(internal[2]);
outputs[0]=internal[2]*0.4049594998;
outputs[0]=outputs[0]+1.0*-5.026565075;
outputs[0]=outputs[0]+inputs[0]*0.9100194573;
outputs[0]=outputs[0]+inputs[1]*-1.063795686;
outputs[0]=sigmoid1(outputs[0]);
outputs[1]=outputs[0]*1.049500823;
outputs[1]=outputs[1]*inputs[0]*3.437163115;
outputs[1]=sigmoid0(outputs[1]);
avg=outputs[1];
if (numreq_total_adj<0.11) avg=1;//When no item's are requested, result is 0.1 ; In that case there is no deficit, so return 1 = 100% demand fulfilled
if (avg>1) avg=1;
if (avg<0) avg=0;
return [outputs[0],avg];
return [sigmoid0(outputs[0]),avg];
}
module.exports = {Dose,Tick}