Cplex, помогите мне сформулировать условное ограничение - PullRequest
0 голосов
/ 30 мая 2018

Пожалуйста, мне нужна помощь, как мне сформулировать это условное ограничение для cplex:

if (S[i][t] <=0 ) then   S[i][t+1]=S[i][t]-livraison[i][t]+order[i][t]

с S[i][t] и order[i][t] являются переменными решения, а
livraison[i][t] является известным параметром

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Давайте проверим этот код

{int} part ={1, 2};
{int} time = {1, 2, 3, 4, 5};

int livraison [part][time] =[[20, 30, 46, 24, 53], [12, 12, 14, 65, 34]];

dvar int S[part][time];
dvar int order[part][time];

int iniS[part] = [0, 0];
int iniorder[part] = [0, 0];

subject to {

forall(i in part, t in time) {
    if (t == 1){
        S[i][t + 1] == iniS[i]-livraison[i][t]+iniorder[i];
    }
    else if (t >= 2){   
        (S[i][t-1] <=0) => (S[i][t] == S[i][t-1]-livraison[i][t-1]+order[i][t-1]);
    }
}
}

Я надеюсь, что это может вам помочь, или проверьте это обсуждение: https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014923153

0 голосов
/ 31 мая 2018
(S[i][t] <=0 ) =>   (S[i][t+1]==S[i][t]-livraison[i][t]+order[i][t]);

С уважением

...