【问题标题】:Modeling a binary constraint in AMPL - CPLEX在 AMPL 中对二元约束建模 - CPLEX
【发布时间】:2019-10-14 01:20:47
【问题描述】:

我有以下限制

我尝试使用以下代码在 AMPL 中对其进行建模:

var y {1..njobs} binary;

subject to overlap 
    {i in 1..njobs, j in i+1..njobs: i<>j}:
        xi[i] + si[i] <= xi[j]+m*y[i];

 subject to order
    {i in 1..njobs, j in i+1..njobs: i<j}:
        y[i] + y[j] = 1;

我是这个主题的新手,似乎遗漏了上面代码中的某些内容。有什么建议吗?

【问题讨论】:

标签: linear-programming cplex ampl


【解决方案1】:

根据约束,y 有两个索引,i 和 j,但您的代码只给它一个索引。

应该是这样的:

var y {1..njobs,1..njobs} binary;
subject to overlap 
    {i in 1..njobs, j in i+1..njobs: i<>j}:
        xi[i] + si[i] <= xi[j]+m*y[i,j];

 subject to order
    {i in 1..njobs, j in i+1..njobs: i<j}:
        y[i,j] + y[j,i] = 1;

当前,当 i = j 时的行为未定义。您可能希望添加一个定义这种情况下行为的约束,或者在声明 y 时将其从索引空间中排除,例如:

var y {i in 1..njobs,j in 1..njobs: i <> j} binary;

【讨论】:

  • 谢谢!我对完整模型的问题进行了跟进,并没有把它贴在这里,所以我可以接受你的回答。我可以用完整的模型发布一个新问题并在那里得到你的答案,这样我也可以接受吗?
  • @khedir 是的,如果是其他问题,请将其作为新问题发布。 (SO 适用于每个帖子一个问题的模型。)正如 Rodrigo 建议的那样,您可以考虑在 OR 网站上提问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
相关资源
最近更新 更多