我该如何制定我的模型来进行450的维护和150的清洁?
forall(w in W, t in T, s in S, p in P, m in M)
(450<=hub[m][w][t][s])<=(b_maint[w][m][t][s]==1);
forall(w in W, t in T, s in S, p in P, m in M)
(hub[m][w][t][s]>=150)<=(b_clean[w][m][t][s]==1);
我还希望在维护后将集线器设置回0 (轮毂是我的产量)这种配方对吗?。
forall(w in W, t in T, s in S, p in P, m in M)
(b_maint[w][m][t][s]==1)==(hub[m][w][t][s]==0);
我还可以像这样建模边界吗?
forall(w in W, t in T, s in S)
(135<=sum(p in P, m in M)r_x[m][w][p][t][s] && sum(p in P, m in M)r_x[m][w][p][t][s]<=185)==(b_clean[w][t][s]==1);
我也已经这样尝试过:
(135<=sum(p in P, m in M)r_x[m][w][p][t][s] <=185)==(b_clean[w][t][s]==1);
但这也不起作用...
答案 0 :(得分:0)
您可以使用逻辑约束:
(x==1) => (y<=2);
表示如果(x == 1),则y小于2。
您也可以使用等效项:
(x==3) == (z>=3)
致谢
答案 1 :(得分:-1)
您写了
forall(w in W, t in T, s in S, p in P, m in M)
(450<=hub[m][w][t][s])<=(b_maint[w][m][t][s]==1);
你本可以写的
forall(w in W, t in T, s in S, p in P, m in M)
(450<=hub[m][w][t][s])=>(b_maint[w][m][t][s]==1);
=>表示立即
那是你的意思吗?也许您的意思是说逆约束:
forall(w in W, t in T, s in S, p in P, m in M)
(b_maint[w][m][t][s]==1)=>(450<=hub[m][w][t][s]);