我想在Jupyter用迷你锌。 我已经安装了所有的软件包,但是当我运行模型时,它运行了一个错误。我尝试使用Minizing Python pdf上的示例,但它运行相同的错误。 代码是:
from minizinc import Instance, Model, Solver
gecode = Solver.lookup("gecode")
model = Model()
model.add_string(
"""
include "all_different.mzn";
set of int: A;
set of int: B;
array[A] of var B: arr;
var set of B: X;
var set of B: Y;
constraint all_different(arr);
constraint forall (i in index_set(arr)) ( arr[i] in X );
constraint forall (i in index_set(arr)) ( (arr[i] mod 2 = 0) <-> arr[i] in Y );
"""
)
instance = Instance(gecode, model)
instance["A"] = range(3, 8) # MiniZinc: 3..8
instance["B"] = {4, 3, 2, 1, 0} # MiniZinc: {4, 3, 2, 1, 0}
result = instance.solve()
print(result["X"]) # range(0, 5)
assert isinstance(result["X"], range)
print(result["Y"]) # {0, 2, 4}
assert isinstance(result["Y"], set)
Jupyther返回:
RuntimeError: asyncio.run() cannot be called from a running event loop
按照安装步骤进行,就像他们说的那样,这很神奇Using MiniZinc in Jupyter Notebooks
只需运行
pip install -U iminizinc
,然后您的单元格将如下所示:(^这可能会导致白色输出出现奇怪的青色错误,请忽略它。如果要确保成功加载Minizing,请再次运行该单元格,并显示类似
The iminizinc extension is already loaded.
的内容)最后一个单元格实际上是迷你锌代码,在单元格内执行,输出将是您的解决方案
如果您正在寻找所有可能的解决方案,只需将标志
-a
添加到magic:%%minizinc -a
您还可以使用标志
-m bind
:%%minizinc -m bind
将输出绑定到python变量。在您的情况下,您可以在另一个单元格中检查输出变量,如下所示:要获得所有可能的可用标志,请使用magic:
%%minizinc?
相关问题 更多 >
编程相关推荐