如何通过Python接口读取Minizinc模型dzn文件中定义的参数数据
MiniZinc Python接口读取模型参数的实现方法
默认情况下,MiniZinc Python接口返回的Solution对象仅包含决策变量的取值,模型中定义的固定参数不会默认加入返回结果中,因此直接调用result.solution.参数名会触发AttributeError。你可以通过以下三种方法读取参数:
方法1:直接从Instance实例读取参数
加载完模型和数据文件之后,参数已经被解析赋值到Instance对象中,不需要等待求解完成就可以直接读取,示例代码:# 实例化完成后直接读取参数 flour_value = instance["flour"] print(flour_value)该方案是读取固定参数最高效的方案,不需要修改模型或求解配置。
方法2:开启求解时输出所有变量
在调用solve()方法时添加output_all_variables=True参数,会让求解结果返回所有模型内的变量、参数和中间计算值,之后就可以从Solution对象直接读取参数:result = instance.solve(output_all_variables=True) # 求解完成后即可读取参数 flour_value = result.solution.flour print(flour_value)该方法适合需要同时获取决策变量结果和对应参数的场景。
方法3:在MiniZinc模型中显式声明输出参数
在你的.mzn模型文件末尾添加输出语句,明确指定要输出flour参数:output [ "b = \(b)\n", "flour = \(flour)\n" ];修改后运行原有代码,即可从Solution对象中读取到
flour取值。
内容的提问来源于stack exchange,提问作者MartinJ
相关产品推荐
相关产品推荐

