我有以下簡單的問題,我想使用與[MS求解基金會]實驗[1]:微軟求解基礎服務聲明語法
我有10個插槽,我需要填寫在整數〜5的範圍1欲執行只有兩個限制:
- 時隙[N] =時隙[N + 1]
- 的所有時隙的總和應大於20
我可以簡單地創建了以下決定:
Decision s1 = new Decision(Domain.IntegerRange(1, 5), "slot1");
Decision s2 = new Decision(Domain.IntegerRange(1, 5), "slot2");
Decision s3 = new Decision(Domain.IntegerRange(1, 5), "slot3");
Decision s4 = new Decision(Domain.IntegerRange(1, 5), "slot4");
Decision s5 = new Decision(Domain.IntegerRange(1, 5), "slot5");
Decision s6 = new Decision(Domain.IntegerRange(1, 5), "slot6");
Decision s7 = new Decision(Domain.IntegerRange(1, 5), "slot7");
Decision s8 = new Decision(Domain.IntegerRange(1, 5), "slot8");
Decision s9 = new Decision(Domain.IntegerRange(1, 5), "slot9");
Decision s10 = new Decision(Domain.IntegerRange(1, 5), "slot10");
然後設置手動約束在
model.AddConstraints("neighbors not equal",
s1 != s2, s2 != s3, s3 != s4, s4 != s5,
s5 != s6, s6 != s7, s7!= s8, s8 != s9, s9 != s10
);
model.AddConstraint("sum",
s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10 > 20);
不過,我有想象,有一個更好的方式來做到這一點 - 希望的東西更像聲明式句法。
你介意在這裏發佈解決方案嗎? – Larsenal 2009-09-10 18:50:30