【问题标题】:Problem with binary decision variable on CPLEXCPLEX 上的二元决策变量问题
【发布时间】:2021-10-18 14:04:52
【问题描述】:

Cplex 必须确定这个二元决策变量: dvar boolean y[I][J][M]; // 如果操作 O (ij) 分配给属于 M (O(ij)) 的机器 m 则 y(jm)=1 其中 int num_job=...;范围 J=1..num_job; //索引作业j int num_operationsjob=...;范围 I=1..num_operationsjobj; //索引操作

问题出在 M 上,因为我必须定义与 O (ij) 关联的机器集,我现在已经简单地用 M 定义了它,但这是错误的。我想过这样定义它们:

int 机器 [I][J] =...;

但现在我不知道如何将其放入决策变量中。你对我有什么想法吗?谢谢你:)

【问题讨论】:

  • 请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: variables cplex


【解决方案1】:

Making optimization simple内见

数组变量索引器大小 - 3 种方式:uniontuple setdecision expression

【讨论】:

  • 只是为亚历克斯的回答添加更多信息,我通常建议使用元组集来索引事物。多年来实施了许多模型,一旦您了解了这个想法,这已被证明是最灵活且易于使用的;并且因为您可以在许多情况下使用相同的方法,所以它成为一种熟悉的模式,既具有表现力又具有可读性。
  • 我尝试这样做,但决策变量仍然存在问题:tuple infooperazioni { key int job;关键 int 操作;关键 int macchina;关键 int processamento;关键 int 操作员; } {infooperazioni} 操作 =...; {int} 工作 = {i.job|i in opezioni}; {int} op = {i.operazione|i in opezioni}; {int} macchine [o in op][j in jobs] = {i.macchina|i inoperazioni : i.operazione ==o || i.job ==j}; dvar boolean y[I][J][m in macchine [o][j]] 其中 I 和 J 是我上面写的。我知道在机器上写 [m [o][j]] 不好,但我不知道该怎么做。
  • 最简单的方法(不是最聪明的方法)是github.com/AlexFleischerParis/zooopl/blob/master/…。因此,在您的情况下,您将 [m in macchine [o][j]] 替换为 allmachines where {int} allmachines={macchine[o][j] | o on op,j in jobs};
  • 我写:{int} allmachines= {macchine[o][j] | o 在 op,j 在工作};但 clpex 收到此错误:“不能使用类型 {int} 作为设置项”
猜你喜欢
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多