我想针对每个时间段优化一个问题。我必须考虑12个小时。我为每个节点和每个时隙定义了变量,例如 pd[n][t]。但我想一次在一个时间段内最大化 pd[n][t] 。一次性时隙的 pd[n][t] 取决于我在下面提供的约束的另一个时隙。
如何在 opl CPLEX 中编写目标函数和约束的代码?我定义变量的方式是否正确?我无法一次编写一个槽的代码,因为一个变量的决定取决于该变量在前一小时内的一个决定。所以我必须每次都一起编写代码,同时我必须最大化每个小时的目标。
maximize z[t];
subject to {
forall (t in 1..12){
z[t] == ((w1*(sum(n in 1..10)(Priority_coefficient[n]*pd[n][t]))) - (w2*(sum(m in 1..2)(Cost_coefficient[m]*100000*gp[m][t] + tra_coefficient[m]*trav[m][t]))));
}
forall(t in 1..12: t>=2){
forall (n in Node){
pd[n][t-1] <= pd[n][t];
}
}
}
我在上述代码的第一行 [maximize z[t]] 中遇到的错误是:名称“t”不存在。
如何编写代码以便能够针对 t 的每个值最大化 z[t]?如何定义cplex中的目标函数?这样 z[s] 在每次 t 时都最大化。
maximize sum(t in 1..12) z[t];
如果你想最大化 z 的总和
maximize min(t in 1..12) z[t];
如果你想最大化 z 的最小值 ( maxmin )