如何用不同的参数反复求解一个pysp模型的问题

时间:2019-09-06 15:36:35

标签: pyomo

我正在使用python作为调用pysp的接口。当我想在一个python脚本中用不同的参数多次求解一个pysp模型时,pysp总是返回第一组参数的结果。我想知道如何解决这个问题?

以下是我的代码的简要说明:

我每次都要更改的参数是“预算”。该参数通过文件“ scenario_data.py”输入到模型中。在修改了censage_data.py中的参数之后,我将重新生成ScenarioStructure.dat文件,然后调用solve_sto()函数来解决该问题。后续迭代(i = 1,2)的结果始终与第一个迭代(i = 0)相同,这是不正确的。但是,如果我运行该程序时没有进行“ for”迭代,只需设置budget = 1并解决问题并退出该问题,而设置budget = 2并解决问题并退出该程序,我将分别获得正确的结果。

非常感谢您的提前帮助。

真诚的 耶明

model.py:

import scenario_data 
budget = scenario_data.budget

***
model
***

另一个python脚本:

def solve_sto ():
    solvername = "cplex"
    abstract_tree = CreateAbstractScenarioTreeModel()
    concrete_tree = abstract_tree.create_instance("ScenarioStructure.dat")

    stsolver = rapper.StochSolver('model.py', tree_model = concrete_tree)

    ef_sol = stsolver.solve_ef(solvername, tee=False)
    if ef_sol.solver.termination_condition != pyo.TerminationCondition.optimal: 
    print ("oops! not optimal:",ef_sol.solver.termination_condition) 

for i in [0,1,2]:
    (rewrite the scenario_data.py with budget=i)
    (rewrite the ScenarioStructure.dat file) 
    solve_sto ()

0 个答案:

没有答案