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]
----------
==========