Il y a un programme linéaire pour lequel je veux non seulement une solution mais une solution aussi centrale que possible sur la face du polytope qui assume la valeur minimale.
A priori, nous nous attendons à ce que la face minimisante soit de grande dimension pour diverses raisons, notamment que la fonction objectif minimisée soit le maximum de nombreuses contraintes:
Minimisez sous avec linear et pour tout et .f i ( ˉ x ) ≤ ϵ < 0 f i x i > 0 i ∑ i x i = 1
Bien entendu, nous n'obtiendrions jamais de propriété de type centralité dans l'algorithme simplex. Est-ce que certains des algorithmes de point intérieurs habituels présentent de telles propriétés? Y a-t-il même une garantie qu'ils éviteront les sommets ou les faces de dimension inférieure autant que possible?
En fait, je suis probablement satisfait d'un programme quadratique facile qui trouve le milieu de tout le polytope car la centralité importe plus que la minimalité, juste vaguement curieux si d'autres algorithmes de programmation linéaire offrent des propriétés pertinentes.
Mise à jour: j'ai réduit le problème sous-jacent à un simple problème de minimisation contraint résolu avec les multiplicateurs de Lagrange, mais la question ci-dessus reste intéressante de toute façon.
la source
Réponses:
J'ai quelques observations trop longues pour des commentaires. Voici un résumé.
Tout algorithme pour résoudre exactement votre problème peut être utilisé pour résoudre des programmes linéaires exactement (c.-à-d., "Une programmation linéaire forte", qui est utilisée dans la solution de Sariel, et qui n'a actuellement pas d'algorithme polynomial temporel).
Le suivi naturel est de savoir si des solutions approximatives (c'est-à-dire une "programmation linéaire faible") peuvent fournir une solution. Bien que la réponse soit oui, il semble que la condition d'arrêt de cette procédure nécessite des quantités qui, à ma connaissance, ne peuvent pas être calculées en temps polynomial. (c.-à-d. que l'algorithme trouve quelque chose de bien, mais certifier cela est difficile.) Ma principale suggestion ici est de faire une définition significative d'une « solution optimale » pour votre problème, auquel cas cette approche est traitable. (Cette stratégie jette efficacement les minuscules faces du polyèdre.)ϵ
En général, tout en réfléchissant à votre énoncé actuel de votre problème, j'ai continué à me heurter à des considérations d'efficacité. Mais il y a une intuition raisonnable à cela: les objets que nous jetons autour - sommets, visages, etc. - sont discrets et exponentiellement abondants.
(1.) Supposons que nous ayons un algorithme qui résout exactement votre problème. Notez que tout point exposé d'une face contenant le point milieu fourni sera une solution exacte au programme linéaire d'origine. Procédez comme suit. Ajoutez une nouvelle contrainte linéaire en disant que la valeur d'objectif d'origine doit être égale à la valeur optimale (que nous connaissons maintenant), et définissez un nouvel énoncé d'objectif pour maximiser la première coordonnée de la solution. Répétez cette procédure une fois pour chaque dimension, en ajoutant chaque fois une contrainte et en choisissant une nouvelle coordonnée à maximiser. Ce processus réduira à chaque fois la dimension de la solution; nécessairement, lorsque le processus se termine, nous avons un ensemble affine à 0 dimension, ce qui signifie un seul point. Ainsi avecO(d) itérations de votre algorithme de résolution médiane (et en augmentant seulement la description du problème d'un montant polynomial en chaque fois), une forte programmation linéaire est résolue. Cela montre que bien que la solution de Sariel nécessite une programmation linéaire forte, une solution exacte à votre question ne peut pas l'éviter. ( Edit : notez que ma preuve suppose un polyèdre compact (un polytope) en entrée; sinon il faut travailler un peu plus pour trouver des sommets.)d
(2.) Voici un schéma itératif, utilisant un solveur convexe complet à chaque itération, dont les solutions convergeront vers une notion légère de solution médiane. Choisissez une séquence positive mais décroissante de paramètres de pénalité ; il est raisonnable de les faire descendre géométriquement, c'est-à-dire λ i = 2 - i . Maintenant, pour chaque i , minimisez approximativement la fonction convexe{λi}∞i=1↓0 λi=2−i i
Toutes les conditions d'arrêt que j'ai pu trouver ont eu ce genre de difficultés de calcul. (De plus, beaucoup pourraient à nouveau être utilisés pour en faire un solveur de programmation linéaire puissant.)
(Quelques commentaires finaux.) Il semble que la notion de «point médian» soit cruciale; Le commentaire de Sasho souligne que le centroïde (centre de masse?) Est un problème extrêmement difficile, alors que trouver, disons, la plus grande boule inscrite est facile. Les barrières logarithmiques que j'ai suggérées ci-dessus ne seront en général cohérentes avec aucune de ces notions médianes. En revanche, pour les barrières et la balle, vous pouvez dériver une limite inférieure sur la distance de votre centre de gravité à la limite relative du visage; peut-être que cela vous est plus utile?
Enfin, d'après votre description, je pense que vous vouliez dire que le "visage cible" devait avoir une dimension aussi élevée que possible? Ceci est bien défini, mais il existe également des faces de solution pour toutes les petites dimensions possibles. Quoi qu'il en soit, l'approche de Sariel et l'approche barrière ci-dessus fonctionneront avec le visage de la plus grande dimension.
la source
Trouvez d'abord la solution optimale, puis ajoutez la contrainte linéaire selon laquelle la solution doit avoir une valeur égale à l'optimale souhaitée, et reformulez votre LP comme étant celle qui recherche la plus grosse boule à l'intérieur de la région réalisable. Résolvez ce LP modifié, et vous avez ce que vous voulez.
Pourquoi le deuxième problème peut être résolu en utilisant LP est un problème mignon stnadard en géométrie computationnelle ...
==============
Soit donc le sommet calculé par le premier LP. Considérant tous les sommets voisins de . Considérez le sous-espace affine de avec tous ses voisins qui ont la même valeur cible (c'est-à-dire, ). Il n'est pas difficile de voir que ce sous-espace affine est le sous-espace souhaité.v v αv v v α
Donc, pour résumer: (A) résoudre LP pour découvrir la valeur optimale. (B) Calculer le plus petit sous-espace dimensionnel contenant la solution réalisable avec la valeur optimale. (C) Réécrivez le LP d'origine dans ce sous-espace affine (c'est-à-dire en supprimant toutes les dimensions non pertinentes), ajoutez une variable et transformez-la en LP pour trouver la plus grosse boule à l'intérieur de ce polytope.
la source