B _@sddlZddlZddlZddlmZddlZejeZ ddl Z ddl Tddl mZddlmZddlmZddlmZddlmZdd lmZd Zd Zd Zd ZdZdZdZdZ dZ!dZ"dddZ#Gddde$Z%Gddde j&j'j(Z)Gddde$Z*Gddde$Z+Gddde$Z,dS) N) itemgetter)*)_VarData)_PiecewiseData) phextension)_PHSolverServer)/transmit_external_function_invocation_to_worker) iteritemsZ DDSIPhelp_x64z rows+colsZ DDSIP_126_x64z.17gZDDSIP_DISABLE_STOCHASTIC_RHSFZDDSIP_DISABLE_STOCHASTIC_MATRIXTZDDSIP_DISABLE_STOCHASTIC_COSTScCs t||||||}|j||dS)N)global_reference_scenario) DDSIP_Inputwrite)ph scenario_treescenario_or_bundle scenario_namescenario_indexfirststage_var_suffixr ddrE/tmp/pip-unpacked-wheel-d4p3hk07/pyomo/pysp/plugins/ddextensionnew.pyWrite_DDSIP_InputPs rc@seZdZddZdddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZd ddZdS)!r cCsg|_||_||_d|j|_d|j|_d|j|_d|j|_||_|j ||_ d|_ g|_ i|_ g|_i|_g|_i|_i|_d|_d|_d|_d|_d|_d|_g|_i|_g|_i|_g|_|j j|_ dS)Nz ddlpfile.lp.zrhs.sc.z matrix.sc.zcost.sc.r)input_file_name_listZ_scenario_name_scenario_index _lpfilename _rhsfilename _matfilename _objfilename_firststage_var_suffix_scenario_tree get_scenario_reference_scenario_reference_scenario_instance_FirstStageVars_FirstStageVarIdMap_FirstStageDerivedVars_FirstStageDerivedVarIdMap_SecondStageVars_SecondStageVarIdMap_StageCostVarStageMap_num_stochastic_rhs_num_stochastic_matrix_entries_num_stochastic_costs_num_first_stage_constraints_num_second_stage_constraints"_count_constraint_ONE_VAR_CONSTANT_AllVars _ColumnMap_ColumnNameList_RowMap _RowNameList _instance)selfr rrrrrrrr__init__]s:    zDDSIP_Input.__init__FcCs|j}|||\}}|||}||||rtj|jsLt yt tj t t Wntk r|YnXy t tj t t dWntk rYnXtjtj t t rt tjtj t t drt tdttd|jdt|ttd|jdt|tjtj t t ds^t tdtj t t dn tjtj t t st d}d}d} tt d"} x| D] } | } |dkrPn| ddkr|d }n|d krft| d krf|d 7}t| d|j| d <|j| d t|jd |j|jd kst nj|d krt| d kr| d 7} t| d|j| d <|j| d t|jd |j|jd kst qWWdQRX||j\} }}}t |jt|jd t|jkst t|jt||jks|j?|j.|j6|j2|j(|j)|jfSdS)Nz.gzz COMMAND=  z gzip -df rrZ__________________________cSsg|] \}}|qSrr).0namecolrrr sz%DDSIP_Input.write..)key FirstStage)include_position_section)@r!Z_preprocess_scenario_instances_write_reference_scenario_lp_Constraints_Stages_Populate_StageVarsospathexistsrAssertionErrorremovejoingetcwd_ddsip_help_outputOSErrorprintstr _ddsip_helpsystemopen readlinessplitlenintr0r1appendr2r3_read_parse_lpr/r.set VarToCoeffkeyssortedlistitemsr sort_write_lpr,r- intersectiongetattr_disable_stoch_rhs_flagname_disable_stoch_rhs_defaultr) _write_rhs_sc_disable_stoch_costs_flagname_disable_stoch_costs_defaultr+ _write_obj_sc_disable_stoch_matrix_flagname_disable_stoch_matrix_defaultr*_write_matrix_scrr"r#r$r%r&r'r()r5r r Zscenario_instance max_name_len symbol_mapStageToConstraintMapZ dashcountZvarcountZconcountflinepieces ObjObject ConstraintMapremaining_lpfile_rowsAllConstraintNamesMatrixEntries_ConstrToRow_MapSecondStageConstrOrderrB ConstrNamesFirstStageConstrOrder count_rowsr>rrrr s   "& $"     (  (    zDDSIP_Input.writec sddl}|jjj}tdjfjjj }|j j t fddt|Ddd}tfdd}|jj|d|i\}}|jksttd d|j D} | |fS) NrzWriting LP file to %sc3s"|]\}}|krt|VqdS)N)id)r=Zscenariotree_idvardata) rootnode_varsrr Dsz;DDSIP_Input._write_reference_scenario_lp..cSsdS)NTr)xrrrGz:DDSIP_Input._write_reference_scenario_lp..cs(|t|trt|kr dnjS)N) isinstancerr|r)r)firststage_idsr5 text_labelerrrrIs labelercss|]}t|VqdS)N)rW)r=symbolrrrrYs)Z pyomo.environrepnpluginsZcpxlpZProblemWriter_cpxlprPrr!_ScenarioTreeSymbolMapbySymbolr findRootNode_standard_variable_idsr[r Z TextLabelerrJmax) r5r pyomoZlp_file_writerZscenariotree_varsZ capabilitiesrZoutput_filenamernrmr)rr~r5rrrD6s"   z(DDSIP_Input._write_reference_scenario_lpcCsytdd}Wn&tk r4tdtdYnX|jdi}||dd|dd||d||d |d }t | } t | |} t | t |} d } d|_ d|_xr| D]j} |d | d| d7} | || <|| }||d|||dd |dd |j d7_ qWxt| D]l} |d | d| d7} | || <|| }||d|||dd |dd |jd7_q:WxRtt|D]B}|d x0tt||D]}||||d qWqW||| |j |jfS)Nzsorted_LPfile.lpwtz4IO Error so that sorted_LPfile.lp cannot be created.r:rz z: r;z s.t. rBr< r7)rTIOErrorrPsysoutrrYr print_coeff_var_from_mapr[r]r^rbr,r-rangerWclose)r5r rsrtrorulprwrBryrzrxr{r>Zlp_conrowirrrra\sN      "zDDSIP_Input.sort_write_lpc CsXt}i}ytjt|ddddd}WnFtjk rl}z&t|dtdtt j |fWdd}~XYnXt |dd}d}| ||}| ||d|d 7}d}||||} || ||||d \}}x||gkrd} | dk r(|| |||d} ||||d \}}qd |t||kr`|||} ||||d \}}q|||||||d d} ||||d \}}qW| dk rtd td | ||}d}d |||ksd |||ksd|||kr|d 7}| ||}x||ddkrd||dkrDd |_P||||} t|| <t||d kr||d 7}n|d 7}d} d} xJ||gkr| dk r|| | |||} |||} | dkrd} ||||d \}}nd |t||kr(|||} ||||d \}}nxd |t||kr|| ||||||d } |||} |||d } | dkrd} ||||d \}}| dkr|| | || | |d 7}d}PqWqW|jrd||dkst|t|kstg}x*|t|kr>||||d 7}qWt |}||||fS)Nrtr7|T) delimiter quotecharskipinitialspacez is not found!zfile %s, line %d: %srr:r;z- error mismatched pairs in objective functionzs.t.stz subject toZboundsZc_e_ONE_VAR_CONSTANTrEndOfConstraint)LPFileObjClasscsvreaderrTErrorrPrexitfilenamerpline_numr_SkipLPNullLines AssignSense ClearName AssignNameLocalPostionUpdateAddToMaprWstripr.LPFileConstraintClassAssignComparator AssignRHSrJrYr])r5Z lp_filenamersrtlp_fileeZ list_lp_fileCurrRowCurrElemr>Z LastCoeffZCurrConstraintNameendZLastVarrurvrrrrZs (              $    zDDSIP_Input._read_parse_lpcCsHt|}|dtd}x"|D]}|||||fq&WdS)Nz%+z %s )r_r]sort_precision_stringr )r5Z VarToCoeffMaprr]Z line_templaterArrrr s    z$DDSIP_Input.print_coeff_var_from_mapcCsNxH||gks ||ddrH|d7}|t|krtdtdqW|S)Nr\r:z1Error: past end of file while skipping null lines) startswithrWrPrr)r5rrrrrr(s   zDDSIP_Input.SkipLPNullLinescCs|ddkr|dd}|S)Nr<:r)r5r>rrrr2s  zDDSIP_Input.ClearNamecCsP|dkr |dkr tdt|||7}|t||dkrH|d7}d}||fS)Nr:r;zunexpected step length =r)rPrQrW)r5rrrsteprrrr7szDDSIP_Input.LocalPostionUpdatec sd}g}xH|jjddD]6}|tt|jtdd7}t|ttfr| |qW|j }|j j d}|j j}|j} xt|jjjD]\} } | rqy| t| } Wn"tk rtd| jYnX| |jkr|j | | |j| <nl| |jkr|j | | |j| <nH| |jkr6|j | | |j | <n$t!dt"| t"| jfdsZt#|j$ | qWx|j j D]} | j%dj&\}}|j'|}|j(t)k rt| t||} | |jkst#| |j$krt| |jkst#|j | | j*|j+| <|j$ | qtWxX|D]P}xH|jtddd D]4} | t| } |j | | |j | <|j$ | q"Wq Wt|j$|krt!d t!d t!d t|j$d |t,}ix:|jjddD](}|-fdd|jtddDqWt!dt"t|t!dt.dd2}|/dx |D]}|/t"|dqWWdQRXt,}x(t|jjjD]\} } |0| jqNWt!dt"t|t!dt.dd2}|/dx |D]}|/t"|dqWWdQRXt,}xJ|j j D]>} | j%dj&\}}|j'|}|j(t)k r|0||jqWt!dt"t|t!dt.dd2}|/dx |D]}|/t"|dqPWWdQRXt!d|||}x|D]}t!d|qWtd x*|j1D] }t|jt|jkst#qWt|j j d!kst#|j2|j2|j$2dS)"NrT)activeF) descend_intor:zoVariable with name '%s' was declared on the scenario tree but did not appear in the reference scenario LP file.z%s %s)rrz**** THERE IS A PROBLEM ****zBNot all model variables are on the scenario tree. Investigating...zlen(self._AllVars)=z all_vars_cnt=c3s|]}|dVqdS)TN)getname)r=r}) tmp_bufferrrrsz2DDSIP_Input._Populate_StageVars..z$Number of Variables Found on Model: zwriting all_vars.datz allvars.datwz allvars.dat rzrr"r#Z_derived_variable_idsr$r% _variable_idsr&r'rPrQrJr/ZnodesZ_cost_variableZfind_componentctypeZ Expression_namer(r[updaterTr addZ _tree_nodesr)r5r LP_symbol_mapZ all_vars_cntZpiecewise_blocksblockrootnodeZstagetwoZleafnode LP_byObjectscenario_tree_idr}LP_nameZstageZcost_variable_nameZcost_variable_indexZstage_cost_componentZall_varsrpavZ tree_varstvZ cost_varsZcvZ MissingSetZimsZ tree_noder)rrrF@s                        "   "    "     zDDSIP_Input._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}|dkrx||n |dkr||n ds tq WqW||d <||d <|S) Nrr:T)rZ_repnz-Unable to find _repn ComponentMap on block %sF)rrz9SOSConstraints are not handled by the DDSIP interface: %s)rinstancerBZ SecondStage)rrr!rr dictrr aliasesr|rYrrcrr>rrrrZ SOSConstraint TypeErrorZ ConstraintrWrJZconstraintNodegetZnode_stage_indexextend)r5r rroZFirstStageConstrNameToIndexZSecondStageConstrNameToIndexZstage1Zstage2Zreference_instancerZreference_scenarioZLP_reverse_aliasraliasZ obj_weakrefrZ block_repnZ isPiecewiseZconstraint_datarZ LP_aliasesZconstraint_nodeZ stage_indexrrrrEsb              zDDSIP_Input._Constraints_Stagesc Cst|jd}t|tr,|j|jjj}n|jj}dt |j dt |d}| |d|_ x<|D]4}| dt dt||d|j d7_ qhWWdQRXdS)Nrscenariorr%r;r:)rTrrrZ_uncompressed_scenario_treerr rZ _probabilityrQrr r)rfloat)r5r rtrxrpZ probabilityheaderr>rrrrfs   zDDSIP_Input._write_rhs_scc Cst|jd}|dt|jdd|_t|j}xV|j D]L}||j krB||krv|dt d|j|n |d|jd7_qBWWdQRXdS)Nrrrrrz0 r:) rTrr rQrr+r^r\r]r0r"r)r5r rsrpZvarnames_appearingr>rrrri%s   zDDSIP_Input._write_obj_scc Cst|jd}|rh|dxJ|D]B}|j|}||j} x(t| D]} |d||j| fqDWq"Wd|_|dt|j dxZ|D]R}|j|}||j} x8t| D],} |dt d| | |jd7_qWqWt d t t t|jj|jfWdQRXdS) Nrz position z%s %s rrrrr:z%s %s)rTrr r2r\r^r0r*rQrrrPr_mapr r) r5r rtrxrwrCrpZconnamerZ var_coeffsvarnamerrrrl5s(        zDDSIP_Input._write_matrix_scN)F)F)__name__ __module__ __qualname__r6r rDrarZrrrrrFrErfrirlrrrrr [s"3 '&=  Kr c@seZdZejjejddZ ddZ ddZ ddZ d d Z d d Zd dZddZddZddZddZddZddZddZddZdS) ddextensioncCsjd|_d|_d|_g|_g|_i|_g|_i|_g|_i|_ i|_ d|_ d|_ d|_ d|_d|_d|_dS)Nz ddlpfile.lpZ__DDSIP_FIRSTSTAGEr)rrr rr"r#r$r%r&r'r(r)r*r+r,r-r.)r5rrrr6es"zddextension.__init__cCs |dS)N)r6)r5r rrrreset{szddextension.resetcCsdS)Nr)r5r rrrpre_ph_initialization~sz!ddextension.pre_ph_initializationcCsdS)Nr)r5r rrrpost_instance_creationsz"ddextension.post_instance_creationcCstdt|jj|_|jj|jd|_|jj}|jrHtdtd|t |j t j j jjjr|jri}x>t|jdD].\}}x$|jjD]}||jkr|j||<qWqWt|||td||j|d|jfddidd }|j |g|j |\|_|_|_|_|_|_|_ |_!|_"|_#|_$|_%|_&|_'t(j)*t(j)+t(,d s`t-g}xPt|jdD]@\}}||krr|.t|||td|||jfdd idd qrW|j |nt||td||j|d|jfddidd }|j |g|j |\|_|_|_|_|_|_|_ |_!|_"|_#|_$|_%|_&|_'t(j)*t(j)+t(,d sdt-g}xLt|jdD]<\}}||krv|.t||td|||jfdd idd qvW|j |nt/||j|j||j|d|jdd \|_|_|_|_|_|_|_ |_!|_"|_#|_$|_%|_&|_'xFt|jdD]6\}}||kr2t/||j|j0||||jd d q2W|j"dkrtd tdt1dtdn|j"dkst-d} t2| d} | 3|jd|kst-t(4d| d|d| t(5| d|xb|jddD]P}t(j)*| d|s2t-t(4d| d|d| t(5| d|qW|j.| |j$dkrtd tdt6dtdn|j$dkst-d} t2| d} | 3|jd|kst-t(4d| d|d| t(5| d|xb|jddD]P}t(j)*| d|s:t-t(4d| d|d| t(5| d|qW|j.| |j#dkrtd tdt7dtdn|j#dkst-d} t2| d}|3|jd|kst-t(4d| d|d| t(5| d|xb|jddD]P}t(j)*| d|sBt-t(4d| d|d| t(5| d|q$W|j.| |8||9|tddS)Nz?Hello from the post_ph_initialization callback in ddphextensionrz6** The DDSIP interface is ignoring scenario bundles **z Using %s as reference scenarior:rr T)Z function_argsZ function_kwdsZreturn_action_handlez rows+colsF)r rz Detected z=Truez7Constraint rhs entries are assumed to be deterministic.zrhs.scrzcat .z >> z+Cost terms are assumed to be deterministic.zcost.scz:Constraint matrix entries are assumed to be deterministic.z matrix.scz0ddextension post_ph_initialization callback done):rPr^r _scenario_mapr]_ScenarioVectorr rZcontains_bundlesrZ_solver_managerrZsolversrZsmanagerZphpyroZSolverManager_PHPyro enumerateZ_scenario_bundlesZ_scenario_namesrthisfileindexrZwait_allZ get_resultsrr"r#r$r%r&r'r(r)r*r+r,r-r.rGrHrIrLrMrJrYrrrdrTrrSrKrgrj write_sip_inwrite_input2sip)r5r Zreference_scenario_nameZscenario_to_bundle_maprrZbundleZahZahsZ rhs_filenameZRHS_fileZ obj_filenameZOBJ_fileZ mat_filenameZMAT_filerrrpost_ph_initializations    D  D   @               z"ddextension.post_ph_initializationcCsdS)Nr)r5r rrrpost_iteration_0_solvesPsz#ddextension.post_iteration_0_solvescCsdS)Nr)r5r rrrpost_iteration_0Sszddextension.post_iteration_0cCsdS)Nr)r5r rrrpre_iteration_k_solvesVsz"ddextension.pre_iteration_k_solvescCsdS)Nr)r5r rrrpost_iteration_k_solvesYsz#ddextension.post_iteration_k_solvescCsdS)Nr)r5r rrrpost_iteration_k\szddextension.post_iteration_kcCs||||dS)N)write_start_inr)r5r rrrpost_ph_execution_s zddextension.post_ph_executionc Csnytdtdd}Wn&tk r<tdtdYnX|jdt|j}t|j t|j d}|j }|dkr~d}|j }|dkrd}|j }|dkrd}|j}|j|j} t|j} |d|dt|d |d t|d |d t| d |d t|d |d |jd |dt| d |dt|d |dt|d |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,|d-|d.|d/|d0|d1|d2|d3|d4|d5|d6|d7|d8|d9|d:|d;|d<|d=|d>|d?|d@|dS)ANz Write dd input file: sip.in zsip.inrzsip.in cannot be created!r:rz BEGIN z FIRSTCON rz FIRSTVAR zSECCON zSECVAR zPOSTFIX zSCENAR zSTOCRHS z STOCCOST zSTOCMAT 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 1 * Branch first on integer zrrrr sz-ddextension.write_start_in..rcss|]}t|VqdS)N)repr)r=rrrrrsz SOLUTION rr:csg|]}| qSrr)r=r) num_scenariosrrr@$sz.ddextension.write_start_in..z NONANT1.inz MULTIPLIER css|]}t|dVqdS)rN)r)r=rrrrr,scss|]}t|dVqdS)rN)r)r=rrrrr-sgr<z NONANT2.incss|]}t|dVqdS)rN)r)r=rrrrr>scsg|]}|qSrr)r=r)rwlastrrr@Fsz NONANT3.incss|]}t|dVqdS)rN)r)r=rrrrrLs)rrYrPrrrrr_wr"r#r_ziprrWrTr rLrZis_variable_discreterroundZ_xbars writelines)r5r rZ rootnode_nameZweights_vectorsZ scenarionameZscenario_weightsZscenario_weights_vectorZ varname_LPrrpZ var_indexZvector_wrr>Z v1_transposeZ vector_w_itertmpfpcolumnZ v2_transposeZw_sumrZ v3_transposer)rrrrs~        $ 4          .     $    zddextension.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.r:zsip.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 )rPrTrrrrr r)r5r rprrrrNs.                zddextension.write_input2sipc Cstdx*|jjD]}x|jD]}d|j|<qWqW|jj}|jj}t|}| }x|r:d|kri} d| kst d| kst xW| nd|krx| rqWntd |kr0xft t |jjD]P} t| ddd } |j|j| d}|j|}g}xt t |jdD]}| \} } | |jkrv||j| t| fnR| |jkrt| ||j| <n2| |jkrt| |j|j| j<n| d ks8t q8W|j}td ttt|j|jf|j|j}x*|D]"\}} |j |j!|}| ||<qWqW| }q`WWdQRXtd |"xN|jjD]B}|j#dk r`td ttt|j|j#j$|%|&q`Wd}xX|jjD]L}td ttt|j|jfx&|jD]}|j|dkrd}PqWqW|rtddS)Nz)Loading DDSIP solution into scenario treez1. Best Solutionz"Variable name Valuez---z 2. Boundsz-Scenario Lower Bound (root) Upper Boundr:z 3. Quantilesz4. Second-stage solutionsr<ZONE_VAR_CONSTANTz%s %sz9Updating variable statistics after loading DDSIP solutionFTz***WARNING*** Individual stage costs could not be recovered from DDSIP solution. Try adding an artificial variable to the model for each stage cost and assign this to the stage cost in the scenario tree specification file.)'rPrZ _scenariosZ _stage_costsrrr rrTreadlinerJrrWr#rrVr_xrrrrXZ _objectiveZ_costr&r'rYr%r(r_rrQZ_name_index_to_idrZupdate_variable_statisticsr4r>Zpush_solution_to_instanceZupdate_solution_from_instance)r5r rrZ stage_nameZroot_node_nameZreference_leaf_noderprqZfirst_stage_solutionrrZsolZ scenario_idZobj_lbZobj_ubZscenario_firststage_solutionZsecondstage_solutionjZ leaf_nodeZscenario_secondstage_solutionZreference_node_variable_idZthis_node_variable_idwarnrrr_load_ddsip_solutionis                      z ddextension._load_ddsip_solutionN)rrrrcommonpluginZ implementsrZ IPHExtensionr6rrrrrrrrrrrrrr rrrrras"M hzrc@s0eZdZdZddZddZddZdd Zd S) MatrixEntriesClass)VarUniqueValueMapcCs i|_dS)N)r)r5rrrr6szMatrixEntriesClass.__init__cCs|jS)N)r)r5rrr__call__szMatrixEntriesClass.__call__cCs|dkr|jSdS)Nr)r)r5rrrr __getitem__szMatrixEntriesClass.__getitem__cCs|d}|d}||j|<dS)Nr;r9)r)r5Z file_linevarZ uniquenumberrrrrszMatrixEntriesClass.AddToMapN)rrr __slots__r6rrrrrrrrs rc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS)r)SenseNamer\cCsd|_d|_i|_dS)N)rrr\)r5rrrr6szLPFileObjClass.__init__cCs|j|j|jfS)N)rrr\)r5rrrrszLPFileObjClass.__call__cCs.|dkr|jS|dkr|jS|dkr*|jSdS)Nrr:r;)rrr\)r5rrrrrs zLPFileObjClass.__getitem__cCs<|ddks|ddkr2tdt|td||_dS)Nrminrz8The obj sense in the lp file does not seem to be valid: r:)rPrQrrr)r5ZSenseInrrrrs zLPFileObjClass.AssignSensecCs ||_dS)N)r)r5argrrrrszLPFileObjClass.AssignNamecCst||j|<dS)N)rr\)r5CoeffrrrrrszLPFileObjClass.AddToMapN) rrrrr6rrrrrrrrrrs rc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS)r)r\ ComparatorRHScCsi|_d|_d|_dS)Nr)r\rr)r5rrrr6szLPFileConstraintClass.__init__cCs|j|j|jfS)N)r\rr)r5rrrrszLPFileConstraintClass.__call__cCs.|dkr|jS|dkr|jS|dkr*|jSdS)Nrr:r;)r\rr)r5rrrrrs z!LPFileConstraintClass.__getitem__cCs&|dkr|}|}dSt||j|<dS)N)=<>z<=z>=r)rr\)r5rrZ comparatorrhsrrrr!s zLPFileConstraintClass.AddToMapcCs ||_dS)N)r)r5rrrrr+sz&LPFileConstraintClass.AssignComparatorcCs ||_dS)N)r)r5rrrrr/szLPFileConstraintClass.AssignRHSN) rrrrr6rrrrrrrrrr s r)F)-rr itertoolsoperatorrrGrHabspath__file__rZpyomo.common.pluginrZ pyomo.coreZpyomo.core.base.varrZpyomo.core.base.piecewiserZ pyomo.pysprZpyomo.pysp.phsolverserverrZpyomo.pysp.phsolverserverutilsrsixr rRrNZ _ddsip_exerrdrerjrkrgrhrobjectr rrZSingletonPluginrrrrrrrrsN        $  y"