PC & Mobile

Multiplicateurs de Lagrange avec images et code – Towards Data Science

Multiplicateurs de Lagrange avec images et code - Towards Data Science


L'arme d'optimisation ultime, expliquait de bout en bout.

Dans cette histoire, nous allons faire un tour d’optimisation aérienne avec les multiplicateurs de Lagrange. Quand avons-nous besoin d'eux? Chaque fois que nous avons un problème d'optimisation avec des contraintes. Voici quelques exemples:

  1. Un fonds de couverture veut décider des proportions d'actions à inclure dans son portefeuille de manière à obtenir le rendement maximal attendu, tout en respectant une certaine propension au risque (le risque peut être mesuré en termes de variance du rendement, par exemple).
  2. Un district scolaire veut déterminer une allocation pour divers éléments du menu de son déjeuner pour ses élèves. Ils veulent minimiser le coût par repas tout en s'assurant que les enfants reçoivent une certaine quantité de tous les nutriments nécessaires.
  3. Une entreprise de camionnage veut transporter des marchandises d'entrepôts sources vers les villes de destination. Etant donné les coûts de transport pour chaque paire entre les villes, l'offre totale dans chaque entrepôt et la demande totale dans chaque ville, déterminez le montant à expédier de chaque entrepôt à chaque ville afin de minimiser le coût global et de répondre à la demande (contrainte).

Nous pouvons constater que l’optimisation restreinte peut résoudre de nombreux problèmes pratiques, du monde réel, dans des domaines allant de la logistique à la finance. Dans le reste du blog, nous allons commencer par l'optimisation vanille sans contraintes. Ensuite, nous ajouterons des contraintes d'égalité. Ensuite, nous décrirons la solution à un problème d’optimisation contraint complètement général avec des contraintes d’égalité et d’inégalité (les conditions sont appelées conditions KKT - Karush, Kuhn, Tucker). Enfin, nous démontrons la puissance de ces conditions sur certains problèmes de jouets. De nombreuses personnes considèrent le livre de Nocedal et Wright comme la bible de l'optimisation numérique et nous suivrons plus ou moins le chapitre 13, allant au-delà des preuves rigoureuses (qui peuvent toujours être lues dans le texte) et en mettant davantage l'accent sur l'intuition visuelle.

Optimisation sans contrainte

Dans ce scénario, nous avons certaines variables dans notre contrôle et une fonction objective qui en dépend. Il n'y a aucune contrainte sur les variables et la fonction objectif doit être minimisée (s'il s'agissait d'un problème de maximisation, nous pourrions simplement nier la fonction objectif et cela deviendrait alors un problème de minimisation).

En tout point, pour une fonction unidimensionnelle, la dérivée de la fonction pointe dans une direction qui l’augmente (au moins pour les petites étapes). Ce qui signifie que si nous avons une fonction f (x) et la dérivée f ’(x) est positif, alors augmenter x augmentera f (x) et le diminuer diminuera f (x). Si nous minimisions f (x), nous ferions un petit pas en face du signe de f ’(x) pour diminuer f (x). Et si nous sommes à un point où f ’(x)= 0? Ensuite, nous pourrions avoir atteint un optima de f (x) car il n’ya nulle part où aller.

S'il y a plusieurs variables (disons x et y), on peut avoir une dérivée avec chacune d'elles. Si nous prenons ces deux nombres et en construisons un vecteur 2-d, nous obtenons le gradient de la fonction. Dorénavant, le déplacement dans la direction du dégradé augmentera la fonction, tandis que le déplacement en sens inverse la diminuera (pour de petites étapes).

Cela signifie que tant que le gradient est non nul, nous ne pouvons pas être au minimum, car nous pouvons simplement faire un petit pas dans la direction opposée au gradient et réduire davantage la fonction. Cela signifie qu'une condition nécessaire (mais non suffisante) pour un point minimisant la fonction est que le gradient doit être égal à zéro à ce point.

Prenons un exemple concret pour visualiser ce à quoi cela ressemble. Considérons la fonction f (x, y) = x² + y². Ceci est un paraboloïde et minimisé lorsque x = 0 et y = 0. Les dérivées par rapport à x et y deviennent 2x et 2y respectivement. Le gradient devient alors le vecteur ∇f = [2x,2y]. Nous pouvons voir que ce n'est nul que lorsque x = 0 et y = 0. Sinon, le gradient pointe dans une direction où f (x, y) augmente. Ainsi, la direction opposée au gradient diminuera f (x, y). Ceci est montré dans la figure ci-dessous. La courbe rose est la fonction objectif f (x, y) qui est minimisée au point vert (0,0). Les flèches violettes représentent les gradients, qui pointent dans la direction où f (x, y) augmentera. Donc, pour le diminuer, nous allons dans la direction opposée jusqu’au point vert.

Fig 1: Paraboloïde avec des gradients. Fabriqué avec https://github.com/ryu577/pyray

Pour résumer, lors de l'optimisation d'une fonction, f dans un problème d'optimisation sans contrainte, une condition nécessaire (mais non suffisante) pour être à un optima local est la suivante:

∇f = 0

C’est comme lorsque vous êtes au sommet d’une montagne (ce qui serait un maxima). Comment savez-vous que vous êtes au sommet? Peu importe la direction dans laquelle vous marchez, vous vous retrouvez décroissant votre altitude. Donc, vous êtes vraiment optimiste dans votre quartier. Maintenant, il pourrait y avoir une autre montagne juste à côté de vous, qui est encore plus haute. Donc, vous pourriez ne pas être au global optima. En fait, si nous considérons la surface de la Terre comme notre domaine (et notre fonction objectif à l’altitude supérieure au niveau de la mer), vous êtes optima local si vous êtes au sommet d’une vieille montagne (ou d’un bâtiment) l’optima global que si cette montagne est l’Everest. Dans cet article, nous allons nous contenter de trouver un optima local.

Maintenant, si nous voulions rester dans les limites d'un pays? Cela signifierait limiter l'espace dans lequel nous pouvons rechercher nos optima, ce qui en fait un exemple d'optimisation contrainte. D'une certaine manière, l'optimisation non contrainte n'est qu'un cas particulier d'optimisation contrainte.

Contraintes d'égalité

Pour les problèmes de minimisation / maximisation sans contrainte, nous cherchons simplement un point où le dégradé est le vecteur zéro. Si la pente n’est pas nulle, nous ne ferons qu’un petit pas dans la direction opposée à celle où elle est dirigée (si nous minimisons; si nous maximisons), nous continuerons ainsi jusqu’à atteindre le point où est zéro et par conséquent, il n'y a pas d'autre endroit où aller (cette méthode d'optimisation est appelée descente de gradient). Notez que nous n’avons pas à nous déplacer exactement le long du dégradé. Tant que nous nous déplaçons dans une direction qui a une projection positive (ombre) le long du gradient, nous finissons par augmenter la fonction objectif (et diminuer si nous avons une projection positive le long du gradient négatif). La figure ci-dessous illustre cela. La flèche verte est le dégradé du plan bleu (et donc perpendiculaire à celui-ci) et la flèche rouge est le dégradé. Puisque les flèches bleu clair sont sur le plan, l'équation du plan donnera 0 si nous faisons un pas le long d'eux. Les flèches jaunes ont une ombre positive (projection) le long de la verte. Ainsi, si vous les parcourez, vous obtiendrez des points qui produiront des nombres positifs si vous les branchez dans l'équation du plan (augmentez-le). De même, les flèches roses ont une ombre positive le long de la flèche rouge (dégradé). Ainsi, si vous les parcourez, vous obtiendrez des points qui produiront des nombres négatifs si vous les branchez dans l'équation du plan («le diminuez»).

Fig 2: Vecteurs sur les côtés opposés d'un avion. Voir le texte pour l'explication. Fabriqué avec https://github.com/ryu577/pyray

Pour une minimisation sans contrainte, nous avons cherché un point où le gradient était égal à zéro. En effet, si ce n’était pas le cas, nous pourrions diminuer la fonction objectif en nous opposant à la pente.

La même idée peut être étendue au cas où nous avons des contraintes d'égalité. Comme auparavant, nous devons trouver un point où nous ne pouvons trouver aucun possible direction à déplacer où la fonction objectif diminue. Pour une optimisation sans contrainte, cela signifiait simplement qu’une telle direction n’existait pas. Lorsque nous avons une contrainte, il y a une autre possibilité. Que se passe-t-il si une direction qui diminue la fonction objectif existe, mais que les contraintes nous interdisent de faire un pas en avant?

Supposons que vous souhaitiez maximiser le montant de votre compte bancaire. Un moyen d'augmenter immédiatement vos revenus est de vendre un rein. Mais vous avez probablement une contrainte qui dit que vous ne perdrez pas un organe vital. Ainsi, même s’il existe un moyen facile d’augmenter vos revenus, votre contrainte vous empêche d’y accéder.

Cela signifie que la présence de la contrainte d'égalité réduit en réalité la rigueur de la condition sur le dégradé. Alors qu’il devait être nul pour un optima local sans la contrainte d’égalité, il est maintenant acceptable qu’il soit non nul tant que le fait de se déplacer dans une direction où il y a une ombre positive nous fait violer la contrainte. Cela ne peut se produire que lorsque le plan de la contrainte est perpendiculaire au gradient (comme le plan et la flèche verte de la figure 2).

Revenons à notre fonction objectif f (x, y) = x² + y². Ajoutons une contrainte d’égalité, y = 1. Ceci est un avion. Dans la figure 3 ci-dessous, la fonction objectif est en rose et le plan est en bleu. Étant donné que nous sommes contraints de rester dans l'avion, nous ne pouvons pas nous déplacer dans une direction qui présente une ombre positive ou négative le long de la pente du plan (flèches bleues dans la figure ci-dessous), car cela augmenterait ou diminuerait l'équation du paramètre. contrainte, alors que nous voulons le garder constant. Le plan coupe l'équation de notre fonction objectif (paraboloïde rose) dans une courbe qui est une parabole. Les flèches roses sur la figure ci-dessous représentent les gradients de la fonction objectif en divers points de cette parabole. Si la flèche rose a une projection le long du plan bleu, nous pouvons simplement nous déplacer dans la direction opposée au vecteur correspondant à cette projection. Cela nous maintiendra dans l'avion, garantissant que nous ne violons pas la contrainte tout en réduisant la fonction objectif. Cependant, au point vert de la figure 3 ci-dessous, la flèche rose (gradient de la fonction objectif) n’a aucune projection sur le plan bleu. En d'autres termes, la flèche rose est parallèle à la flèche bleue (qui est le dégradé du plan de contrainte).

Fig 3: Le gradient de contrainte s'aligne sur le gradient de la fonction objectif de manière optimale. Fabriqué avec https://github.com/ryu577/pyray

Pour diminuer la fonction objectif, nous devons nous déplacer dans une direction qui a une ombre le long du gradient négatif. Mais dès que nous ferons cela, nous finirons par quitter le plan de la contrainte. La contrainte empêche donc de diminuer davantage la fonction objectif au point vert. Cela signifie que ce doit être un minimum local. Un moyen simple de vérifier cette condition consiste à exiger que le dégradé rose de la fonction objectif soit parallèle au dégradé bleu du plan de contrainte. Et si deux vecteurs sont parallèles, nous pouvons écrire l'un comme un multiple de l'autre. Appelons ce multiple λ. Si le gradient de la fonction objectif est ∇f et celui de la contrainte est ∇c, la condition ci-dessus est:

∇f = λ ∇c

Le λ ci-dessus s'appelle le multiplicateur de Lagrange. Nous avons donc maintenant une condition concrète à vérifier lorsque nous recherchons les optima locaux d’un problème d’optimisation sous contrainte.

Contraintes d'inégalité

Les contraintes d'inégalité signifient que vous devez rester sur un côté d'une limite définissant une fonction de contrainte par opposition à elle (ce qui était le cas pour les contraintes d'égalité). Par exemple, rester à l'intérieur des limites d'une clôture. Si nous savons comment gérer les contraintes d'inégalité, nous pouvons résoudre tout problème d'optimisation sous contrainte. En effet, les contraintes d'égalité peuvent être converties en contraintes d'inégalité. Disons que nous avons besoin de: c (x) = 0. Une autre façon d’exprimer cela est: c (x) ≥0 et c (x) ≤ 0. Ainsi, chaque contrainte d’égalité peut toujours être remplacée par deux contraintes d’inégalité.

De même que l'optimisation contrainte avec égalité, les contraintes peuvent être gérées avec les multiplicateurs de Lagrange comme décrit dans la section précédente, de même l'optimisation contrainte avec des contraintes d'inégalité. Ce qui distingue les conditions de contrainte d'inégalité des contraintes d'égalité est que les multiplicateurs de Lagrange pour les contraintes d'inégalité doivent être positifs. Pour voir pourquoi, envisagez à nouveau de faire un petit pas dans une direction comportant une composante positive le long du gradient. Si nous pouvons faire un pas dans cette direction (si nous maximisons; au contraire si nous minimisons); nous ne pouvons pas être à un maximum / minimum. Pour les contraintes d’inégalité, cela se traduit par le multiplicateur de Lagrange positif. Pour voir pourquoi, revenons au problème d’optimisation contrainte que nous avons envisagé précédemment (figure 3).

Réduire: f (x, y) = x² + y²

Sujet à: c (x, y) = y-1 = 0

Maintenant, changeons la contrainte d’égalité en inégalité. Cela peut être fait de deux manières avec des résultats complètement différents. Nous pouvons soit exiger:

c (x, y) = y-1 ≥0. Dans ce cas, la contrainte autorise tout ce qui se trouve devant le plan bleu de la figure 3. Il est facile de voir que le point vert de la figure 3 continue à être un optima local. De plus, comme la flèche bleue représentant le gradient des contraintes et la flèche rose représentant le gradient de la fonction objectif point dans la même direction, nous avons:

∇f = λ ∇c

avec λ> 0.

L'autre possibilité est, c (x, y) = y-1≤0. Maintenant, la région réalisable devient tout derrière l'avion bleu. Les gradients de contrainte seront inversés. Donc, la figure 3 finira par ressembler à ceci:

Fig 4: Inverser le signe de la contrainte d'inégalité de la figure 3.

Notez que maintenant,

  1. Le point vert n’est plus l’optima local puisque nous sommes libres de passer à (0,0); qui est le point jaune dans la figure 4 ci-dessus.
  2. Au point vert, nous avons toujours ∇f = λ ∇c. puisque le vecteur bleu pointe en face du vecteur rose, nous avons λ <0.

Donc, il est clair que pour une contrainte d’inégalité, la condition ∇f = λ c indique que nous sommes à un optima local uniquement lorsque λ> 0.

En réunissant tout cela, pour un problème d'optimisation général:

Réduire f (X)

Sujet à:

c_i (X) = 0 pour i ∈ égalité

c_i (X) ≥0 pour i ∈ Inégalité

Nous obtenons toutes les conditions requises pour être optima local:

Condition du multiplicateur de Lagrange:

∇f = ∑_i λ_i c_i (x) + ∑_j λ_j c_j (x); Eq (1)

Où i ∈ Égalité et j ∈ Contraintes d’inégalité.

c_i (X) = 0 pour tout i; Eq (2)

c_j (X) ≥0 pour tout j; Eq (3)

λ_j ≥ 0; Eq (4)

Notez également que pour les deux problèmes de contrainte d’inégalité que nous avons examinés, lorsque nous avions y-1≥0, le point vert de la figure 3 était la solution. À ce stade, nous étions sur le plan des contraintes (y-1 = 0). Nous avons donc eu c (X) = 0 et λ> 0.

Lorsque nous avons considéré y-1≤0 par contre, le point jaune (x = 0, y = 0) de la figure 4 est devenu le minimum local. Ce point était également la solution au problème sans contrainte. Donc, nous avions simplement ∇f = 0 ici. Puisque la condition de Lagrange nécessite ∇f = λ ∇c, nous obtenons λ c = 0. Maintenant, ∇c 0 en ce point, ce qui signifie que nous devons avoir: λ = 0.

Cela signifie que si la contrainte est active (c (X) = 0), nous devrions avoir λ≥0 alors que si ce n'est pas le cas (c (X) 0) nous devrions avoir λ = 0. Donc, l’un d’eux devrait être nul dans tous les cas. Ceci conduit à la condition finale (la condition de complémentarité):

λ_j c_j (X) = 0 pour tout j ∈ Inégalité; Eq (5)

Les équations (1) à (5) sont appelées conditions KKT. Notez que nous ne leur avons pas vraiment fourni de preuves rigoureuses, nous les avons simplement construites à partir d’un exemple simple. Pour une preuve, le lecteur devrait se reporter au chapitre 13 du livre de Nocedal et Wright.

Quand ils voient ces cinq équations, beaucoup de gens ont l’impression que le problème est devenu encore plus compliqué. Comment ces équations nous aident-elles réellement à résoudre des problèmes d'optimisation sous contraintes. Le meilleur moyen d’en avoir une idée est de donner des exemples concrets. Dans la section suivante, nous prenons un exemple de problème pour lequel nous connaissons la réponse à l'avance et voyons comment les conditions KKP nous aident à identifier correctement tous les optima locaux.

Exemple avec code

Les cas spéciaux du problème d'optimisation généralisé impliquent une fonction d'objectif linéaire et des contraintes linéaires. C'est ce qu'on appelle un programme linéaire à contraintes linéaires (LCLP). La fonction objectif et les contraintes peuvent également être quadratiques et un problème d'optimisation de ce type s'appelle un programme quadratique contraint de manière quadratique (QCQP). Il existe des progiciels capables de résoudre ce type de problèmes d'optimisation pour un nombre incroyablement grand de contraintes (en millions). Cependant, pour des problèmes plus simples avec un nombre de contraintes plus gérable, nous pouvons utiliser des algorithmes capables de résoudre la plupart des programmes polynomiaux (plus généraux) à contraintes polynomiales. Ce qui signifie que la fonction objectif et les contraintes peuvent être des fonctions polynomiales arbitraires. Ceci est dû au fait qu’il existe un cadre général pour la résolution de systèmes d’équations polynomiales appelé «algorithme de Buchberger» et que les conditions de KKT décrites ci-dessus peuvent être réduites à un système d’équations polynomiales. J’ai écrit ici un blog détaillé sur l’algorithme de Buchberger pour la résolution de systèmes d’équations polynomiales. Il existe une bibliothèque python appelée «sympy» qui utilise des algorithmes comme celui-ci en coulisse et résout les systèmes généraux d’équations polynomiales. Alors, sans plus tarder, décrivons notre premier problème d’optimisation contrainte.

Contraintes d'égalité

Minimiser: x³ + y³
Sujet à: x² + y² = 1

Notez que la contrainte (x² + y² = 1) implique que nous sommes sur la limite d’un cercle de rayon unitaire. On peut donc dire: x = cos (t), y = sin (t). La fonction objectif devient alors: sin³ (t) + cos³ (t). Si on trace cela avec t, on obtient le graphique suivant:

Fig 5: Fonction objectif sin³ (t) + cos³ (t) tracée avec t à la limite de la contrainte.

Nous pouvons voir que t = 0, π / 2 et 5π / 4 correspondent à des maxima locaux alors que t = π / 4, π et 3π / 2 correspondent à des maxima locaux. Maintenant que nous connaissons la réponse à l'avance, voyons si les conditions de KKT décrites ci-dessus peuvent également les trouver.

L'équation (1) donne (en prenant des dérivées de la fonction objective et de la contrainte):

[3x², 3y²] = λ[2x, 2y]

En comparant les deux composantes des vecteurs des deux côtés, on aboutit aux deux équations:

3x²-2λx = 0

3y²-2λy = 0

L'équation (2) exige simplement que la contrainte d'égalité soit satisfaite:

x² + y² = 1

Et comme il n’ya pas de contrainte d’inégalité, nous n’avons pas besoin des équations (3) à (6). Nous pouvons maintenant entrer les trois équations ci-dessus dans le résolveur d'équations symboliques fourni par la bibliothèque python.

Cela conduit au résultat suivant (toutes les solutions possibles au système ci-dessus avec les valeurs de x, y et λ dans cet ordre):

[(-10-3/2)[(-10-3/2)
(0, -1, -3/2),
(0, 1, 3/2),
(1, 0, 3/2),
(-sqrt (2) / 2, -sqrt (2) / 2, -3 * sqrt (2) / 4),
(sqrt (2) / 2, sqrt (2) / 2, 3 * sqrt (2) / 4)]

(-1,0) correspond à t = π; (0, -1) correspond à t = 3π / 2; (-sqrt (2) / 2, -sqrt (2) / 2) correspond à t = 5π / 4 et (sqrt (2) / 2, sqrt (2) / 2) correspond à t = π / 4. Donc, nous pouvons voir que tous les maxima locaux et les minima locaux que nous avons identifiés ci-dessus ont été identifiés par les conditions KK. Maintenant, nous pouvons simplement trouver les valeurs maximales et minimales de la fonction objectif à ces points candidats.

Contraintes d'inégalité

Maintenant, changeons notre contrainte d’égalité du problème précédent en une contrainte d’inégalité et voyons comment cela change notre solution.

Minimiser: x³ + y³
Sujet à: x² + y²≤1

Là où la contrainte impliquait que nous ne pouvions être que sur la limite du cercle unité dans le cas précédent, nous pouvons maintenant être n'importe où à l'intérieur de celui-ci.

La carte thermique complète de la fonction objectif dans le disque de contraintes est tracée ci-dessous (elle ressemble à une planète avec une étoile quelque part dans le coin supérieur droit). Les flèches rouges représentent les gradients de la limite de la contrainte, tandis que les flèches noires correspondent aux gradients de la fonction objectif.

Fig 6: x³ + y³ tracé dans le disque x² + y²≤1

Alors que le problème d'égalité contrainte était un problème unidimensionnel, ce problème d'optimisation contraint d'inégalité est bidimensionnel. Bien qu'il n'y ait que deux façons d'approcher un point dans une dimension (de gauche ou de droite); il y a un nombre infini de façons de l'aborder dans deux dimensions. Cela signifie que nous devons nous méfier des points de selle. Ce sont des points qui remplissent les conditions requises pour être optima, mais ne le sont pas vraiment, car ce sont des maxima lorsque vous les approchez d'une direction, mais des minima lorsque vous les approchez d'une autre. La figure ci-dessous montre à quoi ressemble un point de selle.

Fig 7: Un point de selle. Maxima lorsque vous l'abordez d'une direction, mais minima lorsque vous l'abordez d'une autre.

Nous devons donc réévaluer tous les points qui étaient des minima ou des maxima locaux dans le cas de la contrainte d'égalité et veiller à ce qu'aucun d'entre eux ne devienne un point d'équilibre.

La figure 5 nous indique que t = 0 (x = 1, y = 0) est un maximum local lorsqu'il est approché le long de la limite. Et lorsque nous abordons également le point depuis l'intérieur du disque (par exemple, le long de la ligne joignant x = 0, y = 0 à ce point), la valeur de la fonction objectif augmente à mesure que nous nous en approchons. Donc, t = 0 est un maximum local, peu importe d'où nous l'approchons. En utilisant des arguments similaires (ou en notant la symétrie dans x et y), il en va de même pour t = π / 2.

De même, nous pouvons affirmer que t = π et t = 3π / 2 sont des minima locaux, peu importe où nous les approchons depuis l'intérieur de la région réalisable.

En regardant t = π / 4 cependant, nous notons à la figure 5 que son approche le long de la limite en fait un minimum local. Cependant, l'approcher depuis l'intérieur du disque (le long de la ligne reliant l'origine à ce point par exemple) en fait un maximum local. Donc, dans l’ensemble, ce n’est ni un maximum local ni un minimum local. Un tel point s'appelle un point de selle. En utilisant des arguments similaires, t = 5π / 4 est également un point d'équilibre.

Voyons maintenant ce que les conditions KKT disent pour notre problème. En branchant la fonction objectif et les contraintes dans les équations de KKT (1) à (5), on obtient:

Équations 6 (a) à (e).

Pour tirer parti des solveurs d’équations polynomiales, nous devons les convertir en un système d’équations polynomiales. Les deux premières conditions (6- (a) et (b)) sont déjà des équations. Le troisième, x² + y²≤1 (6- (c)) est une inégalité. Mais nous pouvons le convertir en égalité en introduisant une variable de jeu, k; x² + y² + k² = 1. La dernière équation, λ≥0 est pareillement une inégalité, mais nous pouvons la supprimer si nous remplaçons simplement λ par λ². Maintenant, nous montrons comment les entrer dans la bibliothèque de résolution d’équations symboliques fournie par Python.

Code résolvant les conditions KKT pour le problème d'optimisation mentionné précédemment.

Cela produit le résultat suivant (les différentes solutions du système ci-dessus avec les variables x, y, λ, k dans l'ordre):

[(-10-sqrt(6)/20)[(-10-sqrt(6)/20)
(-1, 0, sqrt (6) / 2, 0),
(0, -1, -sqrt (6) / 2, 0),
(0, -1, sqrt (6) / 2, 0),
(0, 0, 0, -1),
(0, 0, 0, 1),
(0, 1, -sqrt (6) * I / 2, 0),
(0, 1, sqrt (6) * I / 2, 0),
(1, 0, -sqrt (6) * I / 2, 0),
(1, 0, sqrt (6) * I / 2, 0),
(-sqrt (2) / 2, -sqrt (2) / 2, -2 ** (1/4) * sqrt (3) / 2, 0),
(-sqrt (2) / 2, -sqrt (2) / 2, 2 ** (1/4) * sqrt (3) / 2, 0),
(sqrt (2) / 2, sqrt (2) / 2, -2 ** (1/4) * sqrt (3) * I / 2, 0),
(sqrt (2) / 2, sqrt (2) / 2, 2 ** (1/4) * sqrt (3) * I / 2, 0)]

Le capital «I» dans les solutions ci-dessus renvoie à la racine carrée de l’unité. Nous voulons rejeter ces solutions car nous avons besoin de λ²≥0. Cela signifie que les points qui satisfont aux conditions KKT sont les suivants: (-1,0); (0, -1); (0,0); (-1 / sqrt (2), - 1 / sqrt (2)). Comme mentionné précédemment, les points (-1,0) (correspondant à t = π) et (0, -1) (correspondant à t = 3π / 2) sont les minima. (0,0) et (-1 / sqrt (2), - 1 / sqrt (2)) sont des points de selle qui sont également pris dans le filet. Mais notez qu'aucun des maxima locaux n'est pris. Je vais vous laisser avec un petit défi. Changez le code ci-dessus pour qu’il capture les maxima au lieu des minima.

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close