Contraintes arithmétiques

Les contraintes arithmétiques se créent à l'aide d'opérateurs arithmétiques placés entre expressions et variables de décision.

Les contraintes arithmétiques peuvent être créées de diverses manières.

Dans l'API C++, vous pouvez exprimer des contraintes entre des expressions en utilisant les opérateurs suivants :

  • égalité (==),

  • inférieur ou égal à (<=),

  • inférieur à (<),

  • Supérieur ou égal à (>=),

  • supérieur à (>)

  • différent de (!=).

Par exemple, dans le cas de l'API C++, vous pouvez écrire une contrainte stipulant qu'une expression est différente d'une autre :


      x[1] + 2*x[2] + 3*x[3] != 4*x[1]*x[2]

En utilisant l'API Java™, la contrainte peut être écrite comme suit :


        cp.neq(cp.sum(x[1], 
                      cp.sum(cp.prod(2,x[2]), cp.prod(3,x[3]))) , 
                             cp.prod(4,cp.prod(x[1],x[2])))

Avec l'API C#, la même contrainte pourrait s'écrire :


        cp.Neq(cp.Sum(x[1], 
                      cp.Sum(cp.Prod(2,x[2]), cp.Prod(3,x[3]))) , 
                             cp.Prod(4,cp.Prod(x[1],x[2])))

Concrètement, cette contrainte stipule que les valeurs affectées aux variables de décision x[1], x[2] et x[3] par la recherche CP Optimizer doivent être telles que l'expression x[1] + 2*x[2] + 3*x[3] ne soit pas égale à l'expression 4*x[1]*x[2].

Après avoir créé une contrainte, vous devez l'ajouter explicitement au modèle afin qu'elle soit prise en compte par l'optimiseur.

Pour plus de détails sur l'expression des contraintes, voir la section Contraintes et expressions arithmétiques.