【发布时间】:2012-11-01 09:44:54
【问题描述】:
我对合金很陌生,目前正在阅读 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
【问题讨论】:
-
将困境更改为仅
no p1:Person| all p2:Person | p1.assigned in p2.assigned似乎比以前的工作更好,但在某些情况下仍然存在相同的问题。还有为什么即使有1个以上的技能,所有的人和任务关系每次都去同一个技能?
标签: alloy