我对合金很陌生,目前正在阅读 mit 的教程。我有点卡在事情的逻辑上。我正在尝试做的一件非常基本的事情如下。
- 一个人最多只能完成一项任务
- 一项任务最多可由 1 人完成
- 一个人只能做他/她能够做的事
当我运行以下命令时,每个人都具有相同的技能(所有技能),并且每项任务都需要相同的技能(再次全部)。每个人至少被分配一项任务,但有时他们会获得相同的任务。
提前致谢
some sig Skills{ }
some sig Person {
has: some Skills,
assigned: lone Task
}
some sig Task
{
requires: some Skills
}
{
// everyone must have the required task skills for assignment
all p:Person | p.has= requires
}
pred Valid ()
{
//everyone must be assigned to single task
all p:Person | lone t:Task| p.assigned in t
// no one can have the same task
no p1:Person , p2:Person | p1.assigned not in p2.assigned
}
run Valid