对于这个问题,我想在 cplex 中建模这个约束。但是我不确定我放置的索引是否正确。谁能帮我解释一下我是否做错了。这是我的一些代码:
Data:
Products = {P1 P2 P3};
NbOperations = 10;
NbPeriods = 3;
LeadTime = [1,1,3,5,0,0,3,0,0,0];
{string} Products = ...;
int NbOperations = ...; range Operations = 1..NbOperations;
int NbPeriods = ...; range Periods = 1..NbPeriods;
int LeadTime[Operations]= ...;
dvar int+ Y[Products][0..NbOperations][Periods];
dvar int+ Xin[Products][-4..NbPeriods];
forall(p in Products,l in Operations,t in Periods)
ct3:
Xin[p][t-LeadTime[l]] == Y[p][l][t];
LeadTime 是产品 p 的 l 操作的预计提前期。就我而言,我假设所有产品的交货时间都是相同的。
我觉得-4 是错误的。但是,我不知道如何改变它。 预先感谢。
你也可以切片然后就不用写-4
{string} Products = ...;
int NbOperations = ...; range Operations = 1..NbOperations;
int NbPeriods = ...; range Periods = 1..NbPeriods;
int LeadTime[Operations]= ...;
dvar int+ Y[Products][0..NbOperations][Periods];
dvar int+ Xin[Products][1..NbPeriods];
subject to
{
forall(p in Products,l in Operations,t in Periods:(t-LeadTime[l]) in 1..NbPeriods)
ct3:
Xin[p][t-LeadTime[l]] == Y[p][l][t];
}