B u `G@sddlmZmZmZmZmZmZmZmZm Z m Z m Z m Z ddl mZmZmZmZmZmZddlmZmZmZddd Zdd d Zd d ZdS)) ConcreteModelVarSet Objective ConstraintConstraintListNonNegativeRealsNonPositiveReals Expression ComponentMapmaximizeminimize) ProblemFormat SolverFactorySolverManagerFactory SolverStatusTerminationConditionSolutionStatus)isVariableNameIndexedextractVariableNameAndIndexextractComponentIndicesMASTERFNc5si}x2|jD](} | jdkr(td| j| j|| j<q Wt|d} |} |jdjr^t nt } g} |r|dks||dkrt dt ||dks|dks|dkrt dt ||rt dt d t |t d t |t d d t | j}t}| ||| t krtnt}t}| _xx|jD]n} d | j}t|d}| |||}|| j8}||7}| t krz|d9}|d|df| || jfq.Wx6|jD],} || j}| t | j|| jqW|rt dt}| _x|jddD]}x|jD]}dt |j}dt |j}tt|j d|dd}| |d|t||d}| ||t|d}| |||j!}xZt|j D]L}||} ||}!|"|sx(|!D] \}"}#|| |"df||"<qWqWqWqW|rdt | j}$t#|$d}%| |$|%t#t$dd|jDd| _%t#| j%d}&| _&|rdt | j}$| '|$}%|dkr~|&(|%n|&j)||%7_)t*| |&d| _+|rdt | j}$| '|$}%d t | j}| '|}d}'x| D]\}(}#|'|#|(7}'qW|'d|}'|'|7}'|%(|'|dk r|dkrFt d|t dt t,|sdx6|jD],} || j}| j}#|'|})|#|)7q\Wfdd}*d|}+t-|+|*d },| |+|,n$t d!t.|\}-}.|'|-}/|/dkrt d"|-d#t/|/|.}0t0|0dkr*t d$t |.d%|-x|0D]}1|/|1}2dx:|jD]0} || j}| j}#|'|-|1})|#|)7qHWfd&d}*d }3x$t |1D]}4|4d'kr|3|47}3qWd|-d(|3}+t-|+|*d },| |+|,q0W| S))NzCannot construct extensive form instance. The scenario tree does not appear to be linked to any Pyomo models. Missing model for scenario with name: %s)namergz4Weight of CVaR term must be >= 0.0 - value supplied=g?zDCVaR risk alpha must be between 0 and 1, exclusive - value supplied=zWriting CVaR weighted objectivezCVaR term weight=z CVaR alpha=Z CVAR_ETA_Z CVAR_EXCESS_)domainz.Creating variables for master binding instanceZMASTER_BLEND_VAR_ZMASTER_BLEND_CONSTRAINT_T_index) initializeZorderedrZ CVAR_COST_css|]}|j|jVqdS)N) _probability_instance_cost_expression).0scenarior#1/tmp/pip-unpacked-wheel-n62dbgi3/pyomo/pysp/ef.py sz%create_ef_instance..)r)Zsenseexprz3Creating chance constraint for indicator variable= z with alpha= csfdd}|S)NcsddfS)Ng?r#)model)cc_alpha cc_expressionr#r$CCrulesz6create_ef_instance..makeCCRule..CCruler#) expressionr*)r(r)r#r$ makeCCRulesz&create_ef_instance..makeCCRuleZcc_)rZrulezmultiple cc not yet supported.zUnknown variable=z) referenced as the CC indicator variable.zNo indices match template=z for variable=csfdd}|S)NcsddfS)Ng?r#)r')r(r)r#r$r*sz6create_ef_instance..makeCCRule..CCruler#)r+r*)r(r)r#r$r,sz ,_)1Z scenariosZ _instance ValueErrorrrZ findRootNodeZ _scenariosZ_instance_objectiveZ is_minimizingr r RuntimeErrorstrprint_namerZ add_componentrr rZCOMPUTE_SCENARIO_EXCESSr addappendrZ deactivater ZMASTER_CONSTRAINT_MAPZ_stagesZ _tree_nodesrsortedZ_standard_variable_idsZ_variable_datasZis_variable_fixedr sumZEF_EXPECTED_COSTZMASTER_OBJECTIVE_EXPRESSIONZfind_component set_valuer&rrrrrrlen)5Z scenario_treeZef_instance_nameZverbose_outputZgenerate_weighted_cvarZ cvar_weightZ risk_alphaZcc_indicator_var_namer(Zscenario_instancesr"binding_instanceZ root_nodeZ opt_senseZcvar_excess_vardatasZcvar_eta_variable_nameZcvar_eta_variableZexcess_var_domainZcompute_excess_constraintZcvar_excess_variable_nameZcvar_excess_variableZcompute_excess_expressionZscenario_instanceZ_cmapZstageZ tree_nodeZmaster_blend_variable_nameZmaster_blend_constraint_nameZmaster_variable_indexZmaster_variableZmaster_constraintZtree_node_variable_datasZ variable_idZmaster_vardataZvardatasZscenario_vardataZscenario_probabilityZcvar_cost_expression_nameZcvar_cost_expressionZopt_expressionZ cost_exprZscenario_excess_vardataZcc_varr,Zcc_constraint_nameZ cc_constraintZ variable_nameZindex_templatevariableZ match_indicesindexZvariable_valueZ indexasnamecr#)r(r)r$create_ef_instance's                      *                          r=c Cs|dd}t|dkr$td||d}i}|rFzwrite_ef..)filenameformatZsolver_capability io_optionsnlcSsdS)NTr#)rDr#r#r$rENrFmpscSsdS)NTr#)rDr#r#r$rEVrFzUnknown file suffix=z& specified when writing extensive form)rsplitr8r/writerZcpxlprJrK) r9Zoutput_filenamerArBpiecesZef_output_file_suffixrIr-Zsmap_idr#r#r$write_ef-s>  rOc Cst|j}t|j~}|dkr6td|jdt|jdkrhtdt|j| d |j|j dk r|j dks|j dkrtdt|j n|j |_ i}d |d <|j rd |d <|jrd |d <|jrd |d<|jrd |d<|jrtd|js |r |j|f|d d|}n|j|fd|i|}||}|jjtjkr|jjtjkst|jdkr|djtjkr|j ||SWdQRXWdQRXt!ddS)Nz(Failed to create solver manager of type=z for use in extensive form solverz$Initializing ef solver with options=rgg?z]Value of the mipgap parameter for the EF solve must be on the unit interval; value specified=FZload_solutionsTZ keepfilesrAteerBzSolving extensive form.)optZ warmstartrQzExtensive form was infeasible!)"rZ solver_typerZsolver_manager_typer.r8Zef_solver_optionsr1r0Z set_optionsjoinZ ef_mipgapZmipgapZkeep_solver_filesrAZoutput_solver_logZwrite_fixed_variablesverboseZdisable_warmstartsZwarm_start_capablequeuewait_forZsolverstatusrokZtermination_conditionrZoptimalZsolutionrZ solutionsZ load_fromr/)Zmaster_instanceoptionsZ ef_solverZef_solver_managerZ solve_kwdsZef_action_handleresultsr#r#r$solve_efcsX      $ rZ)rFFNNNr)FF)Z pyomo.corerrrrrrrr r r r r Z pyomo.optrrrrrrZpyomo.pysp.phutilsrrrr=rOrZr#r#r#r$ s8   3