3 votes

Comment ajouter une condition à une variable - GAMS

Dans le modèle que j'essaie de construire, j'ai une variable définie comme suit :

Variables
    x(i,j)  number of motors produced in month i to be delivered in month j ;

Dans cette variable, j doit toujours être égal ou supérieur à i pour que cela ait un sens (on ne peut pas produire quelque chose ce mois-ci pour le livrer le mois précédent). Cependant, je n'ai aucune idée de la façon dont je peux modéliser cela correctement. J'ai fait des recherches et je n'ai pas trouvé de solution simple à ce problème.

Des idées ?

2voto

Lutz Points 1056

Vous devriez utiliser les "variables avec domaines limités" pour cela, regardez ici pour plus de détails, c'est une fonctionnalité assez nouvelle de GAMS : https://www.gams.com/latest/docs/UG_ModelSolve.html#UG_ModelSolve_LimitedDomain

Ainsi, dans votre exemple, cela ressemblerait à ceci :

Set limX(i,j) limiting domain of x;

limX(i,j) = ord(j) >= ord(i);

Model m /all, x(limX)/;
...

Edit : Correction de la syntaxe de la déclaration du modèle.

1voto

Raquel Aguiar Points 61

Donc, j'ajoute ceci, juste après avoir déclaré la variable :

x.fx(i,j)$(ord(i)>ord(j))=0; 

C'est fixer les valeurs des variables que vous n'utilisez pas à zéro. Dans votre modèle :

enter image description here

Et les résultats sont :

enter image description here

Je pense que cela devrait suffire :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X