From 8b406c58397db320a045b7a092ac2d6fb9a40c7d Mon Sep 17 00:00:00 2001 From: Nour125 <ahmed.noureddin.00@gmail.com> Date: Mon, 3 Jul 2023 21:19:30 +0200 Subject: [PATCH] merged for testing --- Frontend/main.py | 60 ++++++++++++------ backend/__pycache__/dqn.cpython-311.pyc | Bin 2115 -> 2094 bytes .../__pycache__/environment.cpython-311.pyc | Bin 12006 -> 13003 bytes backend/__pycache__/eventlog.cpython-311.pyc | Bin 11294 -> 11384 bytes backend/__pycache__/petrinet.cpython-311.pyc | Bin 3802 -> 3802 bytes .../simplesimmodel.cpython-311.pyc | Bin 31456 -> 31456 bytes backend/simtest.py | 12 ---- backend/test.py | 12 ---- 8 files changed, 41 insertions(+), 43 deletions(-) diff --git a/Frontend/main.py b/Frontend/main.py index c22d590..4d08a99 100644 --- a/Frontend/main.py +++ b/Frontend/main.py @@ -13,13 +13,8 @@ The following are the import for the backend. Just write the name of the script Then you can immediately use the function from the script directly in the app. """ sys.path.append(os.path.join(os.path.dirname(sys.path[0]),'backend')) -<<<<<<< HEAD import input, dqn, petrinet -import eventlog as elog -======= - -import input ->>>>>>> nour +import eventlog as elog #define the app app = Flask(__name__) @@ -60,7 +55,7 @@ def upload_file(): #if no file has been selected, flashes a warning flash('No files selected! Please select a file!') return redirect(url_for('index')) - return redirect(url_for('case_id', uploaded_file.filename)) + return redirect(url_for('case_id', filename = uploaded_file.filename)) """ The download usage. Currently just downloads fish.jpg. @@ -87,39 +82,68 @@ There is a preview functionality, when clicked will show a preview of a generate The generated image currently displays static images and not instantly generated ones from the backend. Currently it displays moyai.jpg by default and fish.jpg on case 1 and 2. Will change this later. """ -@app.route('/case.html', methods=['GET']) +@app.route('/case.html/<filename>', methods=['GET']) def case_id(filename): #temporary choice of cases until I figure out where the actual function from backend is. #give the list here in selection using functions from - selection = elog.get_active_cases(filename) + selection = elog.get_active_cases(filename) + previewid = request.args.get("selectpreview") + while request.args.get("selectpreview")!= None: + print(previewid) + previewid = request.args.get("selectpreview") + break + + preview = "../static/fish.jpg" + + if previewid != None: + result = int(previewid) + state = elog.get_state(result, filename) + rec = dqn.deploy(state) + rec = int(rec) + print(rec) + petrinet.decorate_petri_net(result, filename) + + preview = os.path.join(app.config['STATIC_FOLDER'], 'preview_net.png') + else: + print("else") + preview = "../static/fish.jpg" + + ''' if previewid == '1': preview = os.path.join(app.config['STATIC_FOLDER'], 'fish.jpg') elif previewid == '2': preview = os.path.join(app.config['STATIC_FOLDER'], 'fish.jpg') else: preview = os.path.join(app.config['STATIC_FOLDER'], 'moyai.jpg') + ''' - return render_template('case.html', selection=selection, preview=preview, filename = filename) + return render_template('case.html', selection=selection, preview=preview, filename=filename) """ Route for sending the case id towards recommendation. This is linked to the 'Optimize now' button in the case ID page. I have decided to use a separate dropdown list to avoid cross sending the http requests by accident. """ -@app.route('/case.html', methods=['POST']) -def send_caseid(): +@app.route('/case.html/<filename>', methods=['POST']) +def send_caseid(filename): result = request.form.get("selectresult") - return redirect(url_for('recommendation', result=result)) + return redirect(url_for('recommendation', result=result, filename=filename)) """ The result page. It processes "id" (for now it uses the "foo" function from input.py) using backend functions and prints out the result immediately in the page. """ -@app.route('/result.html/<result>', methods=['GET']) -def recommendation(result): - res = input.foo(result) - return render_template('result.html',res=res) +@app.route('/result.html/<filename>/<result>', methods=['GET']) +def recommendation(result, filename): + result = int(result) + state = elog.get_state(result, filename) + rec = dqn.deploy(state) + rec = int(rec) + + petrinet.decorate_petri_net_with_rec(result, rec, filename) + # time.sleep(15) + return render_template('result.html') """ Loading page. Has yet to be used. @@ -140,5 +164,3 @@ if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=port) - - diff --git a/backend/__pycache__/dqn.cpython-311.pyc b/backend/__pycache__/dqn.cpython-311.pyc index fca2596bb6917b819255895b808c30fddb1029fd..089a4e571840d4c9f139aef698c98bca7df52cbe 100644 GIT binary patch delta 273 zcmX>suugz?IWI340|Ns?s?_2X>xsM_TpSDx49pA+44<Pm&Oga0Rl~A|V;LI*!)i8= zDiE$^P2sF%OW~T_!lcQ{lft`(Z}KK4Uq=2(%sTw?t*--j$X&J16i{bi&}5nH!mKbk zn^}q3!HIwK1ZD?DE)@m_29SNl`jc<5?36LNkeu;>fuWkwk?8{i1FsX)M=<#XL~h>1 zYQ(6nz`($8i!Cv^Br`wn7Gr!d3j+g#f`WoVkuq2!CAA<Yzp_YoGB>*|qv~W&c11>k z$=U3R+M)~$3`HU!0%T>8E&~I@N`@j;kN`;MFAkgB{FKt1RJ$UR$=lgGSU@rWKSn=J delta 276 zcmZ1{a9DtMIWI340|NuYr6-G0Tqp8&aB(s)FfcPPFno^LIR7N0ObSO0%NovQ><kR6 z*+J?+xRy1AtClT=dvX(#CM$0W-x~hO8<>0<1t$Mv(vg@o69it`r$ZP!?K1_`85lHK zCtETru(75m=H@0&j$l@1z91yLxsKU^kxP|<fdS-%Vx!3?Sa!-AUkHo5kX!VDfx(r@ zo9P1s1FsL$M=<#XL~fqTYQ)H>IQasb1fL261H&!0l+=Qp{K_J|$=}#)8Pz76uq!eO zP7Y&N)D~l4U?>s=5g;py^cWZzRx%W+fdoK0e{tC4=BJeAq}mmkPF}>`!2*&20Ahtl AzW@LL diff --git a/backend/__pycache__/environment.cpython-311.pyc b/backend/__pycache__/environment.cpython-311.pyc index 930a99fcfd79b331cba55c3f17138f409ca55c40..94659ed7505dd39eae282fe375e57d776ea4098c 100644 GIT binary patch delta 2065 zcmaDBdpebGIWI340|NuYF{#BVLMjvat}^;ee4?b!(!vnMmcre^kj9w8*1{RZp2CyD z(ZU$Tk;2)+5XG6o)xr?P)xl7~7{wjTpvk*gpRtFNQFrnlu1slWka189VuSGKT?`Bi z(-|gjP?xG-#>l|1nh~mip_aLZDTOhc3B)gEt6@rEg0PGDYM4`)B|*YqoWg=&2Q$<# zrLaQOf%ULK*cf^k(e+euG1N2EvY;AWgJQHMyI&DI0|UcLeg+1HA`TD%a@<QW0rHC` zW04jE1A``Okupe9hk=3N7F%L+NoIatkuHcMSd>~^oL^d09AA)MoCy*yW@TVtPym4< zwR(^ezVy_Rc&M`E)Z!{dr_$ogywu|2fTH~5)Z${-yfQshC8i7v48?T}3=9nnHv~kk z3#eTZP+L%TQ9$pCfL;gd4Q{~+fnC-g7}z+?XQ(Z3nxz9~-Vm0UA$dhud4b~<VYLf9 zYBzX=C)gEsMSoym;WVG&wjgnqH<*d8?ty~Z3c-b37kFf0G8a@#uLzr6;4z!rCnL?2 z#X8xB+hp?u?rV&86Bvs+OQgYZ1SV=2Q6rd<0Y#P}3lyYal__kJ43j6aN(i7TSim>A zkV%x8t%h-OH>=#_NxahBpr`<ASs*aEkV$0n8D1?Wh_W=c8pdTz3=FG5(F0ZjOH4&- zDeSczH4GJuS%P2*1_p*2jw)UThGeFAgb0#*YB^IlYPnK4YPmBRYI$lnYdC7SYPf57 z(pZBh-{(<s;zf363TF*N7R+3REV%Wv8B(}v7-uu2aL;8$4~Uw{c}x<M_4yQXd286K zxEL5}`D*y!?qyD4tmVj)NZ~0_g`3NeB@AQN@TKsg`V?#eK_8ZAPJYiQHhB&=*W^2V z{M@{dtWqos73bksugB$Uh7>-kg&>0_zh4n3l#290xdxQOLW)2oPZ5V50|P_mxBvhD zyH)W!rl;nWD5PYjC?qEqrz%u&DS&cTS!PM4!Y@X>bVy(bIlKhv%zX3z|9?%<$>;eC z4NO3W%7L;LOL0kRL6H)enVVRWaf>-8KfMT45NPs4a;y;p1H<Gz0ZS8zDz3cLijw%^ zlEjkKTP!L0d8xNJONvVKk`qf(Q*N<j=B4G|Vks`kFSx~0l9`)2`L=+RvNHn%LzOs| zJPWeh5tLJZO_mT;;8<dFMcL{Cx7Fl8!9}be_!tC5Cw~((_Wa0T%xU|SM{t5#r*DsM zhwoh;!3io?gj5zpUJ=s2$YXGY$KV2w0a*09km@BN)dd+F*e(j0UlB6D$YXJZ$KnEy z#Rnb+Ve!eXLI(8$BG>tqF7YcZuvigxk>B(Rzv&LaOZ-+J7}$9o8E;6+OkleqAToh_ z3iph%ivp@3#tm7;E3*0%xNeBcOklYoqd0-{hPdPemK)-V3(QuSY>?dHazWhTf`G#V zVeu(8SA><X2&;FveC1%^6}lkgyTE0M&lMGm3qrmZgnSRUT@VH{E(rNv<ng=0<9C6_ z?*rT9W}&T&lAA4sU04{+C)bJ37P11x4=7SJIUtb`JXu>pi_w2_n1mu@*yIWcS;obi zr%A9gF&^AJPfCc9F?RAs=_JNun?+>auxb?<fV7)~2u=_IN<HAB`6U~OYX~Z?L1Hgi zCTl4fFvd=fR!U<$xA~CLd}g);P+840IbBU3l1M;tR}==)mI5L&K}0DiweZHrC+8#< z7bmCY<iy8oG8V;8KBy+kxPJ0|H8~?YHdfIO3~)k#gVp>41DueEXJobgz<@-$FmF~+ z-_5L+4>BI)K8P1`LEJnL0m=n01wd|NE=rrssJ)OElnshO*&S3*Onx9B!gGryH!(A> zsFQ(#;rZtC+9FI+E({C|x0qe?%8EcW3RtG73}jr=<iENSj1wk{=_Qy(GBb*PV8Bk! W5S}Cc5iIuwOhVO_u}xmBXAJ-xbm}kw delta 1128 zcmX?|`Ye`jIWI340|NuYr6-G0j1?yGU1fBe_(VyQtAinpF@?2-Gm0&RJB7W4F^WBf zqlF=gBZaetA&Rqup@K1rE0{r(XR|3|4=1Dc<U?GU;!GfepqQ0`fq|KUf#Gu$%VY~) z6Rs47Y_N2(#N-bGVw-b#uQ9R|eJYWj%*QXrID7J0ejRQ;s8)sr{F4otL?%lJXiYvO zAkWHC!?1vTvLTb`WNSf%T#g#{DlP_wTCN(d6h?@dMa(H|wcL3UDeNVRFf$k!vIJr5 z8m<(MWlRhVtHCY+iGoewu3@NP%n}0eLAZvyikE>QnJFGFQldWjBD2`!dxDbO91xp| zWuaobc)2ELGV@I~5aKuGtmR4JtmVyQsO78Stl_TVso|~ROJfaYNa3o*X~*OV0^$KU zb!u|^6@eW4lAnQrp@^M<fgz*_6iqK#7#JARL9S(B5OR145^_tQH4_AO?$;EV{70xz zPmY0s;TB7ANov6@mfXaWj9bh(`RPSUAcG_s7#KA9i<Chs*b<XVGV}8$&lR>b0V&Tf zxW$#1T2T^TT#{IldW)qbGdC5i>lRB&eqQP=&XS_iyyV1^)RbE+nR#jXlet8s*lZaX z7^=i4C$bB3fh;s;U|=YYnCvd1AbE*f{R0Chr`ZaVH8xkY?GKn7vAN<LbwN97a=yqS z<_7{Ilf^`hWj-({bJ{-T5u6ZmMO6KQkmf}mtt&iQ7kIQD2#HOeBx=AXA~D70im>t( zVf7A|4?L4Y#I`a@ZRQepVPQ0!>@PiA$OPmqkl!>pz}_nIoBT&wi_vGYx{M-QAjowR zAlI=Kr52}_G;B_nVP|5Tw>e)<h><a3a+7=#<KoRv<=?Psy#$4Jks-)5P7nbK@*)lf z28NexAOe(<UxLL9CjVA7V2qfoqn5_Fdh=wp`OIw5pit$WY@wwu3JQ-RkhMkeAX8F6 zMB(H{Em6j($<wuDofa@KF#Kp>fWZ$eQmhgm7~q5z8>{FC1~?($#mH*=fdPq(V%p5A zy_;Dr8)R?>h)4qw1|T8}MCgNDD*$p3b5Y{tXL<`6Ehcy9tFyK;Ffbh1yhUGx$=Hs8 zf#DXjYhGCqD32C_WQvMFdSgL^28d8&U|{&gVUwGmQks)$SJX54w_$>5855)E2L|lq W4B<KAAHi~8z$8>%0qf)mM%Do4UlJ(* diff --git a/backend/__pycache__/eventlog.cpython-311.pyc b/backend/__pycache__/eventlog.cpython-311.pyc index d33a75c44c1df2f1e74740d27b74a2267589bfca..2d6febe6e8636c9f95540538da385a20b838660e 100644 GIT binary patch delta 706 zcmbOi@gstFIWI340|Ns?zVzahWgB_x*%>uA_p%2uGrDhnz!l8Gn7G-5e=8GX)8toz zeT?;!D}@#^39wF<5q`|WU&~*^U&E9lXv4rTSzcIzQE0M-u<T?<5eY%T6vh<c6rmK6 zIsCPPCF~3glkGVrCpU{oaf+shr8A|7uaTI%Ohl7Wbn*p}SVqaodZNbMk~Rzs3^l?v z!YNXdb3`qfMI{*~3yACLiqwd>FvJ$sih|`tB|(k_;~LRyCJ+N5k|H^oNz9N@XtIge zL`Koc$HWxDW*bbF5RaBe*2#cH=Ol4gX=$(<Bx|HnWWX$@8mSan5UWITvVf?hs#J|Y zjZ_LwRW(w<44QJ2zlpnZ%P}x8ywn8|+?#zRN*Ni8Cm)ua!`08gz|hXXz)&2sIaA7* znfWP?_~t5E9TuLKk|4Dj3=9lKIg>Xj9%89xU|^VBtYkBJi;_F*d<F)F51W+PS=91C zDiT0M0f@*45yc>akAZ<fleH)g#O|N0t1e^E!N9<9iz7L)I5j7;xa1alQED-WQ3O`r z2T})e-z~P(vedki;-c=!mFfnp%NZCL#5b=~PiK??F;_AaNr6;KfXrgaP0Y+ITE)P? zU_IGTGeTt=NRTzJG`FC#s0763PR`HCNlh-v%+D(>Vg~7(GI_1$G7FHei$H!T0+|Um z;TA`Hd|qO1YJ7arN{~XhEx$Nya`RJ4b5iY!woLBUddA2xxk%eaD2<U(@B;%988rET Gb{qh()2Q+Q delta 655 zcmewnF)xC5IWI340|NuYr6-G0OgHk@vomUK?qv^RX7t$nfGe1VF=?|2|5hf(=E<)F z`xqN0R|+j;y2dhDM))z0U@d<Qe+^TLkPQRFWO-o;M&Zd8!m^VcMI;1;QW#T2QiM}P z=kV7GmasE0Ot$BgoZKuT#VM8|p3amau|{(8G7(KivB?)iVi~0->xmk3OW80mFw_Xw z2&YI-&Jnd_7L#O{EFi9{D^erk!Vp_jD+-nqlLR>yjB7-*nLrGLNQ%^CCNV=s;mIaq z6B)%O9}`mqn{6;zLOfa?StkP)os+~}<z>KbkgSnPkp;7uYNS%+z$~d?22J_N1`_T9 zAnRUgFfcH@<OUJCo0}v`85v6^|B#%+HGzSFp@V^eq1b%$JSk)5&EI6XSa^!E85kIf zazI4hWFDnMlP@b-GZl4A=2rG%oyWky@Md$AGCNCsK1e|Vh$sXR1t6jXMDQ^%Fle$C z#evu$3vRI%CFZ54-eS&4%_|ZBNpcmLgCsi{7#MDGBqtW9=42L^++r_EEe0`)z^3$r zROo_Ku%(uz=9Lr|^?*3cC8Y($pad}afx0s5G6n_);msTx>5PoaCKqUmv94rbU@)KD ztr@{P6{MOquQa!yvZ!?O2Td`?$&(GW#3##X^~-}?RRr=%5y*fdkfvK4@$q?yxvBB- lMJpzs(UM@?Jo%~CGe)k-XS8jE5*Zl<KQJJX9+RbX;sDX|pVt5Y diff --git a/backend/__pycache__/petrinet.cpython-311.pyc b/backend/__pycache__/petrinet.cpython-311.pyc index 1a800625f7cc61acce7367fb93d8f5826dfe6810..4e816769a074371c0b68ac0602573f0181a57fef 100644 GIT binary patch delta 20 bcmca5drOvkIWI340|NsClhopk+~@fKIX(p) delta 20 ccmca5drOvkIWI340|Ns?+p|R*xzF<f070DwYybcN diff --git a/backend/__pycache__/simplesimmodel.cpython-311.pyc b/backend/__pycache__/simplesimmodel.cpython-311.pyc index 2e2aa23d489d07e08be8d127421bc6e17b6dcabc..36dd67d3fec2dd972b20a2da97cca35e80cfec2d 100644 GIT binary patch delta 22 ecmaFxmGQw>M(*Xjyj%<n3=B+Ci#Kv#tpWgEpa)F= delta 22 ecmaFxmGQw>M(*Xjyj%<n3=Ef^EZWF@wF&@f2MFc> diff --git a/backend/simtest.py b/backend/simtest.py index a8c8e5a..c88e3bd 100644 --- a/backend/simtest.py +++ b/backend/simtest.py @@ -34,30 +34,18 @@ def main(): ressources.append(num_p_b+1) num_p_c = 3 ressources.append(num_p_c+1) -<<<<<<< HEAD - num_ds_a = 25 - ressources.append(num_ds_a+1) - num_ds_b = 40 - ressources.append(num_ds_b+1) - num_ds_c = 40 -======= num_ds_a = 30 ressources.append(num_ds_a+1) num_ds_b = 45 ressources.append(num_ds_b+1) num_ds_c = 45 ->>>>>>> nour ressources.append(num_ds_c+1) model_env = simpy.Environment() process = simmodel.BusinessProcess(model_env, ressources) model_env.process(simmodel.run_process(model_env, process)) -<<<<<<< HEAD - for i in range(2000): -======= for i in range(30000): ->>>>>>> nour model_env.step() print(simmodel.get_ressources(process)) diff --git a/backend/test.py b/backend/test.py index 66410b4..2ef5392 100644 --- a/backend/test.py +++ b/backend/test.py @@ -3,15 +3,9 @@ import numpy as np import dqn def test_agent(): -<<<<<<< HEAD - case = [1,0,1,0,0,0,0,0,0,0,0,0,0,0,0] - event = 3 - process = [1,4,2,2,2,4,0,2,3,3,20,20,20] -======= case = [1,1,0,1,0,0,0,0,0,0,0,0,0,0,0] event = 4 process = [0,2,1,2,0,0,3,2,3,3,7,6,0] ->>>>>>> nour state = OrderedDict() state['case'] = np.asarray(case) @@ -19,10 +13,4 @@ def test_agent(): state['process'] = np.asarray(process) print(state) -<<<<<<< HEAD print(dqn.deploy(state)) - -test_agent() -======= - print(dqn.deploy(state)) ->>>>>>> nour -- GitLab