2014-07-20 2 views
2

Je veux ajouter la contrainte suivante:Somme seulement pour des éléments moins que N

@addConstraint(m, sum{sum{x[:alpha, d, s], s in S}, d in D} >= 5) 

x est une variable de décision et

D = [1:50] 

mais je veux la somme à calculer que pour d moins de 10.
Existe-t-il un moyen intégré ou dois-je trouver une solution de contournement?

Répondre

4

devrait être en mesure de le faire d in D; d < 10, à savoir

@addConstraint(m, sum{sum{x[:alpha, d, s], s in S}, d in D; d < 10} >= 5) 

Pour être complet, voici le link to the relevant section of the manual, qui pourrait être structuré mieux. Nous allons travailler dessus!

+0

J'ai essayé d'utiliser la virgule avant, mais cela n'a pas fonctionné. Votre solution fonctionne, merci! – HAL9000

+0

juste une précision: ça devrait être <10 ou <= 9 – HAL9000

+0

Oh oui, subtil! – IainDunning

0

Je ne connais pas votre application, mais une simple arithmétique peut vous donner la somme, en supposant que les éléments sont des entiers consécutifs uniques, que vous n'avez pas clarifiés dans votre question. Cela aurait été découverte par Gauss:

la somme de n entiers consécutifs (à partir de 1) est donnée par: (n (n + 1))/2

chances sont que cela est plus rapide et plus simple que toute fonction de sommation intégrée, mais là encore, il y a des contraintes que votre question n'a pas clarifiées.

+0

Merci, j'ai ajouté une description de x, qui est une variable de décision, donc votre solution n'est pas réalisable, désolé. – HAL9000

Questions connexes