Je veux minimiser une fonction objectif compliquée, et je ne sais pas si elle est convexe. Existe-t-il un bon algorithme qui tente de prouver qu'il n'est pas convexe? Bien sûr, l'algorithme pourrait ne pas le prouver, auquel cas je ne saurais pas s'il est convexe ou non, et c'est OK; Je veux juste essayer d'exclure la convexité avant de passer beaucoup de temps à essayer de déterminer analytiquement si la fonction objective est convexe, par exemple en essayant de réécrire le problème sous une forme standard connue pour être convexe. Un test rapide serait d'essayer de minimiser à partir de divers points de départ et si plusieurs minima locaux sont trouvés de cette manière, alors ce n'est pas convexe. Mais je me demandais s'il y avait un meilleur algorithme conçu dans ce but.
9
Réponses:
Une fonction convexe doit satisfaire pour tous α ∈ ( 0 , 1 ) et x , y dans le domaine de la définition. Vous pouvez simplement essayer de vérifier cette formule pour un grand nombre de paires x , y et quelques valeurs α , par exempleF( α x + ( 1 - α ) y) ≤ α f( x ) + ( 1 - α ) f( y) α ∈ ( 0 , 1 ) x , y x , y α .α = { 1 / 4 , 1 / deux , trois / 4 }
la source
Pour un certain nombre de tests de vérification de la convexité / non-convexité pratiquement utiles, voir (auto-exclusion, je suis le troisième auteur de cet article):
R. Fourer, C. Maheshwari, A. Neumaier, D. Orban et H. Schichl, Détection de convexité et de concavité dans les graphiques de calcul. Tree Walks for Convexity Assessment, INFORMS J. Computing 22 (2010), 26-43.
Notez qu'il existe de nombreuses fonctions qui sont convexes dans le domaine d'intérêt mais ne peuvent pas facilement être «disciplinées», c'est-à-dire écrites sous l'une des formes requises par les solveurs convexes structurés tels que CVX .
la source
Une fonction peut être non convexe sans avoir de minima multiples. Il existe une variété de méthodes d'optimisation qui appliquent des itérations de gradient conjugué (linéaire ou non linéaire), tronquées lorsqu'une norme d'opérateur négative est calculée. La valeur négative indique une direction de courbure négative (ce qui ne peut pas se produire pour les fonctionnelles convexes). Si une courbure négative est rarement rencontrée, ces méthodes convergent en un petit nombre d'itérations d'optimisation. (Si un préconditionneur de qualité est disponible, les étapes internes doivent également converger rapidement.)
la source