首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声明语法

声明语法
EN

Stack Overflow用户
提问于 2009-09-09 17:14:26
回答 2查看 1.5K关注 0票数 2

我有以下简单的问题,我想用进行实验。

我需要用1到5的整数填充10个插槽。我只想强制执行两个约束:

  • slotn != slotn +1
  • 所有时隙之和应大于20

我可以简单地做出以下决定:

代码语言:javascript
复制
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");

然后手动设置约束,如

代码语言:javascript
复制
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 );

然而,我不得不想象有一个更好的方法来做到这一点--希望是在类似于声明式语法的东西上。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-10 19:43:58

密码。

代码语言:javascript
复制
SolverContext context = SolverContext.GetContext();
Model model = context.CreateModel();

Decision[] slot = new Decision[10];

for (int i = 0; i < slot.Length; i++)
{
    slot[i]  = new Decision(Domain.IntegerRange(1, 5), "slot" + i.ToString());
    model.AddDecision(slot[i]);
    if (i > 0) model.AddConstraint("neighbors not equal", slot[i-1] != slot[i]);
}

model.AddConstraint("sum", Model.Sum(slot) > 20);

Solution solution = context.Solve();
票数 2
EN

Stack Overflow用户

发布于 2009-09-10 18:17:07

讨论已经转移到我们的官方论坛:

http://code.msdn.microsoft.com/solverfoundation/Thread/View.aspx?ThreadId=2256

伦宁

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1400916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档