MiniZinc 基本问题。 n 个工人和 n 个任务
MiniZinc basic problem. n Workers and n Tasks
我是第一次学习 Minizinc,有点卡在一个非常基本的问题上。它涉及n个工人和n个任务。我得到一个二维利润矩阵,其中 profit[w,t]
将给出工人 w
和任务 t
的利润。分配问题的目的是最大化利润。
我试过以下方法:
include "all_different.mzn";
include "globals.mzn";
int: n = 4;
array [1..n,1..n] of int: profit =
[| 7,1,3,4 |
8,2,5,1 |
4,3,7,2 |
3,1,6,3 |];
set of int: WORKERS = 1..n;
set of int: TASKS = 1..n;
array[WORKERS] of var TASKS: task;
constraint alldifferent(task);
constraint maximize sum(w in WORKERS) (profit[w,task[w]]);
但这不起作用,因为最大化功能不是那样设置的,但是我不知道还能做什么。
有 tips/solutions 吗?
谢谢:)
你快到了。问题出在最后一行,应该是 solve
,而不是 constraint
:
solve maximize sum(w in WORKERS) (profit[w,task[w]]);
输出为:
task: [4, 1, 2, 3]
----------
==========
我是第一次学习 Minizinc,有点卡在一个非常基本的问题上。它涉及n个工人和n个任务。我得到一个二维利润矩阵,其中 profit[w,t]
将给出工人 w
和任务 t
的利润。分配问题的目的是最大化利润。
我试过以下方法:
include "all_different.mzn";
include "globals.mzn";
int: n = 4;
array [1..n,1..n] of int: profit =
[| 7,1,3,4 |
8,2,5,1 |
4,3,7,2 |
3,1,6,3 |];
set of int: WORKERS = 1..n;
set of int: TASKS = 1..n;
array[WORKERS] of var TASKS: task;
constraint alldifferent(task);
constraint maximize sum(w in WORKERS) (profit[w,task[w]]);
但这不起作用,因为最大化功能不是那样设置的,但是我不知道还能做什么。 有 tips/solutions 吗? 谢谢:)
你快到了。问题出在最后一行,应该是 solve
,而不是 constraint
:
solve maximize sum(w in WORKERS) (profit[w,task[w]]);
输出为:
task: [4, 1, 2, 3]
----------
==========