B u `\9@sBddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ddl mZddlmZmZmZmZmZddlmZdd lmZdd lmZmZd d d dddddddddddddddddddd dd!d"d#d$d%d&d'dd(d)d*d+d,d-d.dd/d0d1d2d3d4d5dd6d7d8d9d:d;dd?d@dAdBdCddDdEdFdGdHdIdJddKdLdMdNdOdPdQddRdSdTdUdVdWdXddYdZd[d\d]d^d_dd`dadbdcdddedfddgdhdidjdkdldmddndodpdqdrdsdtddudvdwdxdydzd{dd|d}d~dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd,ddddddddddddddddddddddddddddddddddddddddddddddddddddddd d ddd d d dddddd dddddddddddddddddddd d!ddd"d#d*d$d%d&ddd"d'd(d)d*d+ddd,d'd-d.d/d0ddd,d1d2d3d4d5ddd6d7d8d9d:d;ddd6d7d<d=d>d?dd@d6dAdBdCdDdEddF2ZdUdGdHZdIdJZdKdLZdMdNZ dOdPZ!e dQdRdVdSdTZ"dS(WN)ApplicationError)minimize) UndefinedData) pyomo_command)ScenarioTreeInstanceFactory)construct_ph_options_parserGenerateScenarioTreeForPHPHAlgorithmBuilder PHFromScratch PHCleanup)ExtensiveFormAlgorithm) _OLD_OUTPUT) iteritemsiterkeysg?g9v@gK7A@gxi)@gV-?@gjtO@gms@)g?g?g?g?g{Gz?g{Gzt?gMbP?g&1?gV-?g\(\@gʡE6@g\(@g#@gʡES6@g{Gz?gh|?5?gm@g~jt @gDl)@gw/]@gGzn$@gʡE?gI +?guV@gh|?5@g`" @g"~j@gx&@g$C?gV-?gQ@g rh@gQ @gT㥛 @gOn@g`"?g ףp= ?gJ +?g~jt@g/$ @g- @gE@gn?gp= ף?gRQ?gQ@gCl@gˡE @gp= #@gd;O?g'1Z?g(\?g r@g^I +@gףp= @g/$@g"~?gT㥛 ?gS?gjt@g rh@g @g㥛 0@gffffff?gʡE?gˡE?gm@g&1@g'1Z @g~jt@gM?g+?g#~j?gS㥛@gX9v@g +@g@g= ףp=?gV-?gPn?g;On@g r@gq= ףp@gq= ףp@gh|?5?g?gtV?gHzG@g333333@gjt@g7A`@g/$?gQ?gV-?g)\(@gˡE@g7A`@gK@g&1?g~jt?g?5^I ?g?5^I @g7A`@g~jt@gw/ @gGz?g1Zd?gV-?g(\@gDl@g|?5^@grh| @g?5^I ?gS?gףp= ?gzG@gK7@gv/@g^I + @gjt?gHzG?gX9v?g+@g"~j@g/$@gzG @gsh|??gDl?gX9v@gZd;O@gS@goʡ @gCl?g333333?g?g㥛 @gMbX9@g(\@g"~j @gʡE?g^I +?gK7?gp= ף@g/$@gS@gK7 @gA`"?gFx?gd;O@gMb@gZd;O@g ףp= @gQ?gv?gCl?gZd;O@g@g~jt@gzG @gJ +?gK7A`?gPn@gV-@gK7A`@g#~j @gS?guV?gS?g{Gz@gzG@gK@g @g ףp= ?gK?g r@gE@gZd;@g{Gz @g/$?gsh|??g"~j@gbX9@g^I +@g|?5^ @gB`"?g5^I ?gK7?gMb@g#~j@gv@g$C @g`"?gv/?g\(\@gV-@g?5^I @g^I + @g(\?gx&?gtV@g-@g@gGz @gm?gl?gA`"?gRQ@g9v@gʡE@g @gv?gK@gd;O@gCl@g!rh?gOn?gHzG@g(\@gw/@g + @gx?guV?gK7A@gI +@gm@gbX9 @gL7A`?g ףp= ?g= ףp=@g/$@gn@gQ @gn?g5^I ?gMbX9@gFx@gn@gDl @gzG?gˡE?gh|?5@g r@gQ@gS㥛 @gw/?g`"?gx&1@g;On@gV-@gZd;O @g(\?gv/@g rh@gDl@g/$ @g +?gl?g^I +@gMb@goʡ@g~jt @g!rh?g)\(@g|?5^@gS㥛@g rh @g(\?gE?gx?g/$@gMbX@g/$@g|?5^ @gL7A`?gA`"@gS@g(\@gS @g7A`?gzG?gZd;O@gK7@g}?5^I @gw/?g&1@gK@gQ@gsh|? @g?gv@gHzG@g"~@gK7 @g +?gjt@g$C@g{Gz@gv/ @gbX9?gE?gJ +@gK7A@g~jt@gx& @gGz@g= ףp=@gq= ףp@gQ @g|?5^?g7A`?gOn@gMbX9@gCl@gJ + @)2  !"#$%&'()*+,-./012c CsNd}ytd}|jddddtdd|jdd dd tdd|jd d dd tdd|jdddddd|jddddtdd|jddddtdd|jdddddd|jdddd dd|jd!d"dd#td$d|jd%d&dd'td(d|jd)d*dd+tdd|j|d,}|j|_|j|Wn&tk rD}z|j Sd}~XYnX|j dkr^t |j t }|jrvtd-t|j|j}trtd.|js|jrtd/t |z~|j|j|j|j|j|jd0}|jr|||jrtd1t||\}} } t||| ||} t||| | || |Wd|dk rH|XdS)2NFzcomputeconf [options]z--fraction-scenarios-for-solvezTThe fraction of scenarios that are allocated to finding a solution. Default is None.storefraction_for_solve)helpactiondesttypedefaultz(--number-samples-for-confidence-intervalzgThe number of samples of scenarios that are allocated to the confidence inteval (n_g). Default is None.n_gz--confidence-interval-alphaz}tdt|dt| ||t !|t !| qvWntdt| d|j%r\tdtd|j}|j&d}|j'd}xZt(|j)D]L\}} x@| D]8}!| |!dkrtd t|t|!t| |!fqWq Wt*|j&d!j'}"|j+dk rt,|j+d"}#|#-d#t|j d$t|j.d%t|"d&t|d't|jd(t| | d)t| d*tt !|d+tt/d,t|| t"krvt"| }xPt#t$|D]@}|#-d-t|d.t| ||t !|t !| q2W|j%r|#-d.|j}|j&d}|j'd}x\t(|j)D]N\}} xB| D]:}!| |!dkr|#-d t|t|!t| |!fqWqW|#0tdtd/|j+|1dS)0NTrrruz"Computing statistics for sample k=.zBundle start index=z , stop index=zTLoading scenario instances and initializing scenario tree for xstar scenario bundle.z"Creating the xstar extensive form.zComposite scenarios:r)rz!Solving the xstar extensive form.r)rz&Sample extensive form objective value=z3Solving the extensive form given the xhat solution.z1Sample extensive form objective value given xhat=gzg_supk_of_xhat[%d]=%12.6fz Raw results:zg_bar= z g_stddev= zAverage f(xhat)= zResults summary:z$Confidence interval width for alpha=z is z No built-in t-table entries for z@ degrees of freedom - cannot calculate confidence interval widthzxhat solution:z%s %s %srqaz instancedirectory, z, seed, z, N, z, hatn, z, n_g, z, Eoffofxhat, z, gbar, z, sg, z, objforxhat, z, n,z , alpha=z , z!Results summary appended to file=)2rOrrrrIr{r]rUrQrr^r rr rWrrrrrZgaprGrrZ findRootNodeZ _solutionZ_standard_variable_idsZ fix_variableZ_push_fix_queue_to_instancesappendrr mathsqrtt_table_valuessortedrrNrxryrZ _solutionsrwrMr}writerLrrdrelease_components)$rhrjrkrlrrmrfrerZg_supk_of_xhatZg_barZsum_xstar_obj_given_xhatrIkZgk_ph start_index stop_indexrZgk_efZ xstar_objZ xstar_obj_gapZxstar_obj_boundZ gk_root_nodeZ root_xhatZ variable_idZxstar_obj_given_xhatZg_varZt_table_entrieskeyriZ first_stageZ root_nodevalidxrZ output_filernrnrorcs                     0          rcc Csrg}x(t||D]}||j||jqWd}yt|||d} t|| }Wn|dk rf|YnX|S)N)Zinclude_scenarios)r{rrrrr r) Z bundle_startZ bundle_stoprhrrjrfZscenarios_to_bundleiphrirnrnrorsrZ computeconfz(Compute the confidence for a SP solutionc Csddl}yt|dWntk rH}ztdt|Wdd}~XYntk rx}ztdt|Wdd}~XYn|tk r}ztdt|Wdd}~XYnLtk r}ztdt|Wdd}~XYntdtYnXdS)Nr)rPz VALUE ERROR:z IO ERROR:zAPPLICATION ERROR:zRUN-TIME ERROR:zEncountered unhandled exception) Z pyomo.environrprr]IOErrorrrv traceback print_exc)rPZpyomorUrnrnromains$r)N)N)#r~rZrr\rZpyomo.common.errorsrZ pyomo.corerZ pyomo.optrZ pyomo.commonrZ(pyomo.pysp.scenariotree.instance_factoryrZpyomo.pysp.phinitrrr r r Zpyomo.pysp.ef_writer_scriptr Zpyomo.pysp.phutilsr sixrrrrprarbrcrrrnrnrnro s              ( a   %