LaundrySorcery

git clone git://xatko.vsos.ethz.ch/LaundrySorcery.git
Log | Files | Refs

commit a751a454fa07856526d89105b37c1d5d7bd803d5
parent a98a715793c8f678e09e22c3db8ff06569f98d49
Author: Dominik Schmidt <das1993@hotmail.com>
Date:   Sat, 30 Jun 2018 17:05:04 +0000

Guess also the cluster, not only the optimal time.

Diffstat:
Mwww/index.cgi | 28++++++++++++++++++++++------
1 file changed, 22 insertions(+), 6 deletions(-)

diff --git a/www/index.cgi b/www/index.cgi @@ -20,10 +20,10 @@ Content-Type: text/html text-align:center; font-size:x-large; } - #status.off #guessTime{ + #status.off .guess{ display:none; } - #guessTime{ + .guess{ font-size:large; } #power{ @@ -51,29 +51,31 @@ Content-Type: text/html <div id="status"> <div id="power"><img src="off.svg" /></div> <div id="delta_t"></div> - <div id="guessTime"></div> + <div id="guessTime" class="guess"></div> + <div id="guessProg" class="guess"></div> </div> <script type="text/JavaScript"> <!-- delta_t=${RTIME}; function updateDisplay(){ var g=document.getElementById("guessTime"); + var g2=document.getElementById("guessProg"); var dt=document.getElementById("delta_t"); var st=document.getElementById("status"); var txt=""; - var txt2=""; var classn=""; if(delta_t < 0){ txt="since "+timeSince(-delta_t); classn="off"; } else{ + c=guessCluster(delta_t); txt="since "+timeSince(delta_t); - txt2="The crystal ball guesses: "+timeSince(Math.round(guessTimeLeft(delta_t)))+" left" + g.textContent="The crystal ball guesses: "+timeSince(Math.round(guessTimeLeft(delta_t)))+" left"; + g2.textContent="Guessed program lasts "+timeSince(Math.round(c.mean)); classn="on"; } dt.textContent=txt; - g.textContent=txt2; st.setAttribute("class",classn); st.getElementsByTagName("img")[0].setAttribute("src",classn+".svg"); } @@ -102,6 +104,20 @@ Content-Type: text/html } } + function guessCluster(elapsed){ + var max=-Infinity; + var maxc={}; + for(var i=0; i<clusters.length; i++){ + var cluster=clusters[i] + var prob=cluster.apriori*(1-cluster.cdf(elapsed)); + if(prob>max){ + maxc=cluster; + max=prob; + } + } + return maxc; + } + function guessTimeLeft(elapsed){ return guessTime(elapsed)-elapsed; }