B u `2#ã@s@ddlmZddlmZmZmZmZmZddlm Z dd„Z dS)é)ÚBunch)ÚVarÚ ConstraintÚ ObjectiveÚmaximizeÚminimize)Úgenerate_standard_repnc Cstƒ}x2|jtddD] }| |jd|d| ¡f¡qWt|ƒ}x2|jtddD] }| |jd|d| ¡f¡qRWi}i}i}i}d} i} x˜|jtddD]†} x~| D]v} | | jt krÖt d| | j dd} t } nt | | j dd} t } x0t | j| jƒD]\}}||| ¡j| ¡f<qüWq¨WPqžWx<|jtddD](}|j|d}x|D]} || }t |jdd}| ¡r~qT|jdk r˜t |jddnd}|jdk r¶t |jddnd}|dk rÖ| ¡sÖtdf‚|dk rò| ¡sòtd f‚x‚t |j|jƒD]p\}}y| ¡jd|d}Wn"| ¡jd| ¡d}YnX| ¡}| |i¡ |g¡ t||| d ¡qW|js<|dkrªd| || f<|j|j||| f<n|dkrÖd | || f<|j|j||| f<ndtt | ƒ d ¡ƒ}d | ||f<|j|j||| f<tt | ƒ d ¡ƒ}d| ||f<|j|j||| f<n d| || f<|j|j||| f<qTWq:Wdd„}x’||ƒD]„\}}|| ¡f|krœq|x`|D]V} || }|j!}|ddkrä|d dkräd||| f<q¤|ddkr„|d dkrd||| f<nrd||| f<|d}| ¡jd|d}||  ¡}| |i¡ |g¡ td|| d ¡d| || f<|d ||| f<q¤|d dkr"|ddkr®d||| f<nrd||| f<|d}| ¡jd|d}||  ¡}| |i¡ |g¡ td|| d ¡d | || f<|d||| f<nØd||| f<|d}| ¡jd|d}||  ¡}| |i¡ |g¡ td|| d ¡d| || f<|d ||| f<|d}| ¡jd|d}||  ¡}| |i¡ |g¡ td|| d ¡d | || f<|d||| f<q¤Wq|W||||| ||| fS)NT)Úactive)Úfully_qualifiedÚ relative_toéÿÿÿÿF)Zcompute_values)r zQError during dualization: Constraint '%s' has a lower bound that is non-constantzRError during dualization: Constraint '%s' has an upper bound that is non-constant)ÚcoefÚvarÚndxéZlbZubrcss†x4|jtdddD] }| ¡jd|d}||fVqW| ¡}xB|dk r€x,|jtdddD]}| ¡j}||fVqZW| ¡}q@WdS)z¬ This conditionally chains together the active variables in the current block with the active variables in all of the parent blocks (if any exist). T)r Z descend_into)r r NF)Úcomponent_objectsrÚparent_componentÚgetnameZ parent_blockÚname)ÚbÚobjr©rú9/tmp/pip-unpacked-wheel-n62dbgi3/pyomo/duality/collect.pyÚall_varszs  z&collect_linear_terms..all_varsÚegÚgZ_upper_gð?ÚlZ_lower_)"ÚsetrrÚaddrZ is_indexedrrZsenserrÚexprrÚzipZ linear_varsZ linear_coefsrZ local_nameÚindexÚbodyZis_fixedÚlowerÚupperZ is_constantÚ RuntimeErrorÚmodelÚ setdefaultÚappendrZequalityZconstantÚtupleÚlistÚbounds)ÚblockZunfixedZvnamesrZcnamesÚAZb_coefZc_rhsZc_senseZd_senseZv_domainÚodatarZo_termsrr ÚdatarÚconZ body_termsZ lower_termsZ upper_termsÚvarnameZvarndxZndx_rr+Zname_rrrÚcollect_linear_termssÈ     *          $   $   $  $ r2N) Zpyomo.common.collectionsrZpyomo.core.baserrrrrZpyomo.repn.standard_repnrr2rrrrÚ s