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é):
- Il n'y a pas de reformulation évidente du problème qui soit évidemment lisse, convexe ou linéaire.
- C'est non lisse.
- 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 j ≤ min k { U i k , U k j } U i j ≤ U i k ,maxmin
Uij≤mink{Uik,Ukj}
Uij≤Uik,∀k
min 2 nUij≤Ukj,∀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
Uje j- maxk{ Uje k, Uk j} ≤ 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 }- Uje jmaxk{ Uje k, Uk j}
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 j ≤ min
Uje j≤ maxk{ Uje k, Uk j} ,∀ i , j , k
Uje j≤ mink{ Uje k, Uk j} ,∀ 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.