B _E@sddlZddlZddlZddlmZddlmZddlmZddl m Z m Z m Z ddl mZddlmZdd Zd d Zd d ZddZddZddZddZd+ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Z d)d*Z!dS),N)minimize)ExtensiveFormAlgorithm)run_ph)reset_nonconverged_variablesextractVariableNameAndIndexreset_stage_cost_variables)ISolutionWriterExtension)ExtensionPointcCsx|D]}||qWdS)N)Z del_component)Z ef_instanceZscenario_instancesnamer c Cs|jjdjd}x|jD]}|j|j}t||}x|D]}||j}t||krZd}n`t|d|krpd}nJt dt |d|jdt |t dt |dt d t |||_q:WqWdS) Nrg?rz ** delta[,z] = z not within z of 0 or 1 ... causes sys.exitz?************************************************************** ) rrrrrrrr absrrsysexit) rr"ZtolZeror0r&r'r1r2deltar r r PurifyIndVars       &r<cCs"x|jjD]}t|||q WdS)N)rr FreeIndicatorVariableOneScenario)rr"r&r r r FreeAllIndicatorVariables/sr>cCs6|j|j}t|||jj|j|dfdS)N)rrrfreer.Zfreed_variablesr!)rr&r"r'r r r r=5s  r=cCs$x|jjD]}t||||q WdS)N)rrFixIndicatorVariableOneScenario)rr"r r&r r r FixAllIndicatorVariables>s rAcCs8|j|j}t||||jj|j|dfdS)N)rrrZfixr.Zfixed_variablesr!)rr&r" fix_valuer'r r r r@Es  r@c Cs||jj|d}xf|jD]\}xV|jD]L}|j|j}d}||dkrJd}n||dkrZd}|dk r$t||||q$WqWdS)Nrr)rrrrrrZFixIndicatorVariableOneVariable) Listsrr"r#r$r%r&r'rBr r r FixFromListsRs     rDcCs2t||||t|}t||d}td||fS)Nzback from compute exp)rDrCompute_ExpectationforVariabler)rCrr"r#Z LagrangianObjbr r r UseListsVariableThenSolvefs  rHc Cs|dkrtdd}n tdd}i}|jj|d}x|jD]} x| jD]} |j| j} | jt|t|dkrJt || ||t |} t ||d} | | |}| | g||<tdt | jdt |d t | d t | d t |t || |t|dqJWq>Wg}x t |D]}|||qWtd t t |dd t t |d||ddd t |ddd t |ddj|dkrtdntd|t |d|ddfS)NTz0ExpensiveFlipAlgo: Fix ZerosToOnes and compute: rz0ExpensiveFlipAlgo: Fix OnesToZeros and compute: rrEz ObjVal w/ z delta flipped to z (LagrObj,b,z):  z---SmallestObjValue:---> z with (LagrObj,b) = z at z+Back from ExpensiveFlipAlgo:Fix ZerosToOnesz+Back from ExpensiveFlipAlgo:Fix OnesToZeros)rrrrrrrr-r8r@rrFrsortedr!)Z TrueForZerosListZ lambdavalrr"r#r Dr$r%r&r'ZLagrObjrGzZDsortkeyr r r AlgoExpensiveFliprsD      @d  rOcCs|jjdjd}|j|jdj}t||}i}x|D] }d||<q8Wd} |jj|d} xh| jD]^} xX| jD]N} |j| j} | | j7} x2|D]*}t| ||j}||| j|7<qWqpWqdWx|D]}||| ||<qW|S)Nrgr) rrrrrrr _probabilityr )rr"ZCCnamer#r0ReferenceInstanceCCZSumSoFarccZnode_probabilityr$r%r&r'Z deltaValuer r r rFs$       " rFc Cs|jjdjd}|j|jdj}|j}d}xZ|jD]P}|j|j}t||} t||} x*| D]"} ||j| | j | | j }q`Wq6W|S)Nrg) rrrrrrZChanceConstraintsrrPr ) rr"ZmultNamer0rQrRZcostr&r'r;Zmultr2r r r GetPenaltyCosts     &rT)r6)"r9osrZ pyomo.corerZpyomo.pysp.ef_writer_scriptrZpyomo.pysp.phinitrZpyomo.pysp.phutilsrrrZpyomo.pysp.solutionwriterrZpyomo.common.pluginr r rr(r,r-r3r5r<r>r=rAr@rDrHrOrFrTr r r r  s4     =      /