From 7a0334c7891e5714dab59ea32be6fd3809186bf2 Mon Sep 17 00:00:00 2001 From: Anhang Li Date: Wed, 8 Nov 2023 23:48:55 -0500 Subject: [PATCH] Revert "Machine Learning Optimization Template (#238)" This reverts commit da1818a1339d88e45e867e835a91568f7fc21cf5. --- openfasoc/MLoptimization/README.md | 46 ---- openfasoc/MLoptimization/eval.py | 118 --------- openfasoc/MLoptimization/gen_spec.py | 41 ---- openfasoc/MLoptimization/image1.png | Bin 75531 -> 0 bytes openfasoc/MLoptimization/image2.png | Bin 50214 -> 0 bytes openfasoc/MLoptimization/model.py | 47 ---- openfasoc/MLoptimization/run_training.py | 286 ---------------------- openfasoc/MLoptimization/sample_spec.yaml | 100 -------- 8 files changed, 638 deletions(-) delete mode 100644 openfasoc/MLoptimization/README.md delete mode 100644 openfasoc/MLoptimization/eval.py delete mode 100755 openfasoc/MLoptimization/gen_spec.py delete mode 100644 openfasoc/MLoptimization/image1.png delete mode 100644 openfasoc/MLoptimization/image2.png delete mode 100644 openfasoc/MLoptimization/model.py delete mode 100644 openfasoc/MLoptimization/run_training.py delete mode 100644 openfasoc/MLoptimization/sample_spec.yaml diff --git a/openfasoc/MLoptimization/README.md b/openfasoc/MLoptimization/README.md deleted file mode 100644 index 7e661dbc3..000000000 --- a/openfasoc/MLoptimization/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# Machine Learning Optimization -Code for reinforcement learning loop with openfasoc generators for optimizing metrics - -## Code Setup -The code is setup as follows: - -The top level directory contains two sub-directories: -* model.py: top level RL script, used to set hyperparameters and run training -* run_training.py: contains all OpenAI Gym environments. These function as the agent in the RL loop and contain information about parameter space, valid action steps and reward. -* eval.py: contains all of the code for evaluation -* gen_spec.py: contains all of the random specification generation - -## Training -Make sure that you have OpenAI Gym and Ray installed. To do this, run the following command: - -To generate the design specifications that the agent trains on, run: -``` -python3.10 gen_specs.py -``` -The result is a yaml file dumped to the ../generators/gdsfactory-gen/. - -To train the agent, open ipython from the top level directory and then: -``` -python3.10 model.py -``` -The training checkpoints will be saved in your home directory under ray\_results. Tensorboard can be used to load reward and loss plots using the command: - -``` -tensorboard --logdir path/to/checkpoint -``` - -## Validation -The evaluation script takes the trained agent and gives it new specs that the agent has never seen before. To generate new design specs, run the gen_specs.py file again with your desired number of specs to validate on. To run validation: - -``` -python3.10 eval.py -``` - -The evaluation result will be saved to the ../generators/gdsfactory-gen/. - -## Results -Please note that results vary greatly based on random seed and spec generation (both for testing and validation). An example spec file is provided that was used to generate the results below. - -

- -

diff --git a/openfasoc/MLoptimization/eval.py b/openfasoc/MLoptimization/eval.py deleted file mode 100644 index cb617e57a..000000000 --- a/openfasoc/MLoptimization/eval.py +++ /dev/null @@ -1,118 +0,0 @@ -#training import -import numpy as np -import gym -import ray -import ray.tune as tune -from ray.rllib.algorithms.ppo import PPO -from run_training import Envir -from ../generators/gdsfactory-gen/sky130_nist_tapeout import single_build_and_simulation -import pickle -import yaml -from pathlib import Path -import argparse - -def unlookup(norm_spec, goal_spec): - spec = -1*np.multiply((norm_spec+1), goal_spec)/(norm_spec-1) - return spec - -specs = yaml.safe_load(Path('newnew_eval_3.yaml').read_text()) - -# -#training set up -env_config = { - "generalize":True, - "num_valid":2, - "save_specs":False, - "inputspec":specs, - "run_valid":True, - "horizon":25, - } - -config_eval = { - #"sample_batch_size": 200, - "env": Envir, - "env_config":{ - "generalize":True, - "num_valid":2, - "save_specs":False, - "inputspec":specs, - "run_valid":True, - "horizon":25, - }, - } - -parser = argparse.ArgumentParser() -parser.add_argument('--checkpoint_dir', '-cpd', type=str) -args = parser.parse_args() -env = Envir(env_config=env_config) - -agent = PPO.from_checkpoint("/home/wentian/ray_results/brandnewBound_1/PPO_Envir_7fc09_00000_0_2023-08-18_20-40-42/checkpoint_000015") - - - -norm_spec_ref = env.global_g -spec_num = len(env.specs) - - -rollouts = [] -next_states = [] -obs_reached = [] -obs_nreached = [] -action_array = [] -action_arr_comp = [] -rollout_steps = 0 -reached_spec = 0 -f = open("newnewnew_eval__3.txt", "a") - -while rollout_steps < 100: - rollout_num = [] - state, info = env.reset() - - done = False - truncated = False - reward_total = 0.0 - steps=0 - f.write('new----------------------------------------') - while not done and not truncated: - action = agent.compute_single_action(state) - action_array.append(action) - - next_state, reward, done, truncated, info = env.step(action) - f.write(str(action)+'\n') - f.write(str(reward)+'\n') - f.write(str(done)+'n') - print(next_state) - print(action) - print(reward) - print(done) - reward_total += reward - - rollout_num.append(reward) - next_states.append(next_state) - - state = next_state - - norm_ideal_spec = state[spec_num:spec_num+spec_num] - ideal_spec = unlookup(norm_ideal_spec, norm_spec_ref) - if done == True: - reached_spec += 1 - obs_reached.append(ideal_spec) - action_arr_comp.append(action_array) - action_array = [] - pickle.dump(action_arr_comp, open("action_arr_test", "wb")) - else: - obs_nreached.append(ideal_spec) #save unreached observation - action_array=[] - f.write('done----------------------------------------') - rollouts.append(rollout_num) - print("Episode reward", reward_total) - rollout_steps+=1 - #if out is not None: - #pickle.dump(rollouts, open(str(out)+'reward', "wb")) - pickle.dump(obs_reached, open("opamp_obs_reached_test","wb")) - pickle.dump(obs_nreached, open("opamp_obs_nreached_test","wb")) - - f.write("Specs reached: " + str(reached_spec) + "/" + str(len(obs_nreached))) - print("Specs reached: " + str(reached_spec) + "/" + str(len(obs_nreached))) - -print("Num specs reached: " + str(reached_spec) + "/" + str(1)) \ No newline at end of file diff --git a/openfasoc/MLoptimization/gen_spec.py b/openfasoc/MLoptimization/gen_spec.py deleted file mode 100755 index 60c5023f2..000000000 --- a/openfasoc/MLoptimization/gen_spec.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env python3 -## Generate the design specifications and then save to a pickle file - -import numpy as np -import random -import yaml -import os -import argparse - -def gen_data(env, num_specs): - - specs_range = { - "gain_min" : [float(1000338000.0), float(3000338000.0)], - "FOM" : [float(5*10**11), float(5*10**11)] - } - specs_range_vals = list(specs_range.values()) - specs_valid = [] - for spec in specs_range_vals: - if isinstance(spec[0],int): - list_val = [random.randint(int(spec[0]),int(spec[1])) for x in range(0,num_specs)] - else: - list_val = [random.uniform(float(spec[0]),float(spec[1])) for x in range(0,num_specs)] - specs_valid.append(tuple(list_val)) - i=0 - for key,value in specs_range.items(): - specs_range[key] = specs_valid[i] - i+=1 - - output = str(specs_range) - with open(env, 'w') as f: - f.write(output.replace('(','[').replace(')',']').replace(',',',\n')) - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('--num_specs', type=str) - args = parser.parse_args() - - gen_data("newnew_eval_3.yaml", int(50)) - -if __name__=="__main__": - main() \ No newline at end of file diff --git a/openfasoc/MLoptimization/image1.png b/openfasoc/MLoptimization/image1.png deleted file mode 100644 index b94630ef7ad88bd814ccd718743b42f3701db562..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75531 zcmZ_0WmH^G_BBihgeD0dAh^3b1b26r;O;aYEJ%>x?(QDk-Q8USje8T^o+k5~`Omy- zy?p4q`qEvu?zvT`_St(^hbYL2BfQ6c4+RBj=d#=%ffgiw+qf+}vh$LVmMxN~(ckw59A>vfDr+HQoH`aa80AOqk76oe$8 z^KKp`{o@irmlC?)COj-!Nl66=YX!`+`GxHI*-zVU$cJKRwX6ShY_NPenyRi=2bW~h zRJywEj;C{XGTMs7L1aLw}eE;WwCQb16KX3k?!xHQaF%i@MBldq6dTlpNpK^Sm%ED zfA#RSjjBIP|I=%dC=^JCOku?AdjIDxJ45m#{}Z0S(eMo;-0Wp0Vf;q&zjrA|>-F(} zFJcVyh9UvWcM8Yhzd{UY!|=f9Z%hAa_x~r90=DXbSrrv>)z#H`_4R6&mX@U4+}c1# z$G-Z)?*8iw@6FCPya_R}vAF}<*s^ccv)plu}^ z=?31)z5fcYfVgdClpk_Vmnh`B%Mw_yuf{b*7b1qf6a-17f59LAq+*7_;SC{0lMjUX**u35r2n- zU#5V~Wb9KdxgtS9`X^c(Kf2QA>BtiGrH9}->uf>CF+63i#renurlAkX`M<)IwM{f> z!j@qAo`H%gn&9PjfZ3@3nvr}A{L2Z`i5a@aCPY}m_)~bAy%wD^V0C!gP&tUy~7=uK>l9owZn6R=HEX8J! zx`abX6lhNFbD6p^SfW}A@`b}!umJ_}{UJJ-DU9@d+$LD~;!sYyGWE@NrC#*HXP5 zNRUj1V#t6;UUSS&R_mBvjpD4G?(>H2j{^q^?Fe)si~@xrE=IM zq}n!1O6JDHqmdUO?U?aDXnMW$bF>qYh)2XFvzQG-COq5M=x8+ptN+jVXr`^IO${4b z9^FjpC@n3WV@2e`{o+*gZV%USl*tYY4SC|IqD4+GZb8rIt8K@V3j$PiXI29)2j-lf?faf|`@wElCWR|HKvs7ay zkHv1Cr1R|{|4>{Kn<%IM;rgUhkO$@g8D6eU?-`tUs2uXLvs`Djle+O(U`az%AV>S8 zzWaXz^ecidy)^Au1Munos@h}(gX`hACjMg#EuP`vvupch`gDhn&zv0UFUO~=g^^^l zjAA2Dn&bG?{qfOUX`<(m_C^eqasg#k?RP?o#IGlNpoODLRd zYG2msq!0pW@@4a6?UQmBQ5a7i)7=X0hzKK7JHj+l|wRvs_Aaz0~3 zHoIar^~p*ilPn28t8T$>>u{V!%?T8Foej;(Dz=IdhtZG2kf!X7 zQ6uvQMxu!()h4h{@vu||*JR$IQzVGH5O5z&{p}9w8*zH6oVL4cT#MgbJyUHq)sC5r^oqn?Lv!M4d5&V<}8!H?wGVWQI^OQ2f!a_6<& zP6XWONQcCnicpEminNPh!+;%s@o?-p%kAh(pxo*}qmSp!79dY3YXn7FK%mnAI_M*K zk_^m^_G1aRz|Z^X{!Zo;@Wupd>~yV#CP6nP;=2Xvpj&5eaZypxLHI2SJPf<-YLQVi ztC4O>5R?(HClGOe__1fokKXrB(l5`>`6*vxG{8oTHTu(o zr3>;HX%QxuVgcb6{Y_pGk(ax5%U2OnS1T^KseFiA9orzLr9bn{rzkdT_^}gKH{+BbdPpIQfe2*;kPG`Ne`kzCO{eS~3Rm}=X`+Bm+V>kTlmxUNGUY{bPz z)lHl9hUlbU*iwMKtrGVSxL<3;6Fu-b@Zz*jI+U)Thn)98ggPkIO#2--!yW zVSf~4EN_n;aRH*W;rwTMV2TsMIv#8V*LLl25XSrJ3sFv~RnTeDFjRObX6W4I@ibg> zY1Vnft1PG;JtMnjNLa*`9a#HIpDX`OmXn8oJRsIjJF6?iJ9us~XnEeNILI94Qqs|( z<^A?23Qdkv@U-=E{M~|-z&Vol`CBZ0@798096rxR&m9`QDN&8GsFH)X1h?ODT~{4| z$5jKvHVtdn7_CM8Cc~fZmL|Nf6TI+D{Hr4~Jo< zMn}eCtDgFYhkE1_iu;t~b-)vBi8h{SPk$gcIcW*_?7%8L=DTc8mgy!CqUp3BH?*jB zq|YK}>=lqUJ3C7XrgaTy=hy~v&k{}WT!y9jJl}yYB7Jn8A39#N9o?Q!?0jNx+RnUE z8txBEE9Z~yUNe5jZ65=Od*d!54LD3yZU0+nO^n`vB&y?ahrwhlg^k(c+FG;PI0V<{ z@d9|-v^Tuj<&T!M>b4!8qWADY?^Y27zPW9Jmsb!0uIO({-~ z^zHk161FZCmW(&Y8zdtxw6P}Ki9;R*t>UJLsl{!szi0Y6rsQ9dK)IiQ&U`V_w*nXT!WV zt0X?pmznVzF=hBlA%Wmhy{D3T*M2Os{kF%&0Y37V3xbzytwC`DFBSSG5UP#Y;cPLp z^&+Dn&QFY3X0vhJySYklve$JyNH=|0_ID7j5?u$HphY)uu0mCc+Un5Kc>22}bEEw) zkn2d|YMRbL#?04uSGc5Ta58cDO}rq2&}X8{hH>@mkneSxo+CGl6Mu1{z!8Z)FvgYD zV;8m7?ZL3g?!pVa(Bu=pvb#nuU+Jw?A7`i7T?}TL4VT~4?$`_B&n?evce^nBi%&|` zE9d<^zh3niEljh0<}Ob7H99gP&EuNs36`AG)%CvHL1=b7$WJ`H5yy8I+0ZOW$~P!K zcb_Scy+@b566XV>kQIpIIjiKzi9c@kRwJCH#B_aAb{X@nZP_X;`9QDC<6V$iZKy1reuEcj4x zOf+fgYQ4nJZZzp&oM@0D(RoOCKOEZatc%_ZXLxzk+JY}+5AtM}iHeYUJ*v_%H;7Q#A-wL)%tyr74G#m;mwsqtawMtO!Kk9jF9mQGPYJ_2OkR+n$Z)(Lk~Fuv&z zb@dmF3782JJ`3z#cH4Z|iMVqee17|2BJmsfAY+Z!0ChvJMUVPMeVC;*GkVR#b;Kj` zTjeJg2J8BfDBfF~*h=%7t-irri)N)0Bb<}I6%eOPq1XMN=*LITxtP8c_G!zf1M8c{ zHeICWn42}%%#_lOrxUv)-h=t_)JMo%jT@nFk!eA=F!m4>?9!%x>oYVxt+d7m1W9N% z*rt2$dRKmJQR@%G%I*F0u<_EqIT7;iawhY+Hl@!iv^Ht>zC|2HEy5+>(pCy{T zmHW$fdF1K3M!h2SwYtRFY1`bVh;v2*Y@a=rg0qY@kCJQP*eTl=fs?tw#O*?t*UU?} z4d~s$0oz&KsWo{RfS3cUkn^gv-ac=etk1iH2dl+Vt82M{sAv>F z;CT3)I9Bcbb$p(#gaR0RKWE;Jnt}ez$g6KO1rd02616ay(5^$Tt+$98T`j?lO3 zkxTQp|PzzY(pH(-*eYrcP zJiVm&6S8id%TZ~TEokiSfQt21GDD9kYnhT|O3pw2xOwZ`wLoD`%QbHLyS@W~VMzYu z72gVop#;l!j@%?#?S^%?3OQp5AqsukuAcCuCQ5=`dvAQ^+s5oVqEkMTCLnH=8pL-8 zXEv5X2B`zCs(P`fm`RpfrBSM?_COZ0`j&WCj0!;UY`0+|}Die}q+=tBCI8TI!ugz;B?wZ?WK zVaL2mVmCN=@T2!^yb48XTY>NKH`38*C_}pjd_L@NfzM^K z!6ccoE0!y=r>Q#f?en0^`*Jc$jx^m=CBFruTs#A>C+@TCUuW!2yWw6>#hD&~% z_!S3@zdG;I(48^PG-$1)=8MQ?uzrsg5FayxPY&P=?BkNq#pc&mqLEnc4A{Uqx_pD1Pd3s`;N&M?UUhDJIubmRv$&| z_EzOB*9ms&j1PZ-J3xTED_zyq86aacIo9h2J6+HQ2OW?E01kDLe!pq`|cmiM*APp)9T4>Thl*w&yvgfV#!UJ0~-0&5Q9uoo$B#2Kef6XFJ>cE%7k6G zcox$wv)Ko*Ztj6bPVlg1Hvzw^AHxnF3!-hrPAAofDa`CL%41LcR{aJ`(3 z)8Ow4cvD&NrbJ`ur{_ivOGyU}n$`UiPza>K$oLQ{rNr5|I?@ie_dJ|qT>*^>rM194 zjnTkwm!cOb*5m~+*foJ_gZW0l{~dx-IoXNlp>pQ53;ep^t{|W6wIFlI`v!FF&W|%( z%rWd`dHyEN3#mF2%j5(koabRy;g{q$JsqweVXC{4t^uubU;0J+JuDJOBC*ikk%v4# zJy^x>MzL5$65z8)o2JH6$jjyZkk}ir-D7)GB1Bu(D-8X|IsYimcz0)aD0rPDP6Mp@ zgTm)`>)3&-N2{X)t%Knn(fCt{on7RUt)17;NRpgSp`oE@v3U0><4M+b3$qwcA(1T{ z8=lHfd5qe3Zr00djIC}IHt$W1Jcm+<8?0qwnT*b!+kg*#D{SG&Y8mV9ZK{q#hG>H# z+T3a1)2B<6nhclG57~{WLYbMKk=Wi%b0L97p}jxKMsUX^^R3exV_?B!@v7*hxD+Za zL~KyRc;xaB-M8gWq&9Q3*O3rz7M#1-C&mmBLBss!tT0b&$Btt}2!2pu7v*g5m%gI^ zOUOmJ^tV(%Cw8fVY^JDL`%h1 zMG5kyPLQ0Clx_=hnj5++MxL}%;`XqU#Ch(q3@9IST1B2=4Epy^w_BMoLdoqc)_AM#lqIwUy7SB7Vx=g8xQ>Bwqu zoJt`2NH;+fO(YI5EsgV!$eg*BWJYJ<3V-at5VlxE&}05IGcYW=@78@3_PfnNtvL6t zx531Br-zd(T;F;j$d$E;GPhboG~E}2kOi$Qx&yq%(8H+Yc2fUV>HCZT(h)w^*f#LD zA&XqO8Nz;>os|I4!Qklg-BZ4gpwHLcXjF=P2dotX`gQI@fD!XW+-xMc3bFA?4N4-F0ZIw|^3)DNN*!R-XA zs8d6~D)}}fTWvo$7q4-Yg1B2LPfM3h?bL(LvaD#iAL;&l_#4!$P(moK_bC!|ziYge z#z5NAgZYKdwcd}74QeNUw70Oe7uH?wSJrkh_j{|y?0jASA>B8B0eU5gYk7&J zn*z|O2UkdxG$>;-H@<&&aRy4ROHX4&gEst<5kni)?O{?vzNdDl!lx1ZLnBT~LB5~w zg(xD~4Gm?$WD>3Stkm7THuYfVO#)#%Q4`d-7n_WgmIG{44;FzkU^&ELw`Zx8T>O=o znzUW?Xfk+G7>SJ&89WY*AQ20jj31BSyEnhvCU{xQLX zDf4xF=KWC&51b*H^(VTbPj{4fCa zxkNk+$$Nt_Zh{IkzDcQv8>+Ia*)@ZQX-rO*>z4bu_R?~tW5^>vV61GmcKp6^PTJ}P zGeX_j{!4@LWf$ulU2-A;MW~#B_+O|{@o$;UA_DR~NqLCKXqm`R6Y%21@lozFUr^v_ z$jNHs$5?|>50X6N6N=Js<2)nakS~&Lh90b2@Fu*qQ6V9+iG)N5>4A`=>@%i(9wLf) z84@zF1k6D7ALCZpmO%FQo|Ef84IADq^i6jeH?0&O>$t#=mlH?#XP#!F^fbs~heDtt z$2nE?p#ex0!6?%68R17=m!>v^7rX-QrMtcdA)*d_xh#{2x2?{N!r=Sc6R`4RF~o^^sb2UEx1_ZMg%O`a#)OSjpn7*#1D z|9N$fkAg299u{ADLj zS%q6v5Dk#MSY;H1`fd>JL1Wi-yFc7A(6szKCI&T`&#SotE5bb`{|C|A+Qg2fR}I2ubJ*aG(#rM{PJbp?@a@XRvl_m~G1FJI*t#tOuRn^fgwBrF znMdY4*YoYRGq39@?+$~{U8wbPtt4BVQGeK!4Mgjt#a}Tit8YoTep#5Sf4``SH}XqZFGM0E!`#4uHFRt%FMsSM7Tc?z0A* zLYiW?J6@j7Xo&jqhVEC*N9o&d4IxTKq~~=_rYtR7i0S*S9(Dk+2y8VAp}FnBThiEP z!7ugJOT;%DJ{=hZs2&hzXc)8o9F{E<$3pgP1iktX_};dg_0k*oazf*c_cy_Y1^deK zymfE*kQHcVv6zh|{8Xy(WSMO^3K=beG0EYRhU{7|#55c2vtzVs7xM-EeY)W(Soh(K z`X$J?3A--58Q0B&j)Ym{Hn1)sSlm_XtFyA37Na}azh|}}6skD`YpgGA@c~YatE#F9 zF;k>=)r2`^5JGI{FJe8JdX64kTO@snH+gpP_B=Ksn5l1v@Gc|Zosp~0!;r#vPUWZO zCp5Yz(Fgbg){SxYrjC=xJiVtwb=8$1`K`A|JXy<@r&g`{y9M?HI5e|dv(NnzR@N;R zWH$U-Lzff$dS?_y`>%z&caB9kCSdRPeb;T)DsY7EKB6ft1QmugeG7ZUNdf%jAG+Gc z|9f(yJCdpKoRHxm3HB<$jM*SSr8<)GLSWtRy|~{K7jeRn^Gqu>D?g706NBM3xx`zc zK(WhsbzQ}mrmZc*HF3OPQa(2b6OxT80nH}E9UO?7^XTUOZ!bWO?*TRh7*-?2G#m81 zBMU&r4kqYDyQIPvhZbV2%aP5&&qHzK4#1>CH-0-q>&1E6xLu1sFe5%%8A~oZZ4?OG zJ?73dl6wH2=7fgX)Nxrd`9k%}aM$L6&wf+j31A_O?%Bh4xOr_~gt|c7f5b$OsGj7B z9NZJ|7H9$6@V+)e?Q`y*O9j|)j_r?^ynKnZLogI;uQ7-QfBPo}<&ob}q=Sh~C0OmF zh)5!bM5fv=BNAd}g^{N@;cfa=_0@XiqoJv`xqG8r@gHwnu@qTnm;)l7qB!^*c^(!` z6&pMYd9O8lIbaO7dP5FfIUqbc0+jFI)<}?8Og&-cZMWtm;tJ(F{svuVkPWiJAdRWl zy#?8NVz1aslmHYl;?z$}3EaNZYztWUzz|G7v(Y`&Of}ZIi|+)dHxT8poG&%5-Rq&` zV0qbO1;SIJd8Z&?%isIWr-X>6sh}?UZy2}o-d~KeOzeNI_KT!gIET<(6!l&ZB6^`+ zh!TsT(JN0Il2Ah9799VR#z#lfWyq1{Xh@QRN@Dx@NCGZO#0Z(_3@yc2hTh_Y6P;NH z@qE6kxpz>)dXe!0kT3T~djH9_tbQI8=gUEImKcC=d<=6^UfVbuQSzQ!XxQ#y^U*Fu zmB>)R$a{hM$Zx{tXCz9aBW~+7GN-?1Nvn0)p>C-76;GnRY{Ky?_(g`k^{zLExiIJ* zgIa(YojiVlC=(dW`cGP>V=4KK4h&7MFr7T8)fkibH`hNl8LS1FVT=Tk;h_z61Vk=e zWytG`ZDIHl8-*Wv^EUj#)*UB!foskS#rC7Nov*3ZnqI< z!F>QI?1v zKI%*VM|va~4BEzBh@w*2Ebz)9%?eaP;-M}{;9ci{u&wPuwM-C9U0?;>H(7#eEewSf zi&MJ+;}kvg{X$gXvzOU4v?Mtr-O>%J4b3(Ja3yYwFF{stK*|lXidXgB5?B+VMukD8WrVuuf?JXOsfh>p-o8ob? z9UNa-bca3mX{E>xmX26Ub~#6u1ff>cTZC1$7EUlg|6D&vCWZ#(l3a^X2`yR~Ii{zH zkQo_uw4`CpCDoEM1Q0~4U$V!e#);(hD=WRRxE6lWDWt?m*yW9cI`EC7u3Do!jO~SG z*=9Rbu~nJCtt8whc@mMY%+MNLJH&HOhMt>9DQR)(4u0&sx|4?BFDeGs$hD4BqL{^Y zw#rf(a%_BaR>RqNH5Fg!vwlm2qSbNLS5KHmALypn4LGdwm_~fWUv@}mQI?qP52$qPFTg!4#WX7T>lh!Mk_?`9^T!a6InxFt8Tf>M_N z_0oKpVcrz06RQEtWQz3j`l1Vo{YAaf9Ph06wLyZoho$k%ecT~<%S+nXd*uwojQ;Jb z9nL9QYeXJr6%Xp4M~#1QLxMPzp#;+yNoI&XLb00@@A|bu^;#rE2 z0+s!J_}M?!F>_2nFI&RJ1gM5I{R6{?^D4wkUODPi3Cfi|XAcToU&LUD0SwV?rgh}+ zV&xK1QF?op-+|vrok=_vYz$MvUhUpblPGg70EWU zAry)Eh%4JRY$zm^8DRoI-9~?oP5p0?Afv~YfBQr>0Z!jwmg%Zw$m64g6PkV|8dndx z1{(vbzBzO!>kM=dK>ND&=Bw7&>=I7gs07U5?IXP@JNu7Z{{<8JBtfIUF3b~x#}juj zJ8pkiuQjukO|mKQU4+OFLX?{o0dC2*SEUw$j2Z?b@VG&>Gjg#EUI)^D9W=(|R-8@o zQL-dyV?-G)VOI-*;*QIf4Z<{X_}d~EoxbL>>%UBGHQd+_z0-7*IMAtVKti!qJTVW` zgH+AEySGX8O!z)$sD#Fw#IZg-fmYz_k7*^!9MO;55Z8li%l0;XgoSkEfXbfDI{K~R zS6E*cXX-SHMl;S3XwMBJZchLrj zmyACFGLuH+eeRX-AZ|7KSHy`6AO(QU$Y%Ka=O42h?l)O&@^(U3ehC_1TSuFW5F3V& zyU$WaZ%1M#GYZ1wNLoM_hv~(Bs2*MYeQQTKv(3xGd(2tR>7Cr9{_2$p>$Q4fPE599 zK1q1wD?m_9EL*e6o2I-lDx<3>OFfw} zFY!|MjZ;?*;khpw3}yJKq8|F^hywLgR{xsVaqnmAMc^Q4h&WM~nps~Uwvr-(EOWb( zoMZk6l0-ifAAJiWt!%r~K-ExGK2N88K-l@xfRR)ZVha-={`Tko27>x%Qx%D4yhSf3 z;L=CNmO-M|QSxId7=r*;sUpG@&SyMHO;#nQ%_*o@5T*H(tC&o7;mcdq(>F-CJ==uDeJ5ex^ z`}4OKJ@sYVzY_s_2#UsfrhlzK3NEdrR#v1p8R3rwT{Ss5If4pSms&Dsl;bUS8|@;D z*5Ab4%PWEfTArM7F18Bpv+nZMqZv0$*O%(QlyW zMv2uc$C$bBFxK0wkVE7+zO5iwn;H3g|ATgA9#6vf?Ado8KR_EC;{=@i+hlyvfgbk^ds@0`T>5-*bXT7!y) zMwvira0Nm@P(!LE1EEEuYkCAzji1p{?MOK6wApjD+(sv<2~2Xvslb~p<9N-ywlc5f zlPK7n;NsNpcz(|FWs2QJ1vV?T#$dvtDep&m;Xm!PI+VV1B78|Ox8Gq0&etWhif*6Y z2%pzZ8&p~EywQ)PoUvX^IR-*am3?d&GmAw}#~2Xyb%1&JD2|i3 zX?_a(oGM4Kc&BD@Y z_iP&X#H7_AG)JR+HL@u(;M?gc%?yFK~`kLegAT4J)Cjc8}%+?d%@zD^~Xw#RYVu| zac;5*c143U<_bRy3QiUA<*UL>4EHBz_;&iKMx)~;k)n`TUPe~jbO7Gccjw25kNgo4 zk$v;MEZ!CKJZI4)yL7ee&?jm}L!EWWsO0B~y5A%#T28-UaoFl8WR#=GEWYw#o{%~r zA(}*dc*5t|vFQ;!!nQ#cy?LvJ%J!T*;VI_t#+X`5-uhXb^e%@QnKd>u zTCD@5`YU_3KND<(VUhDjN$8p{$O^;jgw-&HL#F?e@~BC`wzU1=zi#8z%!Wt&irxQWrD5j)!$M}$H5 zOo24kizlFXq6aHnVef>kPa+HCUCP`6|acTVPd0pVf zm$|Wv&>>1__TA6&VRZxeXzpOiXx+A)Pa3VtaC)0yVD!raKfEF$vAQl*7ep-#vWOWD zyI#ThTajjcAe^)f$+w_sg1e3WbG)Qn(YW>VT|>Z^q>ge0B>oYril%}tc9yp;mP%MY zi$c?kPh^<*1=j-MXx*T1o@O0wfghuhMM;Qg)u1~OWPi@k=j6>=r|Mh{}){ z+nyyV3Zi`aB@}aS(7wlu(qxs9B6{U}$TU-IC$(4pV#1fbOGs)wC%1fsMaxhFl2M`QnxNhCh;nYXKmN>9o$ zHYtjy7Mk>zoS^`b>BuMysdorJgUOMu-S|&fM4-kfcAXRaJQrFJ?`>WBJ$4r2uwZ12 zhCBwh3zwZ7AM{gY4LMU~(>^Pb`4J*1LedH_Gcay=tAKK)5!_)bCx8v7ZH!>G~L{_mT-QMaE~*&A>Q$ z%lqBOq@^hVREamgL4tA~Vx-%oY~J{TWWMNPpOvn1bJt1ETz64|V?|j(VP=EIo@L9o zKO=ej8JyksI9JRDOxg?AbN)i(uc(k68F*Lqm--?{1H$ntd`WRcPUa?r&KGcW3ld-P zOUzk_{AV-2TdY7=SOKTX2Y+`YIM$c1w&f#W?PZwM*Im!<_vIuaB@C+?Uo?1JZn^62CtSg5U|*^dV8)50+pyyI|5pdz`4Wb=IZ43C z^bGj3m&sP3%;#xVotXOVZWW;|9Bys|caU0L_Y=$(e-B3MGTs_^iyfYuj4tZ|qZmdY zo>{hNc0^I&xcs}zPJ~dE-!qj23ObC&!we|=z6><0b+HlXWeP1^4^6Ii3pcRhVEk9) zw})X4eBA^ixHOD_1;35g!4yoQ)zi4kpgX{)z4og28nx_m(tdf)cOIqDH%>7X?U@Zwu$5Z*x_U-4LrS5q{;Hy zX%fq3_}4Ix0w2$>!q5WQ17_sc#!-G<47hd4Cxt<$a)=iPeO4}DE5z@Bo7QGp>Ly46 z?MEqIFS$v(J~lXNd=a@x8+8p{0i`>^M0|R4Q^lhMvvTN$AI!suG7kz1AkFzfDnTJP zy@jM$fBCDABL=#d#UN8gYNn0egK-8C!Z$__#pb5@qEUz~XE#n1@}5swqH20S-zmay zEeKt}c?I~tY;Z!ei+yG><{&(Hu9*;v#ab1dlu&|8{8$@jzAJhBvVJ4xJt#+wGr+Fw zA%j1OpDC-hw5JlQ^>SkN-pg(P#a#JSTBUjvw+9CNYLlRY$p#S(3$rclg?)n%hgj8M z1j*r$t%!!1)ze-AK-Ao?xPn!8v)X0&E)kyN@bjD@&|?zA#20DOvbULx8yq)}-Z~3H zoxw!v;XbE*nBt{JqZxR2*egkaqvsx+2YHk}G}zLP=v5m5vB{&6crEL}p&)z=`K6;&F;Q6w@>c}{6e0mGnevkRb>>Qsf8>^xKjCi0id~KGYM+1_I zHLF0!HMszw$7DajyzGh2qo9z7c@W>ZFC{E04U|DiEgT#Y3jVn{wb^K}O#H=m>NnfU zjVt8fSmb^jP|QUb&b#8$&vpqE@y5@z;!+MuOJF0iWEHT-fMJzOdHX#ChH0*5PUVV< zg@4&E5tvBRsegRBV1d|)zeC2Z8dMXRobPYV#5RxtyaCUV4Em}jk%iM&!emVmOCxOY zNs`rK{~=^O7W~@6G$5ns2RxA?js{YGB5*EI2_Z9+%fWW-dUI>4U&>N81tQd8zbSSiU4xoJX3TD%Zz=l;QRS_&;16X&T|jS2B=_XgIE~mMKM2xU&VSQb4r3@ zGo#`7w4j}+q^nnZUX`H1BhqJZfPFv9pX_HmHlJr*hWN9)eAFCB;{1y6st z*5DB#6R5NAmU+lgYTt-0o#CmcxLteqI`Iq;ER zksJamjmN&ITDqPp*qC69gQFyK2B-?q84VL9i85Bzz&#n4+}UBL{x6waFxIPNk^DGz z$=tCGaqr(4zpwlTO~ugm=}t|EI$3AlEO3w+9D@F%nU-Y)8i`g?8Uy~(#H%{_y}`yV z!09t&Zn}Ke&To&q>c*hk`I$}w>M}tZ4xC1aiA^WDYwF5mj+<*yAE7zYi>`XxKhmen z5N|+a|Hg#8G62p*#~i0CPwwgZwh7yxTz82PB(w%~I)#n+XkHW)b8-yX$ifMY_ji5TtnZWDm`<18sdsOXRF#bn zJLS*LKD9-a`;wza^Sy8%-`Ar=XR!D)K-2wh5dDDEZ z^s|qaxV~~B-{n87+}VVqwY?g2JbtfLcbIm_9P&$ofnXJ*Iu$|3OC%WQO>zfhN#S0&yDgtrvjz#@a>#Zb%ThD>S;_Hn+MKuv;8QkA;N`UUO6jF&U)eSU(z#7tgJ-y;Q2rkj$zd^Xj_6S~qJn4&tv@9%VgE8R@0F zK#CAp5Q1_y^!--<8JhgOf6zn+F}n_=!5!gc`~FO8d!VvjnFzw?<=dI*d`x=vi{Mso z-gC0cI&hcb;r5@af3Ia>eZ| zbwQo|Y^jWtmBRcp+Z^03xsq>`5k2SV0<0b-(7^PDE`~1mexw74AtCzWnT#=LE?4C9 z-8*QyP@Dj3$t=&BZi70q!Y%G&3h?>%l8l2}J%qN8EkT@5rxjK_OPE-nIrN4|I48an zgEknrsFf8l#I-Jq4{rBp0ML*MN^GC>nwSK^^l_g6oMc~@&Oct_3Q97Kwj1=-Hrjbi z#%huN+;^+UIae^U{1nmBqvNfU_yyWU+Bh=1a6-^mxH3xS@9@7#u%ZJ(ehSZ;e&uvk zfOOwpasT;3&78;R0^9QVcYP}lM5L#^vQ4eA4X#OtNagdq`Q4?*kG%4pvla(^dv%A-U7lApe;~&>E0c zBDV^Pm<=OTkgwcye7mwVKb8>)z|C~OS4IW&|GCZ;r3oz@F=5Vkm{8An-i(N5jhb+ zJ8~6YsP^XaC?gSNiKH9Ef2$GLVQiCafjGy&95rcSR3Pe{K$lpSs23qYCdBs#_T&xu z3338es!K(5+VYoT+-1FHn`NpVJuOPIT(}WmeBZdhc7;&K3kbIba#K5^)V*ApL)$J2FSrfv~xoEt~wwiNw6bW>vWZBO;{_NRtd$RoQUXth$2)b{oACF z|ENs$yi?NAO~fnb|4Pp1zk~Kezns|WBX-@uidbuS#O zTR2Qo&(10ifPQsT-cMgCEw(8{;9#(3vl&p; zE!E74#P_}DiH~1KA`AVks;*9g&K9qDpYzsPNpV&FTjdJ%lbUT*`9N6W@geeBF_;e* z<=G&n@MLVq);8Sc-(G;!d{4cmd#~z=5EE$xa=QhTeJB8FtdKDw$l+Kc8UbhaxQ#+4 z>p?z)mP;lpS>K4gFhjPRMUr}3gac6z$j=Q`yDlo8MM4zS-lHqtTyj0B&KiTB&GyaRFSq*{a#* zNq+2(k+5e?#Tj8AK5c8+IoV#P7j^Hl)>Wd`G+3&om7vW_Xiv6REz3%bzDBKv=PF0w zQ|K#gkhV3i(GI2`NL#1l=7CwP#FnuX(~^1G{L2yea$0P&FeBc*i{{z>NcEwz*>M~a zXtc8g!uUZonp!)C*e1`0oY)-=uMU66)3)ygH1>moiLCS94C0K$T~O0U1mi-}$sHoM zdIlXw_aJO>__PmF6^aZ5+-n{q!7_{AXI=KE7i#qss`HmiPD;WBTqEbGE2$EDT%RcV z3`!U15Z8!}|CG?5R4|Rz1^CFJfwFletN`%uuN?DSb?uhwTnjU3xGB`BftJQcyXfHQ zl1U(8H*YiM;HIv>iM~dp&XCoe7}Y4v?Dm$Hs!iwX=3S?+Fk7)|52MCk;*J@Y=0`u7 zQ&Sxm3Y;E0*5=8FYkzdu1_z$LeGt&DD)^Dr?ZEUWei zJw8sROQn8K$}wA9!AV%^QW@iY_hfvZbx>Vs8JWg+=yZS%{FfILJ@P4;HK~j@wbM~9Au)}EA*M8HrMr8uFjk+4{IVDXgbQ42IR(_hLGF%y zkN&d*XmQaDAu!~_Y?P5ioDe@nr@(uMkT9O;;Jv|$T zXQ6O;Qp0`vIH}%BDl=o9$3Qd&M-^V3;i)8<6*HT39n)@zI1tc&BM|?mVjSL`p=G4M z>Mf~ylSRTk&}HP1{Gs$_Wd2E;Nh$6!yLGvMjnp#atOhc@V1TeeSsG{kpzDE{T(xtLAJ(l7QoUNFQM#`JR+M z*n@nrKMdQQIGYN^{4T%fm1=?xY*F+pvIVZH>{OWeLTe`jymOLxDbmMO?GtDB_8AeD6A zdH!qaPM|{>eES7X%9&!mmCh;qCV2cvYg|{HeIPdaVeQ{p{JQ{Ff_>YKGL}KZr!P6q z^t9j5xPhS@!g2P)q+iW}}fWk`&1(P96E@Di&>ueFD^N zma%eLyz{O!x3?3|Sti<-#h!}O$z(+I!D4^to0n;W!(E16$GTMFgq}Yero*LTb{A8z zsC5Hgiklj{zy5|dXv50UR4SD{LSWBfDcO~J>7Nj#^I1(q5z-eX-HU3-A}O0-sH@3% zk9Vl8Xm(Oq5*m4I2RfJ-fH}^{l^x6))OjP&OiAu22QAkU-nh=BZ`7SPB(&EBh-4%Z zq6F@zxiy#{CXDPa+V17888vCy&s_OiRFE!o@!8|h$&WLHW!PqqCY>f-}uRCE~ z1tVR*cr43F+Gce`w@(;ht4~bh6e9{4`LX$$1_x@n&8jmUMAwFSUHs{mzX#biI;K7? zK^5lEiNbAot&(sjEVB-ILc=h7JNJYdA&aXdXbZ-UL8vdq!fbQ`x_vFlbjA1CLk!zE zb*ab$WFW<(bFvNfs{WWG^^-)*H;}kP z4mG8>&QOI%LunD=pcZK6{Nc-RN()ot(V%rO=~;6h3t_8dRP$V1qSoYFtRXbIhe2~;va)Hv z%NXdR)*ReIpsOqgW~an7)tQJvm$kjw9THAp)Za2Y8v5pB1WFSNl=+gJBDM2r1OX!y z|6RMLwT?-ul*6W+=U>Ak-LQ$mCS{~(W&=aklsrFl$Ty`pB_Y+NwyUzV&DRw3^cC`2 z!47Uj#Z2tx04X&kW$?DuHkw|`N#ebblVF>n-cT+rd2On^T zsjfYAxqQ6}#A4NYM9Oas&f9knm=;1)u`GZoH+cm(-=`%xi*M66i33xwLycXiIOy6K z1(#q=dz>+T< zmxM=&%(;BI@wcOw!_)y(uMw#xPKEEh$TtcitD98%7yLKVH|Klq9Cs%jJ)VfpBLhu& z`_(Zt>II!`@Kq?Eup5Md4#syAZMhQA%?!@ycQ3$U{quV9`7ECQ5m%x-GeHI)M;mqo z&BWd+|-trnSUh#jjX-H(fFw75w47K{2LOMInPU2!2!oF9p(; zr$|$)eAI_K;^I?}8Znlm9O1q4>(m!JIe=!D*0mz>P4JJWzLPg9gpiJtd4dc*Y87de zq@^fAg^@0%If$Q{-szV&iwzkbgtA3gQKu1WTS*nUuPrN+UK%UmVNGS$3`tqXi)hW4 zVUnt)24#;21T!slsu>~^?{ps{B(Jb6Pblv_Yz+3lZY-;`iFvyn&@h2pD_qiE9*&T6 ztGilFUSUcosT|Sysi?~fNiPJ!W>*68raQ0N%oWqA-StHz`7ykR%<&xxSm&yVko_i* znh;t2`>dFf|G6lriBJY#`zYp+>Oh#%>2-vcJk4=Z3s>3;;X-t0bc3rJE7nI2()c<- zM^7U5f}?28LFk2RWn8$zj+bb{_VTFfb^-hi+yjEI$^H|SnbA;W?UTBt>d(o4AFAiG%v#j)iK{_S%w|Vn4e&{>7!C-wqSl`_`Df4 z_;0fMUxN0Lz<;^@NMt-pxDXsYy55tx2GdEl?;WD?-3iMRNKH!c`AC14ni|=Z30%{= z4Hso>5Boa&W&aCmSzmD97kehR2_XcHv{<0Mj1utIiIH!2N85&`pW!D#7Nn#}{)usA zps`i2Q_#+qPyLnj-Z?Wcm^CvVoXOwyNBsAKfM4XVwyDD;O!U>XBYiq#0&fynBGWsa z$f_zKdT@`~s^MV1@RBPd%O=Y#MgNK<-`vG>+mT2YgWg5Uv0|R?DQ4)c!k$@!HV!Vx z^dQFgw^`6#Zy%jjKh#sT$!ev3OB!9E5zmF4wbJYhz9YgnTcih0B-m1-NdDT2hF|?W zRUjn%_LNFAc=bFfN1ywcyR!60pWo#^WK5hi@x!!)yex$|``+g1pYWK>j=1KTI1|pI z-rgf@3)R!C0W7INaBH{@&1fa$V`{?D$DD-ACyK)(%h6~0w4)n3&-Ln72EmoAH*a_m znb{n>U;im(zgn=`mk^BonCl{EE^H;xznUacvXrNSm;bf+__SAW^c6Rc0FM~0Lx9_t zcP{vVNF5*f{?vDq0_lSUk_}=s^XM*Z?Y5qfbi;yRtbm+H8rvM>udY9HfoY1J3R7<; zgh|JDXNBm$Iru6zX`iHa2{6KTH~H!sWjxFDFP%uz=Zxrxl(GKiyh!<|n>Vh%&)0+A zqbxctOV3wp-}`u7j`SH+;sfF8=FI0L(HQVwaCLa-s=|tS>Gy}&V(7Hv&F8EW9*4ed z7lD^=_hOD#KFyb6?sc0SRGGI4;Woa&IWWIh*efRuI0n*38aG73I* zp)d~CVT1{(`3giDD~HuOAq(Qjg2po)KpMrMUL}n=>^o^Nc`(rSL0K#&5G-rS|^o`F$Dwo%3@#U^Xjq5|o1Vu2|&uzzW6L-;& zoC1HET5kvHqAPqAA%@_U^Rc}N!~g29)+i`+c}F=CvRgw-^dH+cD&>(jwW_~hzHXqI#)pOU!)%y}|2K}E_CrpX!f zYyy}D%MdPpt*km3F^+K#W+U5nE%*%+#vc+TWs5Qs-rz9j5c`;)afwR&2NN|V(&fPg zQWJ+qcTW@jEwuDptn;O8H|68>bTF~2kxAF#i8}SlFk?}%zZ=n;*LFs8sg*dpUq+6j z>?D@3Ed^0G@xnMy&lr&>VjTm7&w6Wef-l8Hiw~bD1fo6DRe)HWgSuZN%5|<%&t)tF zyEUU!SblE}J+IPY86Hgt%Z_W8zy0lus*Cb`4jD3N5(?8LvxXph9TUsIh^7&&v2~rB z(^n+4?mYqY*aM$XNs6L&Qu`E=TvdaqO~Sv_bNh2Kl|XWkoP;2aF;ZdqI4YM8!M07+ z8FspFYZN4KiLrY8Mx5ucm;)ZA7hcqb2G(S43s#Tj&5lL>|kZ|HeJ; zh({~F0>=+tUX`>TOj&2Q{E6ghpZ1YbH`(!$?rp)aGy4e%M%B78WoYhZ*jIW!Um3#V zFQHFZM{6F8J~%js{WhaK&m9>__@pp3@DdMvLUHZ2b2@EZrf|{675sYxxwmv6Gm&%m z1@7`}Jo7>f#7|v{5I;&3w!%NicCkZf`9`#kbiu!>yp+Z$eLPMrvh$-{bixxY$TLRS zCHhfORP~M845NywVT7oJ&-vv&nKWe_3pyNjhP`gzuW45gWK)jJTg3@;nAp;6W)x|F;xS#)aGb)s12(bnLJi)w-_~B{dqBo1XS+$?-da;EEY7SO zc%dk-$9OH{!06(Pe)=P?%-5$h40pJK+0qt=9;#Lh=WJMZOykXIC_m|?0@<`Ov0H2- z#Zq-&b*_duxl@K`w8rtbWTa+ZGw@voc2U5oPH3n&FO}g{O*Y34xq-><8Bx5QInOXN zbSlQZ+sE_dL*ac)YDIjfZrG56(<)v6ZU3a7v8TZ?0Tkju2sd;@a7LeSePo_48z+4AEA^*Q)VWQChd9sEM9xVlq z0iOs4521?%;RsJa;2%@HP1{ZP$qwoM_YW@!v+Mu0BJ%i`%%v!}1R_L$Zp0lNZEMy# zEf)C?hy8i*&;m?3Q8s5+eGB&@=3A*y9=OXr;xci=FMPN^i8&QLO}NzZH3Ychey(lG zo{u;E1Md$Mo;FxXP!Firzsj$IIbG1hq_qnwu513@c`A`p27A?6+{j}W?WV3k$tmd}5<;#VkvTjw=NJudYdO_y`sfF= z#30U!6pn!dQSp8|LVttb^%?%d#4ODxA?UQ4E2woZ?cv=fh zBPv;pSOl(-4VMc^ZgkkUpjtjL4%DS}LNCvcWDg6CzZi7{E&3SFtD{b^2$t$C)Nkp) zP}EIht&Oh4DVLu$B)aikD%MGV>W6-i>8+}`WDt(5aeEo(0S?!@>+O0!F_5sSysTPc z(8S&u3d{_ev>Q={a@l52D`qk3pdP9$qpr@YoF4smUBaYAchB6}9o9KpcjoO7@D$~t z%sQ?%92dCHOb}zr!EUU8@)(6rb!M+3rtz=e)3NtjGGA|>)~|6+_|k)atVj4e*{bL% ztNL}v=$~ms(89u(BFu7ZL>03D{;)Br)u_|p_ISd3z$nnJk6k{e-Xad5HXC<@L{PlE zv}ahORjxuxj}J_a<||5!s){eR1yU=hd&z~7IEM^=ft2LBG2T#UmrBdPO53&#=zge5-rO`& zGF#QR(j1Kji_JoRHR6XQ_@)9OdeJ)GqhhFsX2f_0Gi%?ED$e!b5RvVbf!v9*N?>&Yf=JMWayck zHrox7A)+ec(EDObNg&=aE*cJHiYay7tRd9=5tT=mxJ^vm_Xz$SAq>Eb`?tG2wff!< z8>L6ng_JLuz9Bh5jzuOWa0R%!^$qAaPxd6N@rZbqLL%pJesQMjLp*|6P4~9HJi}a@G9mFed+$bA)UC=N&}bxKyusGjt1Ilq zYi|`vIDLlg4W^bFk}d`@iZA2L7#Pzv;OSti7=8)G&2Nsrnp%gt`3|%v)UZeFJG*0f zHR^l{DYGFqx(og9Tz5$jADIvzwSZq2xvnAUkkf(dJ0F=JR|1OnAj2o|(BcOqn`Vdu zs6&_DA;sK2;?Ue&tM1NJ*f;s|LlFOMWe@3)MVbNKy|_0C%O3D6qJlY76Iu4Q&S-Ye z9a-Vm);cuI-wPU-6ep*Cg#mzo=o}3bR1~&hxnGrhwX&99KtM=En+L=uRC*flRnH(a zxk)0gH_u<@;B8mdGl?nqZPVdGfn5lPU2zUgXZX8T*toVs;a}c2pWvQ_duv;$6NA7l z8Ue{I2}Z93R?HruUOFP2Wzux&&q&^JkWx?}d|IQ9Yo#^c&CB4Bf_kYW9BOvd#=Zw>l&--kD4VxTDlc zzPNo@+_li?R?XarD0Ki@Pit=Cud<0G@#f4BK|a6^0@2TncL?^=Gf1JO6@NlSR_9Wy zXEc3~X=GSIvA8$lLZvP;N|4~Yy2zFyU79s5O>-s5*n7hU#~TiH#q3wNkB-79;e{*M z$L|+q^#Q~VMzF5dk0?XU$-|Y$CYr^6K}Ye~*L)R(4?AWjGXEzNLZY!2$np4whH4r% z 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 R?#<8uKVU*alxo<9{10!Ly@mh) diff --git a/openfasoc/MLoptimization/image2.png b/openfasoc/MLoptimization/image2.png deleted file mode 100644 index 24dca66ae25c73078cdf964e676a756cf8b5fc8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50214 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 self.num_os-1: - self.obj_idx = 0 - idx = self.obj_idx - self.obj_idx += 1 - else: - idx = random.randint(0,self.num_os-1) - self.specs_ideal = [] - for spec in list(self.specs.values()): - self.specs_ideal.append(spec[idx]) - self.specs_ideal = np.array(self.specs_ideal) - else: - if self.multi_goal == False: - self.specs_ideal = self.g_star - else: - idx = random.randint(0,self.num_os-1) - self.specs_ideal = [] - for spec in list(self.specs.values()): - self.specs_ideal.append(spec[idx]) - self.specs_ideal = np.array(self.specs_ideal) - print("num total:"+str(self.num_os) + "new reset!!!") - - #applicable only when you have multiple goals, normalizes everything to some global_g - self.specs_ideal_norm = self.lookup(self.specs_ideal, self.global_g) - - #initialize current parameters - #self.cur_params_idx = np.array([3.0, 0.3, 2.0, 6.0, 2.0, 4.0, 3.0,1.0,2.0,3.0,4.0,0.3,6.0,3.0, 12.0, 12.0, 2.0, 1.0]) - # self.cur_params_idx = np.array([10, 4, 10, 10, 10, 10, 0, 0, 0, 0]) - self.cur_params_idx = np.array([10, 10, 4, 5, 0, 5, 7, 0, 1, 1]) - self.cur_specs = self.update(self.cur_params_idx) - cur_spec_norm = self.lookup(self.cur_specs, self.global_g) - reward = self.reward(self.cur_specs, self.specs_ideal) - self.epi_steps = 0 - #observation is a combination of current specs distance from ideal, ideal spec, and current param vals - self.ob = np.concatenate([cur_spec_norm, self.specs_ideal_norm, self.cur_params_idx]) - return self.ob, {} - - def step(self, action): - """ - :param action: is vector with elements between 0 and 1 mapped to the index of the corresponding parameter - :return: - """ - - #Take action that RL agent returns to change current params - prevreward = self.reward(self.cur_specs, self.specs_ideal) - action = list(np.reshape(np.array(action),(np.array(action).shape[0],))) - self.cur_params_idx = self.cur_params_idx + np.array([self.action_meaning[a] for a in action]) - -# self.cur_params_idx = self.cur_params_idx + np.array(self.action_arr[int(action)]) - self.cur_params_idx = np.clip(self.cur_params_idx, [0]*len(self.params_id), [(len(param_vec)-1) for param_vec in self.params]) - #Get current specs and normalize - self.cur_specs = self.update(self.cur_params_idx) - cur_spec_norm = self.lookup(self.cur_specs, self.global_g) - reward = self.reward(self.cur_specs, self.specs_ideal) - terminated = False - #f = open("newnew_5.txt", "a") - f = open("newnewnew_eval_3.txt", "a") - #incentivize reaching goal state - if(prevreward >= 2.0 and reward < 2.0): - terminated = True - if (reward >= 2.0): - if (reward < prevreward): - terminated = True - f.write('-'*10 +'\n') - f.write('params = '+str(self.cur_params_idx)+'\n') - f.write('specs:'+str(self.cur_specs)+'\n') - f.write('ideal specs:'+str(self.specs_ideal)+'\n') - f.write('re:'+str(reward)+'\n') - f.write('-'*10+'\n') - print('-'*10) - print('params = ', self.cur_params_idx) - print('specs:', self.cur_specs) - print('ideal specs:', self.specs_ideal) - print('re:', reward) - print('-'*10) - - self.ob = np.concatenate([cur_spec_norm, self.specs_ideal_norm, self.cur_params_idx]) - self.env_steps = self.env_steps + 1 - self.epi_steps = self.epi_steps + 1 - - truncated = self.epi_steps >= self.horizon - f.write('params: ' + str(self.cur_params_idx) +'\n') - f.write('cur ob:' + str(self.cur_specs) +'\n') - f.write('ideal spec:' + str(self.specs_ideal)+'\n') - f.write('cur reward:' + str(reward)+'\n') - f.write('epi step:' + str(self.epi_steps)+'\n') - f.write('env steps:' + str(self.env_steps)+'\n') - - print('cur ob:' + str(self.cur_specs)) - print('ideal spec:' + str(self.specs_ideal)) - print('cur reward:' + str(reward)) - print('epi step:' + str(self.epi_steps)) - print('env steps:' + str(self.env_steps)) - return self.ob, reward, terminated, truncated, {} - - def lookup(self, spec, goal_spec): - goal_spec = [float(e) for e in goal_spec] - norm_spec = (spec-goal_spec)/(goal_spec+spec) - for i in range(len(spec)): - if spec[i] <= -1: - norm_spec[i] = -1 - #if(norm_spec[i] > 0): - #norm_spec[i] = 0 - return norm_spec - - def reward(self, spec, goal_spec): - rel_specs = self.lookup(spec, goal_spec) - pos_val = [] - reward = 0.0 - for i,rel_spec in enumerate(rel_specs): - #if(self.specs_id[i] == 'ibias_max'): - #rel_spec = rel_spec*-1.0#/10.0 - if rel_spec < 0: - reward += rel_spec - pos_val.append(0) - else: - if(self.specs_id[i] == 'FOM'): - reward += rel_spec - pos_val.append(1) - - trueorfalse = True - for i,rel_spec in enumerate(rel_specs): - if rel_spec < -0.02: - trueorfalse = False - - if trueorfalse: - return 2.0+reward - else: - return reward - - def update(self, params_idx): - #impose constraint tail1 = in - #params_idx[0] = params_idx[3] - params = np.array([self.params[i][params_idx[i]] for i in range(len(self.params_id))]) - #param_val = np.array[OrderedDict(list(zip(self.params_id,params)))] - - #run param vals and simulate - #cur_specs = OrderedDict(sorted(self.sim_env.create_design_and_simulate(param_val[0])[1].items(), key=lambda k:k[0])) - inputparam = np.array([0.0, 0.0, 0.0, 6.0, 2.0, 4.0, 0.0, 1.0, 0.0, 3.0, 0.0, 0.0, 0.0, 3.0, 12.0, 12.0, 0.0, 0.0]) - inputparam[0:3] = params[0:3] - inputparam[6] = params[3] - inputparam[8] = params[4] - inputparam[10:13] = params[5:8] - inputparam[16:18] = params[8:10] - result = single_build_and_simulation(inputparam) - specs = np.array([0.0 , 0.0]) - specs[0] = result[0] - specs[1] = result[0]/result[6] - cur_specs = specs - - return cur_specs -#env end - -def main(): - env_config = {"generalize":True, "valid":True} - env = Envir(env_config) - env.reset() - env.step([2,2,2,2,2,2,2,2,2,2]) - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/openfasoc/MLoptimization/sample_spec.yaml b/openfasoc/MLoptimization/sample_spec.yaml deleted file mode 100644 index 1a47d10cc..000000000 --- a/openfasoc/MLoptimization/sample_spec.yaml +++ /dev/null @@ -1,100 +0,0 @@ -{'gain_min': [2486222284.8408804, - 2595551369.5626364, - 2309495771.9680934, - 1145774876.7498627, - 2079516450.1469443, - 2391451213.479562, - 2676893053.18551, - 2675006145.1962533, - 2015194984.3624444, - 2278788513.705864, - 2205636091.187187, - 1506492988.8309956, - 1112077088.809704, - 2707199150.1559224, - 2903609807.9496045, - 2062437443.5261226, - 1403056317.139003, - 2835219051.771353, - 2925021136.524023, - 1886275826.821474, - 2157488694.831938, - 2641455527.072985, - 2402196770.75093, - 1199232764.3421414, - 2976991031.6658754, - 1646354535.6840703, - 2704204845.6734324, - 2716618295.460021, - 2413570061.996591, - 2121921633.2690156, - 2303933548.53714, - 2028867678.9123795, - 2719297024.9283357, - 2173990079.053155, - 1445459741.8651175, - 2472330865.96015, - 1001989471.0531384, - 2759910539.938794, - 1536809631.1164005, - 1135029016.3512793, - 1588011527.4173698, - 2049869876.6713438, - 2427789734.566804, - 1047544300.167047, - 1914004908.9098907, - 1393488128.8226607, - 2559241796.7458553, - 1565752673.493743, - 1295775028.0897965, - 1918300980.2757072], - 'FOM': [500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0, - 500000000000.0]} \ No newline at end of file