diff --git a/lib/dole_nn_base.js b/lib/dole_nn_base.js index ace6650c..0aeaf97c 100644 --- a/lib/dole_nn_base.js +++ b/lib/dole_nn_base.js @@ -32,69 +32,43 @@ function sigmoid3(x) //dole - Current dole for item X //carry - carry for item X slave Y //prev_req - Numreq for previous request for item X slave Y +//* doleinfo_last - Object with 2 values for last "tick period": numreq - total number or requests for item, numslave - number of slaves requesting that item //Returns: Array of 3 elements //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) +function Dose(numreq,instore,store_last_tick,dole,carry,prev_req,doleinfo_last) { - var inputs=[numreq,instore,store_last_tick,dole,carry,prev_req]; + 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 internal=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; - var outputs=[0,0]; + var outputs=[0,0,0]; //NN: Please don't touch :), code is generated -internal[1]=internal[8]*-1.643964648; -internal[1]=internal[1]+internal[3]*1.475263; -internal[1]=internal[1]+internal[10]*1.137161493; -internal[1]=internal[1]+1.0*0.581692636; -internal[1]=internal[1]+inputs[3]*-0.7429554462; -internal[1]=internal[1]+inputs[1]*-4.860008717; -internal[1]=internal[1]+inputs[0]*0.8682486415; -internal[1]=internal[1]+inputs[5]*-2.332767725; -internal[1]=sigmoid0(internal[1]); -internal[2]=internal[1]*0.8746165037; -internal[2]=sigmoid0(internal[2]); -internal[3]=inputs[0]*-5.502003193; -internal[3]=internal[3]+inputs[4]*0.2463098913; -internal[3]=internal[3]+inputs[5]*2.313313961; -internal[3]=internal[3]+1.0*-0.3230940998; -internal[3]=internal[3]+inputs[3]*-0.7781001329; -internal[3]=internal[3]+inputs[2]*7.295908451; -internal[3]=sigmoid0(internal[3]); -internal[6]=internal[1]*1.406680346; -internal[6]=internal[6]+inputs[3]*0.5068955421; -internal[6]=internal[6]+inputs[1]*-0.4729067087; -internal[6]=internal[6]+inputs[2]*0.8344552517; -internal[6]=internal[6]+inputs[0]*2.739265203; -internal[6]=sigmoid0(internal[6]); -internal[7]=inputs[0]*-0.9354650974; -internal[7]=internal[7]+inputs[5]*1.853131294; -internal[7]=internal[7]+inputs[2]*-0.5912416577; -internal[7]=internal[7]+inputs[1]*1.000927806; -internal[7]=sigmoid0(internal[7]); -internal[8]=1.0*-2.179960728; -internal[8]=internal[8]+inputs[1]*1.66548419; -internal[8]=internal[8]+inputs[0]*1.550180197; -internal[8]=sigmoid0(internal[8]); -internal[10]=inputs[2]*1.491255403; -internal[10]=internal[10]+1.0*1.035691857; -internal[10]=sigmoid0(internal[10]); -outputs[0]=inputs[2]*0.5093510151; -outputs[0]=outputs[0]+inputs[4]*0.9384511113; -outputs[0]=outputs[0]+outputs[1]*-3.595440626; -outputs[0]=sigmoid1(outputs[0]); -outputs[1]=inputs[2]*1.534054637; -outputs[1]=outputs[1]+internal[2]*-2.732098818; -outputs[1]=outputs[1]+outputs[2]*1.163635135; -outputs[1]=outputs[1]+internal[1]*-0.2005333602; -outputs[1]=outputs[1]+internal[6]*0.6757783294; +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[1]=sigmoid0(outputs[1]); -outputs[2]=1.0*-0.9311643243; -outputs[2]=outputs[2]+inputs[1]*-1.85346806; -outputs[2]=outputs[2]+inputs[2]*-1.232177019; -outputs[2]=outputs[2]+inputs[0]*1.937278271; -outputs[2]=outputs[2]+internal[7]*-0.728112638; outputs[2]=sigmoid0(outputs[2]); if (outputs[0]<0) outputs[0]=0; @@ -103,7 +77,7 @@ outputs[2]=sigmoid0(outputs[2]); if (res1>numreq) res1=numreq; if (res1>instore) res1=instore; if (res1<0) res1=0; - carry=outputs[2]+outputs[0]-res1; + carry=outputs[2]; return [res1,outputs[1],carry]; } @@ -111,29 +85,38 @@ outputs[2]=sigmoid0(outputs[2]); //Instore - number of items for item X in master gauge (currently) //dole - Current dole for item X //store_last_tick - Number of items for item X in master gauge at time of last tick (not this one) +//* doleinfo_last - Object with 2 values for last "tick period": numreq - total number or requests for item, numslave - number of slaves requesting that item +//* doleinfo_new - Object with 2 values for new "tick period": numreq - total number or requests for item, numslave - number of slaves requesting that item + //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) +function Tick(instore,dole,store_last_tick,doleinfo_last,doleinfo_new) { - var inputs=[instore,dole,store_last_tick]; + 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 internal=[0,0,0,0,0]; var outputs=[0,0]; //NN: Please don't touch :), code is generated -outputs[0]=1.0*0.5381062031; -outputs[0]=sigmoid1(outputs[0]); -outputs[1]=1.0*-0.5653554201; -outputs[1]=outputs[1]+inputs[0]*0.65881145; -outputs[1]=outputs[1]+inputs[1]*0.6852278709; +outputs[0]=sigmoid0(outputs[0]); +outputs[1]=inputs[7]*4.376355648; outputs[1]=sigmoid0(outputs[1]); avg=outputs[1]; if (avg>1) avg=1; if (avg<0) avg=0; + return [outputs[0],avg]; } -module.exports = {Dose,Tick} \ No newline at end of file +module.exports = {Dose,Tick}