gpt4 book ai didi

set - MiniZinc 中的可选变量和集合成员资格

转载 作者:行者123 更新时间:2023-12-04 02:33:39 26 4
gpt4 key购买 nike

我有一个变量,它应该只在特定条件下有一个值,所以我想它需要是一个可选变量。如果满足该条件,则可选变量应限制为集合的元素。

问题是,MiniZinc 似乎不喜欢可选变量和集合。

如何重写,使 MiniZinc 不提示?

enum TYPES = { TYPE1, TYPE2 };
enum SUBTYPES = { SUBTYPE1, SUBTYPE2, SUBTYPE3, SUBTYPE4 };
var TYPES: mytype;
var opt SUBTYPES: subtype; % if "opt" is removed, it works

constraint mytype=TYPE1 -> subtype in { SUBTYPE1, SUBTYPE3 };

最佳答案

您的模型几乎是正确的,但是在您的约束中缺少对 subtype 的可选部分的处理。因为 subtype 不保证存在,我们不能直接说它必须在集合 {SUBTYPE1, SUBTYPE3} 中。相反,我们必须 (1) 强制 subtype 的值存在,并且 (2) 然后确保它的值在给定的集合内。

我们可以使用 occurs 内在函数来强制存在一个可选值。另一方面,它的值可以使用 deopt 内在函数来影响。约束因此变为:

constraint mytype=TYPE1 -> (occurs(subtype) /\ deopt(subtype) in { SUBTYPE1, SUBTYPE3 });

关于set - MiniZinc 中的可选变量和集合成员资格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62875764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com