B u `D@sddlZddlZddlmZddlmZddlmZddZddZ d d Z d d Z d dZ ddZ ddZd(ddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'ZdS))N)minimize)ExtensiveFormAlgorithm)run_phcCsx|D]}||qWdS)N)Z del_component)Z ef_instanceZscenario_instancesnamerc 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?************************************************************** ) rrrrrrrrabsr rsysexit) rrZtolZeror+r!r"r,r-deltarrr PurifyIndVars       &r7cCs"x|jjD]}t|||q WdS)N)rr FreeIndicatorVariableOneScenario)rrr!rrrFreeAllIndicatorVariables)sr9cCs6|j|j}t|||jj|j|dfdS)N)rrrfreer)Zfreed_variablesr)rr!rr"rrrr8/s  r8cCs$x|jjD]}t||||q WdS)N)rrFixIndicatorVariableOneScenario)rrrr!rrrFixAllIndicatorVariables8s r<cCs8|j|j}t||||jj|j|dfdS)N)rrrZfixr)Zfixed_variablesr)rr!r fix_valuer"rrrr;?s  r;c Cs||jj|d}xf|jD]\}xV|jD]L}|j|j}d}||dkrJd}n||dkrZd}|dk r$t||||q$WqWdS)Nrr)rrrrrrZFixIndicatorVariableOneVariable) Listsrrrrr r!r"r=rrr FixFromListsLs     r?cCs2t||||t|}t||d}td||fS)Nzback from compute exp)r?rCompute_ExpectationforVariabler )r>rrrZ LagrangianObjbrrrUseListsVariableThenSolve`s  rCc 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: rr@z 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)r rrrrrrr(r3r;rrArsortedr)Z TrueForZerosListZ lambdavalrrrrDrr r!r"ZLagrObjrBzZDsortkeyrrrAlgoExpensiveFliplsD      @d  rJcCs|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)rrZCCnamerr+ReferenceInstanceCCZSumSoFarccZnode_probabilityrr r!r"Z deltaValuerrrrAs$       " rAc Cs|jjdjd}|j|jdj}|j}d}xZ|jD]P}|j|j}t||} t||} x*| D]"} ||j| | j | | j }q`Wq6W|S)Nrg) rrrrrrZChanceConstraintsrrKr) rrZmultNamer+rLrMZcostr!r"r6Zmultr-rrrGetPenaltyCosts     &rO)r1)r4r Z pyomo.corerZpyomo.pysp.ef_writer_scriptrZpyomo.pysp.phinitrrrr#r'r(r.r0r7r9r8r<r;r?rCrJrArOrrrr s,   =      /