我正在使用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 ()