scheduling - 如何在 CPLEX 的调度问题中添加新的约束?

标签 scheduling cplex

我是 CPLEX 的初学者,我正在努力在我的项目中添加更多约束。当我有多个出发地和目的地且只有一种产品时,该脚本效果很好

我想在每个目的地有更多的产品需求,但我不知道如何编写约束。

{string} Forest = {"A","B","C","D","E"};
{string} Destination = {"D1" , "D2"};
{string} Products = {"Pinus","Eucalyptus"};

float Demand [Destination][Products]= [[3,1],[4,5]];
float Distance [Forest][Destination]=[[21,52],[42,12],[25,15],[52,31],[9,42]]; 
float Stock [Forest][Products]= [[0.94,0],[0,8.62],[0,1.21],[2.6,0],[8.77,0]];` 

//Decision Variables
dvar float+ Delivered [Forest][Destination];

//Função Objetivo
minimize
sum (u in Forest, c in Destination) Distance[u][c] * Delivered[u][c];

//Constraints

subject to {
   forall (u in Forest)
      sum (c in Destination)
        Delivered[u][c] <= Stock [u];


   forall (c in Destination)
      sum (u in Forest) 
         Delivered[u][c] >= Demand[c];

}

我有cross-posted this question .

最佳答案

您还需要按产品扩展您的决策变量(就像您对需求和库存所做的那样),以便您可以知道每种产品的交付量。

然后,您可以通过添加“forall(产品中的 p)”来复制每个产品的每个约束。

dvar float+ Delivered [Forest][Destination][Products];

forall (p in Products)
  forall (u in Forest)
    sum (c in Destination)
      Delivered[u][c][p] <= Stock[u][p]; 

关于scheduling - 如何在 CPLEX 的调度问题中添加新的约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58428388/

相关文章:

c - 从内核空间中的线程调度

algorithm - 如何将新的调度程序优先级添加到默认的 kubernetes 调度程序?

optimization - 了解 CPLEX 输出

c++ - 在 CPLEX 中自动创建 MILP 模型

algorithm - 任务/作业调度问题

python - 资源调度应用

asp.net-mvc - 安排每周执行一次的 Quartz.NET 触发器

java - cplex 用于 if-else 语句

c++ - 通过命令行在 Mac 上编译 Cplex 程序

c++ - 如何将条件约束转换为 cplex 的 Concert C++?