Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 如何识别微量锌问题(最大化或最小化)有多种答案_Optimization_Minizinc - Fatal编程技术网

Optimization 如何识别微量锌问题(最大化或最小化)有多种答案

Optimization 如何识别微量锌问题(最大化或最小化)有多种答案,optimization,minizinc,Optimization,Minizinc,我只是做了一些实验,看看如果一个优化问题有很多解决方案,会发生什么。我知道,通过Minizing,我们可以为这个问题找到多个答案。(就像《用户指南》中的地图着色一样)。 在我们得到最佳答案后,迷你锌总是显示一条双虚线 现在我只是在代码下面运行,我注意到如果我使用gecode解算器的答案与使用coin bc或cplex解算器的答案不同。Minizing中是否有任何功能,当这些类型的多个最佳答案出现问题时,我们会收到通知,或者在不考虑我们使用的解算器的情况下获得所有解决方案 enum sup

我只是做了一些实验,看看如果一个优化问题有很多解决方案,会发生什么。我知道,通过Minizing,我们可以为这个问题找到多个答案。(就像《用户指南》中的地图着色一样)。 在我们得到最佳答案后,迷你锌总是显示一条双虚线

现在我只是在代码下面运行,我注意到如果我使用
gecode
解算器的答案与使用
coin bc
cplex
解算器的答案不同。Minizing中是否有任何功能,当这些类型的多个最佳答案出现问题时,我们会收到通知,或者在不考虑我们使用的解算器的情况下获得所有解决方案

    enum suppliers;
    suppliers={s1,s2,s3};
    set of int:sup=1..length(suppliers);
    array[sup] of float:price=[3.0,6.0,12.0];
    array[sup] of int:max=[2,3,1];
    int:demand=3;
    array[sup] of var 0..1000:qty;
    var float:cost;

    constraint sum(i in sup)(
    qty[i])=demand;

    constraint forall(i in sup)(
    qty[i]<=max[i]
    );

    constraint qty[2] != 1;
    constraint qty[1] != 1;

    constraint sum(i in sup)(
    price[i]*qty[i])=cost;

    solve minimize cost;
enum供应商;
供应商={s1、s2、s3};
成套int:sup=1..长度(供应商);
浮点数组[sup]:price=[3.0,6.0,12.0];
int:max=[2,3,1]的数组[sup];
int:需求=3;
变量0..1000的数组[sup]:数量;
var浮动:成本;
约束和(sup中的i)(
数量[i])=需求;
所有限制条件(支持中的i)(

数量[i]一个优化问题确实会有多个正确的最优答案。不同的解算器通常会提供不同的解决方案;但是,如果解算器功能正常,则两种解决方案中的目标值(在您的情况下,
成本
)应该相同

Minizing中经常使用的一种寻找所有(或至少更多)最优解决方案的方法是添加
约束成本=V;
,其中
成本
是目标的名称,
V
是为您的问题找到的最佳值。如果我们随后将问题更改为满意问题(
解决
),则支持“查找所有解决方案”(如
chuffed
gecode
)的解算器可以找到原始问题的所有最优解决方案

请注意,找到所有最优解决方案通常比只找到一个最优解决方案要困难得多。

已经回答了您的问题。我想补充一点,它内置了对找到所有相同最优值解决方案的支持

最简单的试用方法是下载、配置和安装,然后使用选项
——所有解决方案都选择
,例如

~$ fzn2optimathsat.py examples/flatzinc_allsolutions.fzn --all-solutions-opt
% allsat model
x = 3;
y = 0;
r1 = true;
r2 = false;
----------
% allsat model
x = 3;
y = 1;
r1 = true;
r2 = false;
----------
==========