Contraintes impliquant dans un programme linéaire?

16

Supposer

minAvec(U)subject to Ui,jmax{Ui,k,Uk,j},i,j,k=1,,n

U est une matrice n \ fois n symétrique n×n, et vec(U) remodèle U en un vecteur unidimensionnel avec n2 entrées.

La partie du programme ci-dessus qui me pose des problèmes est le max{,} . (Restreindre les solutions aux matrices symétriques non négatives semble être simple.)

Merci d'avance pour toute aide ou référence!

N21
la source
une raison pour laquelle vous ne pouvez pas ajouter les deux contraintes?
Aron Ahmadia
1
@AronAhmadia: Il ne peut pas ajouter les deux contraintes car cela serait équivalent à Ui,jmin{Ui,k,Uk,j} pour tout i,j,k . Je ne pense pas qu'il existe une reformulation LP de ce problème, mais il pourrait y avoir une reformulation MILP, même si cela le rend probablement plus cher à résoudre.
Geoff Oxberry
@ N21: Quelle est la taille que vous attendez n être pour les problèmes que vous voulez résoudre?
Geoff Oxberry
@Geoff: Merci! J'espère finalement avoir un grand n , mais en ce moment, je suis le plus soucieux d'obtenir une solution préliminaire avec n inférieur à, disons 100, voire 10.
N21
Merci d'avoir clarifié @GeoffOxberry, je n'y ai pas vraiment réfléchi avant de poster.
Aron Ahmadia

Réponses:

14

Edit: Essayons à nouveau cette explication, cette fois quand je suis plus éveillé.

Il y a trois gros problèmes avec la formulation (par ordre de gravité):

  1. Il n'y a pas de reformulation évidente du problème qui soit évidemment lisse, convexe ou linéaire.
  2. C'est non lisse.
  3. Ce n'est pas nécessairement convexe.

Pas de reformulation évidente lisse / convexe / linéaire

Tout d'abord, il n'y a pas de reformulation standard et évidente de chaque contrainte . La suggestion d'Aron s'applique à la contrainte la plus courante , dans laquelle une contrainte comme est remplacée par les deux inégalités équivalentes suivantes:La reformulation n'est pas idéale, chaque contrainte a été remplacée par contraintes linéaires, mais elle convertit un programme non linéaire non lisse en un programme linéaire, qui est des ordres de grandeur plus rapide à résoudre.min U i jmin k { U i k , U k j } U i jU i k ,maxmin

Uijmink{Uik,Ukj}
UijUik,k
min 2 n
UijUkj,k.
min2n

Wolfgang signale qu'il pourrait être possible (il n'inclut pas de preuve) de reformuler les contraintes afin qu'elles soient linéaires et lisses en ajoutant des variables lentes. Une variable slack doit être ajoutée pour chaque contrainte dans la formulation d'origine, ce qui signifie que nous ajoutons contraintes dans cette reformulation. De plus, chaque contrainte est remplacée par (ou plus) contraintes linéaires. Le vrai tueur est que la non-douceur est déplacée des contraintes vers l'objectif, de sorte que la formulation de Wolfgang donne toujours un programme non linéaire non lisse.max n 2 max 2 nmaxmaxn2max2n

Il n'y a pas de reformulation standard des contraintes dans un problème de minimisation que je connaisse, après avoir vérifié mon manuel de programmation linéaire et fait une recherche documentaire. Cela ne signifie pas qu'une telle reformulation n'existe pas; cela signifie simplement que je ne l'ai pas rencontré. Si je devais deviner, je dirais qu'il n'existe pas de formulation LP.max

Non-douceur

Dans ce contexte, l'absence de douceur signifie qu'au moins une des fonctions de la formulation (l'objectif ou les contraintes) n'est pas deux fois différenciable en continu. Les fonctions non lisses de cette formulation sont les fonctions .max

L'absence de douceur est un énorme problème car:

  • cela rend immédiatement votre problème non linéaire
  • la plupart des solveurs de programmation non linéaire assument des fonctions deux fois différenciables en continu

Étant donné que les fonctions ne sont même pas différenciables en continu, vous ne pouvez même pas utiliser sans difficulté les méthodes traditionnelles de descente de gradient. Les algorithmes de programmation non linéaires non lisses sont plus lents que leurs homologues lisses.max

Non-convexité possible

Votre problème pourrait être non convexe, car sous "forme standard" pour les programmes non linéaires (c'est-à-dire, exprimer toutes les contraintes sous la forme ), les contraintes gênantes dans votre formulation sontg(x)0

Uijmaxk{Uik,Ukj}0,i,j,k.

Ces fonctions sont concaves.

Preuve: Dans ce cas, les fonctions et sont toutes deux convexes. La somme des fonctions convexes est convexe, et la multiplication d'une fonction convexe par -1 entraîne une fonction concave. (QED.) max k { U i k , U k j }Uijmaxk{Uik,Ukj}

Comme le souligne Tim, ce n'est pas parce que n'est pas convexe que votre problème est réellement non convexe, mais si vous essayez de résoudre un problème d'optimisation à l'optimalité globale, vous ne pouvez garantir qu'un solveur d'optimisation convexe retourner un optimum global si votre problème est convexe. Si vous voulez vraiment un optimum global, il vous appartiendrait de déterminer si votre ensemble réalisable est convexe (ou non). En l'absence de telles informations, vous devez supposer que votre problème peut être non convexe et utiliser des algorithmes qui ne reposent pas sur des informations de convexité. Même alors, la non-douceur et l'absence d'une bonne reformulation sont des problèmes beaucoup plus importants.g

Options pour résoudre le problème

  • Se contenter de trouver éventuellement une solution réalisable. Dans ce cas, faites ce qu'Aron a dit et remplacez par qui peuvent ensuite être ré-exprimés en deux inégalités distinctes en utilisant une reformulation LP standard. Le problème résultant sera une restriction LP du problème que vous souhaitez résoudre; il devrait résoudre rapidement par rapport à votre problème d'origine, et s'il a une solution, cette solution sera réalisable pour votre problème d'origine, et sa valeur de fonction objective sera une borne inférieure sur la valeur de fonction objective optimale de votre problème d'origine.U i jmin

    Uijmaxk{Uik,Ukj},i,j,k
    Uijmink{Uik,Ukj},i,j,k,
  • Tentez votre chance sur votre formulation avec un solveur de bundle pour les programmes non lisses. Je n'ai pas beaucoup d'expérience avec ces types de solveurs. (Un de mes collègues les utilise dans ses recherches.) Ils sont probablement lents, car ils ne peuvent pas utiliser d'informations dérivées. (Je pense qu'ils utilisent à la place les informations de dégradé généralisées du sous-gradué ou de Clarke.) Il est également peu probable que vous soyez en mesure de résoudre de grandes instances de problème avec un solveur de bundle.

Geoff Oxberry
la source
1
Geoff, bonnes choses; cela touche les points clés et offre de nombreuses idées et suggestions constructives. Je l'ai voté. Mais vous semblez considérer la non-convexité comme quelque chose de distinct du fait que, comme vous le dites, "il n'y a pas de reformulation standard des contraintes maximales dans un problème de minimisation que je connaisse". Mais en fait, le premier est précisément pourquoi le second n'est pas possible. Les contraintes non convexes ne peuvent pas être exprimées en programmation linéaire --- point final! Il s'agit d'un problème non convexe, et il devra soit être reformulé comme un problème à nombres entiers mixtes, soit appliquer une autre heuristique.
Michael Grant
@ MichaelGrant: J'ai fait cet argument dans les révisions 1 et 2 il y a plus d'un an, puis je suis entré dans un long fil de commentaires sur mon affirmation que le problème n'est pas convexe. (Voir la réponse de Tim ci-dessous.) Si je me souviens bien, à l'époque, Tim a soutenu qu'une inégalité avec concave ne fait pas un ensemble réalisable non convexe. Je ne sais pas pourquoi, car par définition, un programme convexe doit pouvoir s'exprimer de telle sorte que pour convexe. J'étais fatigué de discuter avec Tim à ce sujet; Je devrais revenir sur certaines de mes modifications précédentes. g g ( x ) 0 gg(x)0gg(x)0g
Geoff Oxberry
1
Il est vrai que les fonctions de contraintes non convexes peuvent décrire des ensembles convexes (en effet la notion de quasiconvexité couvre la plupart de ces cas). Mais le fait est que décrit un ensemble non convexe dans . L'affirmation de Tim n'a donc rien à voir avec ce problème particulier. Il est également concevable que l'intersection d'ensembles non convexes finisse par être convexe, mais c'est un événement peu probable. ( x , y , z )xmax{y,z}(x,y,z)
Michael Grant
1
Oui, vous pouvez prouver cette déclaration particulière car un tel ensemble est l'hypographie de , et l'ensemble défini par l'hypographie d'une fonction est convexe si la fonction est concave. max{y,z}
Geoff Oxberry
3

La solution à votre question est .

Soit Depuis et vos contraintes sont linéaires en , un multiple positif de satisfait aux contraintes. Par conséquent, .Avec(U)Ut±UminV(A

U=(1111).
Avec(U)Ut±UminV(Avec(V))mint(Avec(tU))=
Dernier soupir
la source
Certainement une solution à la question posée. Je suppose que l'OP va poser une certaine contrainte de non négativité sur , auquel cas, la valeur optimale de la fonction objectif peut ne pas être . - U
Geoff Oxberry
@GeoffOxberry: Vrai. Même avec des contraintes de positivité sur la réponse est . La forme telle que posée implique qu'il s'agit vraiment d'une question d'optimisation de matrice à la . de 0 2 tr ( l'AU02tr(A^U)=A^U2A^2U2
Deathbreath
2

Afin de formuler les contraintes , nous créons variables binaires , , . Soit la borne de la variable , il suffit alors d'ajouter les contraintes suivantes:n b i{ 0 , 1 } 1 fmax{f1,f2,...,fn}n bi{0,1}M f1inMf

1)ffi+(1bi)M,i

2)ibi=1

Normalement, posons si nous pouvons estimer la valeur de .f iM:=maxifiminififi

Kevin
la source
1

Vous ne pouvez pas introduire une variable slack? Donc, pour reformuler la contrainte écrivez-la comme suit: Cela aura une solution irréalisable par rapport au problème d'origine si vous choisissez s = infini. Mais je suis presque sûr que vous pouvez montrer que si vous ajoutez un terme à la fonction objectif (c'est-à-dire que vous voulez avoir aussi petit que possible, de préférence zéro) et suffisamment grand, vous obtiendrez alors une solution réalisable si le problème d'origine avait des solutions réalisables avec une valeur objective inférieure à l'infini.

xi<=max(ai1,ai2,...,ain)
xi<=si
si>=ai1
si>=ai2
...
si>=ain
cmax(simax(ai),0)
simax(ai)c

(Une preuve irait dans le sens de montrer que si et si , alors la solution est irréalisable; en d'autres termes, est une mesure d'infaisabilité par rapport à le problème d'origine. Si le problème est stable, il devrait y avoir une amélioration finie de la valeur de la fonction objectif pour une violation finie de la faisabilité. Si vous choisissez c plus grand que le rapport entre le changement de la valeur objective et la violation de la faisabilité, la modification la fonction objective se développerait pour les problèmes qui vont dans la région infaisable.)si>=max(ai)xi=sisimax(ai)

Wolfgang Bangerth
la source
C'est une bonne idée. En supposant que votre preuve passe, le problème devient alors le déplacement de la non-linéarité et de la non-régularité des contraintes vers l'objectif, qui sont toujours des qualités indésirables dans une formulation.
Geoff Oxberry
Je crains que cela ne fonctionne pas. Si les quantités sont des variables et non des constantes, alors votre contrainte d'origine n'est pas un ensemble convexe dans . Votre ensemble reformulé de contraintes, d'autre part, est un ensemble convexe dans . Les deux ensembles de contraintes ne peuvent pas être équivalents. aij(xi,ai1,ai2,...,ain)(xi,si,ai1,ai2,...,ain)
Michael Grant
1

Je ne trouve pas le bouton de commentaire ...

Comme Geoff l'a souligné, il s'agit d'une fonction de contrainte concave. Cependant, peu importe si la fonction elle-même est concave ou non. Les fonctions concaves sous contraintes linéaires peuvent être des ensembles convexes (par exemple ).log(x)<5

S'il s'agit d'un ensemble convexe, vous pouvez effectuer une descente de gradient sur votre fonction objectif, en utilisant quelque chose comme Dykstra's_projection_algorithm pour projeter de nouveau sur l'espace des contraintes.

Tim
la source
A voté pour le commentaire sur les fonctions concaves; J'aurais dû penser davantage à mon explication. Projeter sur l'ensemble réalisable est une possibilité, bien que je ne sois pas sûr de savoir si vous pourriez appliquer ces algorithmes avec des contraintes non lisses.
Geoff Oxberry
Je ne sais pas s'ils s'appliquent aux contraintes non lisses. Notez également que les problèmes non convexes ne sont NP-durs que s'ils ont un nombre NP de solutions possibles. Si le nombre de solutions possibles est en P, la force brute résout exactement une tâche d'optimisation non convexe. Enfin, la méthode ne peut pas être formée en LP, mais cela n'a rien à voir avec la nature concave de la contrainte. C'est parce que la contrainte est une fonction non linéaire qui crée également un espace de contrainte non linéaire (convexe ou non). Il existe de nombreuses contraintes convexes qui ne peuvent pas non plus être résolues à l'aide de LP. par exemplex2+y2<5
Tim
"Les problèmes non convexes ne sont durs en NP que s'ils ont un nombre NP de solutions possibles." NP signifie "polynôme non déterministe". Je suis complètement perdu de ce dont tu parles. Deuxièmement, j'ai mentionné la concavité parce que les fonctions linéaires sont concaves et convexes; la fonction n'est pas convexe. Le fait que la fonction soit non lisse et linéaire par morceaux n'exclut pas immédiatement la possibilité d'une reformulation LP.
Geoff Oxberry
Par exemple, est "non linéaire" et peut être reformulé comme une paire de contraintes linéaires, et admet donc une reformulation LP. Enfin, vous avez raison, il existe de nombreuses contraintes qui ne peuvent pas être reformulées en tant que contraintes linéaires, telles que les contraintes non linéaires lisses. Uijmink{Uik,Ukj}
Geoff Oxberry
Désolé, j'ai dû raccourcir le commentaire, j'ai donc utilisé NP pour les non polynômes et P pour les polynômes. Le fait était que l'optimisation non convexe n'est pas toujours NP-difficile. Ce n'est dur que si le nombre de solutions possibles est pire que polynomial. Désolé pour la confusion :) Vous avez raison de reformuler comme linéaire. Vous sembliez dire "Par conséquent, il n'y a aucun moyen de reformuler votre programme en tant que programme linéaire", à cause de la non-convexité, je notais simplement que ce n'était pas lié à la convexité mais à la linéarité.
Tim
0

Y a-t-il d'autres contraintes d'inégalité qui ne sont pas mentionnées? Comme indiqué, le problème est de minimiser une fonction linéaire sur un cône, de sorte que la valeur optimale est toujours soit ou .0

Même avec la contrainte , le problème se réduit à un problème de décision discret. Considérez la fonction linéaire comme correspondant aux poids positifs / négatifs des bords du graphique complet sur sommets. S'il existe un graphe de diamètre 2 reliant tous les sommets à la somme de ses poids strictement négatifs, alors la valeur optimale est , sinon la valeur optimale est .U0An0

Un rapide croquis sur la façon de le prouver. Notons tout d'abord que si , alors implique . Ainsi, les inégalités impliquent que pour chaque triple , exactement l'un des éléments suivants doit être vrai:c abccmax(a,b)b=ci,j,k

  1. Uij<Ujk=Uik
  2. Uik<Ujk=Uij
  3. Ujk<Uik=Uij
  4. Uij=Ujk=Uik

Donc, si vous fixez un seuil et formez un graphe avec une arête où , alors tous les 3 sommets doivent avoir exactement 0,2, ou 3 arêtes les reliant. Donc, si , alors pour chaque autre sommet , nous devons avoir soit ou . Donc si le graphe a des arêtes, il doit être de diamètre 2.G ( t ) U i j = t U i j = U j k = t U j = t U i = U k = t G ( t )tG(t)Uij=tUij=Ujk=tUj=tUi=Uk=tG(t)

ps
la source