B _7@sddlZddlZddlZddlZddlmZddlmZmZddl m Z ddl m Z m Z mZmZmZddl mZmZddlmZddlmZmZejeZed Zd Zd Zd d Z ddZ!dddZ"ddZ#dddZ$d ddZ%ddZ&d!ddZ'e(dkr e)e'dS)"N) ProblemFormat)BlockSuffix)InvocationType)PySPConfigValuePySPConfigBlocksafe_register_common_optionsafe_register_unique_option_domain_must_be_str)ScenarioTreeManagerClientSerialScenarioTreeManagerClientPyro)scenario_tree_id_to_pint32)parse_command_linelaunch_commandz pyomo.pyspZschurip_objective_weightZschurip_variable_idcCstj|st|j|j}t|dr*ttdd}|d||t t t j t j dt |t }|j}xp|jjddD]\}xV|jD]L} || j} | j} |dt| j} x | jD]} t| | || | <qWqWqzWt|}t|tt|kst|tt t j d|jt |t|<g}xn|jddD]^}g}x:d D]2}t||rB||t ||ft||dqBWt|r4|||fq4Wtj|t|jd }|j |t!j"|d \}}|j#j$|}x2|D]*\}}x|D]\}}t|||qWqW|%|||fS) Nz .schuripoptT)concrete) directiondatatypeZMASTER_BLEND_VAR_)r)active) _gen_obj_repn _gen_con_repnz.nl)format io_options)&ospathexistsAssertionErrorZ_bundle_binding_instance_mapnamehasattrr add_component_variable_id_suffix_namerEXPORTINTgetattr scenario_treeZstagesZnodesZget_nodeZfind_componentstr_standard_variable_idsr listvalueslenset_objective_weight_suffix_name probabilityblock_data_objectsappendsetattrjoinwriternl solutions symbol_map del_component)workerbundleoutput_directoryrZbundle_instancetmpblocklinking_suffixr$Zstage_nodenode node_nameZmaster_variable variable_id_ids block_attrsblockattrs attr_nameoutput_filename_smap_idr4attr_valrHA/tmp/pip-unpacked-wheel-d4p3hk07/pyomo/pysp/convert/schuripopt.py_write_bundle_nl'sX               rJcCstj|st|j}t|dr$ttdd}|d||jj }|t t t j t j dt|t }x>|jddD],}|j} x |jD]} t| | ||| <qWqtWt|} t| tt| kst|tt t j d|jt|t|<g} xj|jddD]Z} g}x:dD]2}t| |r ||t| |ft| |dq Wt|r| | |fqWtj|t|jd }|j|tj |d \}}|j!j"|}x2| D]*\} }x|D]\}}t| ||qWqW|#|||fS) Nz .schuripoptT)r)rrr)r)r)rrz.nl)rr)$rrrr _instancerrrZ_ScenarioTreeSymbolMapbySymbolr rr!r"r#Z _node_listrr&r r'r(r)r*r+r,r-r.r/r0r%r1rr2r3r4r5)r6scenarior8rinstancer9rLr:r<r=r>r?r@rArBrCrDrErFr4rGrHrHrI_write_scenario_nlysP           rOFc Csd}t|dx}|sP|rPd}x`|jD]"}|t|jd|dq(Wn2d}x,|jD]"}|t|jd|dq\WWdQRX|dk st|S)Nwbundlesz.nl scenarios)opencontains_bundlesrQr1r%rrSr)r$problem_list_filenameignore_bundlessubproblem_typefr7rMrHrHrI_write_problem_list_files     rZc Cs|dkr<|jstx|jjD]}t||||\}}q Wn|dksHti}|jrxF|jjD]:}|jjdk r`|jj||<d|j_|jj rt|j q`Wz(x"|jjD]}t ||||\}}qWWdx2| D]&\}} | |j_|jj st|j qWXdS)NrQrS)r$rUrrQrJrSrK_parentZ_instance_objectiveractivaterOitemsZ deactivate) r6Zworking_directoryrXrr7fnamer4Z orig_parentsrMparentrHrHrIEXTERNAL_write_nls8      r`cCsbtj|st|tj|d}|j}t|||d}|dksDt|jdt t j |||fddS)NzPySP_Subproblems.txt)rW)rSrQr`)Zinvocation_typeZ function_args) rrrmakedirsr0r$rZrZinvoke_functionthisfilerSingle)managerr8rWrverboserVr$rXrHrHrIwrite_schuripopt_filess"   rfc Cs|dkrt}t|dt|dt|dt|dt|dt|dtdtddd d t|d td td dd d t|dt|t||S)N disable_gcprofile tracebackresymbolic_solver_labelsr8.zKThe directory in which all SchurIpopt files will be stored. Default is '.'.r)domain descriptiondocZ visibilityrWFz@Ignore bundles when converting the SP to SchurIpopt input files.scenario_tree_manager) rrr rr boolr Zregister_optionsr )optionsrHrHrI"convertschuripopt_register_optionss:          rrc Csddl}t}d|ji}|jr$td}|jdkr8t}n|jdkrFt}||&}|t ||j |j ||j d}WdQRXt}t d|j t dt d ||dS) zT Construct a senario tree manager and write the schuripopt input files. rNrjserialZpyro)rWrrez)SchurIpopt files written to directory: %sz!Total execution time=%.2f seconds) pyomo.environtimerjZcompile_scenario_instancesrror r Z initializerfr8rWreprint)rqpyomo start_timerZ manager_classrofilesZend_timerHrHrIconvertschuripoptEs0     r{c Cs\ddl}yt|tddd}Wn$tk r@}z|jSd}~XYnXtt|d|j|j|j dS)Nrr{z:Optimize a stochastic program using the SchurIpopt solver.)progrmzconvertschuripopt: )Z error_labelrgZ profile_countri) rurrr SystemExitcoderr{rgrhri)argsrxrqZ_excrHrHrImainns r__main__)F)FNF)N)N)*rrvsysloggingZ pyomo.optrZ pyomo.corerrZpyomo.pysp.scenariotree.managerrZpyomo.pysp.util.configrrrr r r r Zpyomo.pysp.scenariotree.utilr Zpyomo.pysp.util.miscrrrabspath__file__rb getLoggerloggerr+r rJrOrZr`rfrrr{r__name__exitrHrHrHrI s4     RN &  *) "