Une astuce pour résoudre ce problème d'optimisation?

Sep 25 2020

Je suis relativement nouveau dans la résolution de problèmes d'optimisation à l'aide de Mathematica. J'ai un problème d'optimisation mais Mathematica ne semble pas être en mesure de le résoudre. J'ai essayé toutes sortes de façons de le réécrire de manière équivalente. Celui mentionné dans cette question semble être la forme la plus simple de tout ce que j'ai pu trouver.

Y a-t-il des astuces qui peuvent être utilisées pour résoudre ce problème?

Minimize[{(c n2)/m2^2+m2/n2,1 < n2 <= n, 1 < m2 <= m}, {n2,m2}]

Réponses

3 Cesareo Sep 28 2020 at 15:54

Vous pouvez le résoudre en utilisant les multiplicateurs de Lagrange, en introduisant quelques variables de marge (e1, e2, e3, e4) pour gérer les inégalités, en supposant d'abord de simplifier c> 0, (c ^ 2) comme suit:

f = c^2 x/y^2 + y/x;
L = f + l1 (x - 1 - e1^2) + l2 (n - x - e2^2) + l3 (y - 1 - e3^2) + l4 (m - y - e4^2)
grad = Grad[L, {x, y, l1, l2, l3, l4, e1, e2, e3, e4}];
sols = Solve[grad == 0, {x, y, l1, l2, l3, l4, e1, e2, e3, e4}];
res = {f, x, y, l1, l2, l3, l4, e1^2, e2^2, e3^2, e4^2} /. sols;
res0 = Union[res];
MatrixForm[res0]

Maintenant, dans res0, nous avons les valeurs f aux divers points stationnaires ainsi que les valeurs pour e1 ^ 2, e2 ^ 2, e3 ^ 2, e4 ^ 2 qui devraient être non négatives pour être réalisables. Ici, lorsque ek = 0 signifie que la contrainte k est active. On peut procéder de la même manière dans le cas de -c ^ 2.

Nous pouvons encore réduire cet ensemble à

res1 = {res0[[2]], res0[[5]], res0[[6]], res0[[8]], res0[[9]], res0[[11]], res0[[13]], res0[[14]]};
MatrixForm[res1] 

REMARQUE

D'après les résultats obtenus, nous pouvons observer que les extrema sont toujours à la frontière.