带有决策变量的if陈述的配方问题

时间:2018-11-09 13:50:49

标签: model mathematical-optimization modeling cplex linear

我希望在Cplex中模拟生产,其中r_x是生产率。现在,我介绍了ea,它是设备的有效寿命([w])。如果要生产的产品超过405个,我想进行维护,这也会影响设备的有效寿命(正在工作),但是当产量在135到185之间时,我想进行一次清洁(b_clean)。但是方法我将其建模为程序不进行清洗...有人知道如何正确编写程序吗?

谢谢。

   //Bestimmen der Abnutzung des Werkzeugs
                        forall(s in S,p in P, t in T, w in W) 
                         if(t == 1 && s == 1){
                         ea[w][t][s]>=sum(p in P, m in M)r_x[m][w][p][t][s]*0.001;          
                        }else if(t > 1 && s < 2){
                            ea[w][t][s]>=(ea[w][t-1][3]+sum(p in P, m in M)r_x[m][w][p][t][s]*0.001)-b_maint[w][t-1][3]-(b_clean[w][t-1][3]*0.05);
                        }else if (s > 1){
                            ea[w][t][s]>=(ea[w][t][s-1]+sum(p in P, m in M)r_x[m][w][p][t][s]*0.001)-b_maint[w][t][s-1]-(b_clean[w][t][s-1]*0.01);
                        }       

                        //Wenn nicht produziert wird soll ea ebenfalls 0 sein
                        forall (w in W, t in T, s in S)
                        (sum(p in P, m in M)r_x[m][w][p][t][s]==0)==(ea[w][t][s]==0);

                        //Zeitpunkt der Instandhaltung
                        forall(w in W, t in T, s in S)  
                        (405<=sum(p in P, m in M)r_x[m][w][p][t][s])==(b_maint[w][t][s]==1);

                        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);

                            //Es kann gleichzeitig nur eine IH oder Reinigung vorgenommen werden
                        forall(w in W, t in T, s in S)  
                            b_maint[w][t][s]+b_clean[w][t][s]<=1;

0 个答案:

没有答案