2016-04-04 1 views
1

Comment convertir la contrainte | x | > = 2 pour que cela fonctionne dans un programme linéaire (en particulier, résoudre en utilisant Simplex).Programmation linéaire - Valeur absolue supérieure à une constante

Je comprends comment convertir | x | < = 2 comme cela deviendrait x < = 2 et -x < = 2

Cependant, la même logique ne fonctionne pas lorsque vous avez une constante minimale.

+5

Je vote pour clore cette question hors-sujet car c'est une question purement mathématique, pas une question de programmation informatique. ("Linear programming" est un terme un peu trompeur, il n'a aucun rapport avec la programmation informatique.) – duskwuff

Répondre

3

Il n'existe aucun moyen de créer une équation comme |x|>=2 dans un LP pur (continu). Vous devez formuler x <= -2 OR x >= 2 qui est non-convexe. Cela nécessitera une variable binaire rendant le problème MIP.

Une formulation peut être:

x >= 2 - delta*M 
x <= -2 + (1-delta)*M 
delta in {0,1} 

M est judicieusement choisi grand nombre. Par exemple. si -100<=x<=100 alors vous pouvez choisir M=102.