Il existe un système de contraintes linéaires . Je souhaite trouver un vecteur strictement positif qui satisfait ces contraintes. Cela signifie que est requis pour chaque composant de . Comment puis-je utiliser un solveur LP pour trouver un vecteur aussi strictement positif (ou confirmer qu'aucun n'existe)? Je ne peux pas simplement introduire un autre système de contraintes , car l'égalité doit toujours être autorisée dans un LP - mais je peux utiliser le solveur LP plusieurs fois, avec des fonctions d'objectif changeantes. Je pense que je devrais utiliser la méthode variable variable, mais je ne sais pas comment.x i x xx i > 0
15
Pour un problème de faisabilité LP, je n'utiliserais pas de simplex standard. Les algorithmes simplex primaux (ou doubles) standard ne visiteront que les sommets de l'ensemble faisable des problèmes primaux (ou doubles).
Soit l'ensemble faisable du problème que vous voulez réellement résoudre , et supposez plutôt que vous deviez résoudre le problème ( F ε ):F={x:Ax≤b,x>0} Fε
L'approximant le plus proche du problème que vous souhaitez résoudre est , qui admet un peu trop de points. Le problème est que la frontière de l'orthant positif (c'est-à-dire l'ensemble B = { x : x ≥ 0 , ∃ i : x i = 0 } pourrait constituer une partie de la frontière de l'ensemble réalisable de F 0. Nous tiens à exclure ces points. Une façon de le faire est de faire ce que Aron a suggéré, qui est de définir εF0 B={x:x≥0,∃i:xi=0} F0 ε à une petite valeur positive, puis utilisez n'importe quel algorithme LP standard. Cette stratégie est bonne et fonctionnera probablement dans une grande variété de situations. Cependant, il échouera si est irréalisable. Nous savons que F 0 ⊂ F ⊂ F ε pour tout ε > 0 (pour abuser de la notation et se référer à un ensemble faisable par son problème correspondant), et il est possible que même si vous choisissez de petites valeurs positives de ε , le solveur LP indiquera que votre LP est irréalisable.Fε F0⊂F⊂Fε ε>0 ε
Pour un solveur LP, j'utiliser tout algorithme de point intérieur pour LPs qui commence par un point réalisable et séjours possibles, ce qui est une autre façon d'exclure des points en . Vous n'avez pas besoin de fournir un point réalisable à ces algorithmes; les solveurs standard le feront pour vous. Des méthodes telles que la mise à l'échelle affine, la réduction du potentiel et les méthodes de barrière mettent en place des LP auxiliaires qui trouveront des solutions réalisables, et les itérations de ces algorithmes traversent l'intérieur de la région réalisable. Vous n'avez besoin de localiser qu'un seul point dans votre région réalisable, donc tant que les problèmes auxiliaires utilisés par les solveurs LP localisent un point faisable pour votre problème, et que ce point faisable est strictement positif, vous devriez être d'accord. Si la résolution de F ε échoue pour de petites valeurs positives de εB Fε ε , vous pouvez toujours utiliser ces méthodes pour localiser un point réalisable strictement positif dans .F0
N'utilisez pas simplex, cependant, car il n'explorera que les sommets de , ce qui est exactement ce que vous voulez éviter de faire.Fε
la source
Les problèmes de faisabilité sont un jeu un peu plus délicat que les problèmes linéaires généraux que vous avez notés. Si vous résolvez approximativement (en utilisant une représentation en virgule flottante du système d'équations et de contraintes), il est légitime d'exiger , où ϵ est une très petite valeur numérique, suffisamment grande pour garantir que x i réellement vit en ℜ + , mais suffisamment petit pour qu'une solution à la frontière ne soit pas envisagée.Xje> = ϵ ϵ Xje R+
Vous devrez peut-être ajuster , et votre solution sera qualifiée pour "dans un facteur de ϵ ", mais cela suffit pour de nombreuses situations.ϵ ϵ
la source
La réponse donnée par aeismail doit être lue attentivement, en ce qui concerne le lp
st
Il a des solutions et ( 0 , 1 ) ainsi que d'autres (dégénérées). La généralité de la question implique que ces cas doivent également être traités.( 1 , 0 ) ( 0 , 1 )
Puisque vous pouvez choisir votre fonction objective, vous pouvez essayer de la modifier de manière itérative. Par exemple, commencez avec tous les coefficients pour toutes les variables égales à un, vérifiez si vous obtenez une solution appropriée. Si une variable est nulle, augmentez son coefficient et recommencez ...
Bien que je ne puisse pas donner une preuve mathématique que cela fonctionne (ou une procédure bien définie comment modifier la fonction objectif). J'espère que ça aide :)
la source