Minizinc 可以有多个';求解';是否应用于微量锌?
我尝试在单个Minizinc 可以有多个';求解';是否应用于微量锌?,minizinc,Minizinc,我尝试在单个mzn文件中应用以下结构: define Variables; %% first set of constraints constraint ...; constraint ...; solve satisfy; %% second set of constraints constraint ...; constraint ...; solve satisfy; 其中第二组约束是应用于第一组求解的结果的约束,单独执行操作将减少搜索空间,从而减少计算时间,这就是我首先提出此结构的
mzn
文件中应用以下结构:
define Variables;
%% first set of constraints
constraint ...;
constraint ...;
solve satisfy;
%% second set of constraints
constraint ...;
constraint ...;
solve satisfy;
其中第二组约束是应用于第一组求解的结果的约束,单独执行操作将减少搜索空间,从而减少计算时间,这就是我首先提出此结构的原因
有没有办法实现这种依赖结构?由于Minizing不允许两个解算
,正如您提到的,Minizing在一个模型中只需要一个解算
根据问题的不同,还有其他方法
1) 用另一种编程语言编写程序,运行第一个Minizin模型并获取结果。然后,您可以制作(运行时)另一个Minizing模型,该模型使用之前的结果运行。这是我自己可能会使用的方法
Minizing的开发版本包括一个Python接口,这可能会使它变得非常简单。然而,我还没有测试过这个
2) 在很大程度上取决于具体问题,可能会在同一个模型中组合这两个版本。例如,如果问题有两个目标,那么您可以在模型中同时包含两个子问题,并将这两个目标结合起来,在目标上增加权重,以确定每个子问题目标的重要性。这是处理多目标(多目标)的“标准”方法,如线性规划。但是,Minizing中没有对此的特殊支持
(我想在Minizing中拥有的一个相关功能是支持一个模型,该模型首先解决一个目标,然后生成满足该目标的所有解决方案。这在今天的Minizing中是不可能的。然而,Minizing的实验性MiniSearch扩展可能使这成为可能,至少据开发人员说。尽管我从来没有让它工作过……)