我正在使用Python接口到Minizinc,并从外部文件中读取模型(.mzn)和数据(.dzn)。有办法从Python访问问题数据吗?
例如,我使用Minizinc手册中的cakes2 2模型,它有一个决策变量b和一个数据字段面粉。
from minizinc import Instance, Model, Solver
solverToUse = "coinbc"
solver = Solver.lookup(solverToUse)
print(solver.name, ",", solver.version)
model = Model("cakes2.mzn")
model.add_file("cakes2.dzn")
instance = Instance(solver, model)
print(instance.method)
result=instance.solve()
b = result.solution.b
print(b)这个没问题。但是我如何访问数据/参数面粉呢?以下是以与决策变量相同的方式交互请求数据时的结果:
C:\Users\MartinJo>python -i callingMinizinc2.py
COIN-BC , 2.10.5/1.17.5
Method.MAXIMIZE
3
>>> result.solution.b
3
>>> result.solution.flour
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Solution' object has no attribute 'flour'
>>> 发布于 2021-10-14 00:19:07
MiniZinc接口目前是一个使用minizinc可执行文件进行通信的接口。默认情况下,MiniZinc不会在解决方案输出中提供有关其参数变量的任何信息。这个问题有两种解决办法。
::add_to_output注释添加到您感兴趣的决策变量和参数变量中。这样就可以使用result.solution.flour了。pip install minizinc[dzn]来启用,然后将parse_data标志设置为True的数据文件包括进来。在您的示例中,model.add_file("cakes2.dzn", parse_data=True)。之后,数据将按Model对象的索引可用:Modelhttps://stackoverflow.com/questions/69553538
复制相似问题