B u `ѕ@sddlZddlZddlZejeZddlmZm Z m Z m Z m Z m Z mZmZddlmZmZmZddlmZddlmZddlmZdZGdd d eZdS) N)Var TextLabeler Expression Piecewise_PiecewiseData SOSConstraint Constraintcomponents_data)MatrixEntriesClassLPFileObjClassLPFileConstraintClass)create_block_symbol_maps)SolverManager_PHPyro) iteritemsZ DDSIPhelp_x64c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?S)@ddextension_basecCstdS)N)NotImplementedError)selfphrE/tmp/pip-unpacked-wheel-n62dbgi3/pyomo/pysp/plugins/ddextensionold.py_getNumberOfStochasticRHS%sz*ddextension_base._getNumberOfStochasticRHScCstdS)N)r)rrrrr#_getNumberOfStochasticMatrixEntries(sz4ddextension_base._getNumberOfStochasticMatrixEntriescCstdS)N)r)rrRememberSecStageConstrlp ConstraintMap count_rowsMatrixEntries_ConstrToRow_Maprrr_sort_print_second_stage_constr+sz0ddextension_base._sort_print_second_stage_constrcCstdS)N)r)rrrrr _write_rhs_sc4szddextension_base._write_rhs_sccCstdS)N)r)rrrrr_write_matrix_sc7sz!ddextension_base._write_matrix_sccCsLd|_d|_d|_d|_g|_i|_g|_g|_g|_i|_ g|_ d|_ dS)Nz ddlpfile.lpZ__DDSIP_FIRSTSTAGEz.17g) _lpfilename_firststage_var_postfix_reference_scenario_reference_scenario_instance_FirstStageVars_FirstStageVarIdMap_SecondStageVars_AllVars_ScenarioVector _ColumnMapinput_file_name_list_precision_string)rrrr__init__:szddextension_base.__init__cCs |dS)N)r,)rrrrrresetOszddextension_base.resetcCsdS)Nr)rrrrrpre_ph_initializationRsz&ddextension_base.pre_ph_initializationcCsdS)Nr)rrrrrpost_instance_creationUsz'ddextension_base.post_instance_creationc Cstdt|jj|_|jj|jd|_|jj}td|t|j t r|jj }| |g|j j||jd}|j|dd|jd|_|jj}t|tfn|jj}||_td|||\}}|||}|||tj|jstd} td | td | d td t t!d |jd t |tt!d |jd t |tj| d s~ttd | d tdd} d} t"| dp} xh| #D]\} | $}| dkrP|ddkr| d} t%|dkr| d} t&|d|j'|d<qWWdQRX|(|j\}}}}|)|||||}|*||+|||,||||-||-|dS)Nz?Hello from the post_ph_initialization callback in ddphextensionrz Using %s as reference scenario)Z!output_instance_construction_timeT)Zcreate_variable_idszCreating the sip.in filez rows+colszrm -f z.gzz COMMAND=  z gzip -df z&Opening the rows+cols file for readingrZ__________________________).printsorted_scenario_tree _scenario_mapkeysr(r"_name isinstanceZ_solver_managerrZ_scenario_instance_factoryZgenerate_scenario_treecompressZ%construct_instances_for_scenario_treeZ"_output_instance_construction_timeZlinkInInstancesZ _scenariosZ _instancer rr#Z_preprocess_scenario_instances_write_reference_scenario_lp_Constraints_Stages_Populate_StageVarsospathexistsr AssertionErrorsystemstr ddsip_helpopen readlinessplitlenintr)_read_parse_lp sort_write_lprr write_sip_inwrite_input2sip)rrZ scenario_nameZsingleton_treeZsingleton_dictZscenario_instance max_name_len symbol_mapStageToConstraintMapZddsip_help_outputZ dashcountZvarcountflinepieces ObjObjectrremaining_lpfile_rowsAllConstraintNamesrrrrpost_ph_initializationXst        &   &  z'ddextension_base.post_ph_initializationcCsdS)Nr)rrrrrpost_iteration_0_solvessz(ddextension_base.post_iteration_0_solvescCsdS)Nr)rrrrrpost_iteration_0sz!ddextension_base.post_iteration_0cCsdS)Nr)rrrrrpre_iteration_k_solvessz'ddextension_base.pre_iteration_k_solvescCsdS)Nr)rrrrrpost_iteration_k_solvessz(ddextension_base.post_iteration_k_solvescCsdS)Nr)rrrrrpost_iteration_ksz!ddextension_base.post_iteration_kcCs||dS)N)write_start_weights)rrrrrpost_ph_executionsz"ddextension_base.post_ph_executionc sddl}|jjj}tdjfjjj }|j j fddt |Ddd}tfdd}|jj|d|i\}}|jksttd td d |j D} | |fS) NrzWriting LP file to %scs g|]\}}|krt|qSr)id).0Zscenariotree_idvardata) rootnode_varsrr szAddextension_base._write_reference_scenario_lp..cSsdS)NTr)xrrrz?ddextension_base._write_reference_scenario_lp..cs|t|krjndS)N)r`r!)re)firststage_idsr text_labelerrrrfslabelerz Model written css|]}t|VqdS)N)rI)rasymbolrrr sz@ddextension_base._write_reference_scenario_lp..)Z pyomo.environrepnZpluginsZcpxlpZProblemWriter_cpxlpr4r r#_ScenarioTreeSymbolMapbySymbolr6 findRootNode_standard_variable_idsrrrBmax) rrZpyomoZlp_file_writerZscenariotree_varsZ capabilitiesrkZoutput_filenamerPrOr)rircrrjrr<s$    z-ddextension_base._write_reference_scenario_lpcCs$d}x,|jjddD]}|ttt|t7}qW|j}|jjd}|j d}|j }|j } xt |jj jD]\} } y| t| } Wntd| jtYnX| |kr|j| | |j| <n*| |jks| |jkr|j| ndst|j| qnWx|jjD]} | jdj\}}|j|}|jtk r | t||} | |jksVt| |jkr | |jksrt|j| |j| q Wt|j|krtdtdt }x2|jjddD] }|!d d t|tDqWt }x(t |jj jD]\} } |"| jqWt }xJ|jjD]>} | jdj\}}|j|}|jtk r*|"||jq*Wtd t#t|td t#t|td t#t|tdt#|||x*|j D] }t|jt|jkstqWt|jjdkst|j$|j$|j$dS)NrT)activer3zFAILED ON VAR DATA= Fz**** THERE IS A PROBLEM ****zBNot all model variables are on the scenario tree. Investigating...css|] }|jVqdS)N)name)rarbrrrrm&sz7ddextension_base._Populate_StageVars..z9Number of Scenario Tree Variables (found ddsip LP file): z>Number of Scenario Tree Cost Variables (found ddsip LP file): z$Number of Variables Found on Model: z2Variables Missing from Scenario Tree (or LP file):r2)%r#block_data_objectsrIlistr rr6rq_stagesZ _tree_nodesrrbyObjectrrorpr`r4ruZfoobarr$appendr%Z_derived_variable_ids _variable_idsr&rBr'ZnodesZ_cost_variableZfind_componentctypersetupdateaddrDsort)rr LP_symbol_mapZ all_vars_cntblockrootnodeZstagetwoZanodeZfirststage_blended_variables LP_byObjectscenario_tree_idrbLP_nameZstageZcost_variable_nameZcost_variable_indexZstage_cost_componentZall_varsZ tree_varsZ cost_varsZ tree_noderrrr>s~                z$ddextension_base._Populate_StageVarscCsi}g}g}|jjd}|jjd}|j}|j} |j} t} x|jD] } g| | <qDWx.t|jD] \} }| | t | | q`Wx$|j ddD]}t |dd}|dkrt d|jd}t|ttfrd}x&|jtdddD]}td |jqWx|jtdddD]}| t |}| |}t|dks6t|s^| j||||d }| |}nd}| |}|dkr||n |dkr||n ds tq WqW||d <||d <|S) Nrr3T)rtZ_repnz-Unable to find _repn ComponentMap on block %sF)rtZ descend_intoz9SOSConstraints are not handled by the DDSIP interface: %s)rninstance FirstStage SecondStage)r6rxr#ryr"dictrpraliasesr`rzrvgetattr ValueErrorrur:rrZcomponent_data_objectsr TypeErrorrrIrBZconstraintNodegetZnode_stage_indexextend)rrrrQZFirstStageConstrNameToIndexZSecondStageConstrNameToIndexZstage1Zstage2Zreference_instancerZreference_scenarioZLP_reverse_aliasrlaliasZ obj_weakrefrZ block_repnZ isPiecewiseZconstraint_datarZ LP_aliasesZconstraint_nodeZ stage_indexrrrr=KsX             z$ddextension_base._Constraints_StagescCsytdtdd}Wn&tk r<tdtdYnX|jd|d}d}x |D]}||kslt|d7}q\W|d}d} x |D]}||kst| d7} qWt|j } t|j } | |} | |} t|j }|d |d t|d |d t| d |d t| dd |dt| dd |d|jd |dt|d |dt| d |dtdd |dt| d |d|d|d|d|d|d|d|d|d|d|d|d |d!|d"|d#|d$|d%|d&|d'|d(|d)|d*|d+|d,|d-|d.|d/|d0|d1|d2|d3|d4|d5|d6|d7|d8|d9|d:|d;|d<|d=|d>|d?|d@|dA|dB|dC|dS)DNz Write dd input file: sip.in zsip.inwzsip.in cannot be created!r3rrrz BEGIN z FIRSTCON  z FIRSTVAR zSECCON zSECVAR zPOSTFIX zSCENAR zSTOCRHS z STOCCOST 0zSTOCMAT z CPLEXBEGIN z$1035 0 * Output on screen indicator z2008 0.001 * Absolute Gap z2009 0.001 * Relative Gap z1039 1200 * Time limit z*1016 1e-9 * simplex feasibility tolerance z)1014 1e-9 * simplex optimality tolerance z21065 40000 * Memory available for working storage z#2010 1e-20 * integrality tolerance z2008 0 * Absolute gap z2020 0 * Priority order z2012 4 * MIP display level z2053 2 * disjunctive cuts z2040 2 * flow cover cuts z-2060 3 *DiveType mip strategy dive (probe=3) z CPLEXEND zMAXINHERIT 15 zOUTLEV 5 * Debugging z OUTFIL 2 z3STARTI 0 * (1 to use the starting values from PH) z!NODELI 2000 * Sipdual node limit z&TIMELIMIT 964000 * Sipdual time limit zIHEURISTIC 99 3 7 * Heuristics: Down, Up, Near, Common, Byaverage ...(12) z7ABSOLUTEGAP 0.001 * Absolute duality gap allowed in DD z EEVPROB 1 z=RELATIVEGAP 0.01 * (0.02) Relative duality gap allowed in DD z,BRADIRECTION -1 * Branching direction in DD zTBRASTRATEGY 1 * Branching strategy in DD (1 = unsolved nodes first, 0 = best bound) z.EPSILON 1e-13 * Branch epsilon for cont. var. zACCURACY 5e-16 * Accuracy z(BOUSTRATEGY 1 * Bounding strategy in DD zNULLDISP 1e-16 z RELAXF 0 z%INTFIRST 0 * Branch first on integer z.rcss|]}t|VqdS)N)repr)rarrrrrmsr3csg|]}| qSrr)rar) num_scenariosrrrdsz8ddextension_base.write_start_weights..z NONANT1.inz MULTIPLIER css|]}t|dVqdS)rN)r)rarerrrrmsgrz NONANT2.incss|]}t|dVqdS)rN)r)rarerrrrmscsg|]}|qSrr)rar)rwlastrrrdsz NONANT3.incss|]}t|dVqdS)rN)r)rarerrrrm s)r6rqr9r(r7_wr$r%rzrwziprFrjoin enumeratefloatrI writelines)rrZ rootnode_nameZweights_vectorsZ scenarionameZscenario_weightsZscenario_weights_vectorZ varname_LPrrRZ var_indexZvector_wvarnameZ v1_transposeZ vector_w_itertmpcolumnZ v2_transposeZw_sumrZ v3_transposer)rrrr^sb      $ 4     $     $    z$ddextension_base.write_start_weightsc Cstdg}i}|j}xj|jD]`}|j|\}}t|t|}|dd}|dd}|dd}|||||||<q"W|tdt d d \} | d xJ|D]B}| |rtt t ||} ntt ||} | | d qWWdQRXdS) NzE Write dd input file: solstart.in (** integers will be rounded ** ) ._r:r0rhzWriting init solution:z solstart.inrz SOLUTION r)r4r6rqr{rDreplacerzZget_variable_valuerrFrZis_variable_discreteroundr) rrZVNamesZVValsrZ variable_idvar_nameindexrurRvalrrrwrite_start_ins*          zddextension_base.write_start_incCsytdtdd}Wn&tk r<tdtdYnXd|jkrR|dd|jkrf|d d |jkrz|d d |jkr|d d|jkr|dd|jkr|dd|jkr|dd|jkr|d|dS)Nz" Write dd input file: input2sip Z2siprz!File input2sip cannot be created.r3zsip.inzsip.in zsorted_LPfile.lpzsorted_LPfile.lp z model.ordz model.ord zrhs.sczrhs.sc zcost.sczcost.sc z matrix.scz matrix.sc z order.datz order.dat zstart.inz start.in )r4rFrrrr*rr)rrrRrrrrN1s.                z ddextension_base.write_input2sipcCsNxH||gks ||ddrH|d7}|t|krtdtdqW|S)Nr\r3z1Error: past end of file while skipping null lines) startswithrIr4rr)rrrrrrrLs   z ddextension_base.SkipLPNullLinescCsP|dkr |dkr tdt|||7}|t||dkrH|d7}d}||fS)Nr3r2zunexpected step length =r)r4rDrI)rrrrsteprrrrVsz#ddextension_base.LocalPostionUpdatecCs|ddkr|dd}|S)Nrrr)rrurrrr_s  zddextension_base.ClearNamecCsJt|}|d|jd}x"|D]}|||||fq(WdS)Nz%+z %s )rwr8rr+r)rZ VarToCoeffMaprr8Z line_templatekeyrrrrds   z)ddextension_base.print_coeff_var_from_mapcCs|dkrddt|krDdt|krD|dt|dt|dq|t|dt|dn|t|dt|ddS)N)=<>z<=z>=+-r0r)rDr)rZcoeffvarrrrrprint_coeff_varqs $ z ddextension_base.print_coeff_varN)"__name__ __module__ __qualname__rrrrrr,r-r.r/rXrYrZr[r\r]r_r<r>r=rMrrKrLr^rrNrrrrrrrrrr#s> c#XEc};E#   r)r?rrr@abspath__file__ZthisfileZpyomo.core.baserrrrrrrr Z!pyomo.pysp.plugins.ddextensionnewr r r Zpyomo.pysp.phutilsr Z%pyomo.solvers.plugins.smanager.phpyrorsixrrEobjectrrrrrs (