optimisation contrainte en R
Je suis en train d'utiliser http://rss.acs.unt.edu/Rdoc/library/stats/html/constrOptim.html dans la R de faire de l'optimisation dans R avec certaines contraintes linéaires, mais pas en mesure de comprendre comment régler le problème.
Par exemple, j'ai besoin de maximiser $f(x,y) = log(x) + \frac{x^2}{y^2}$ soumises à des contraintes $g_1(x,y) = x+y < 1$, $g_2(x,y) = x > 0$ et $g_3(x,y) = y > 0$. Comment puis-je le faire dans la R? C'est juste un exemple hypothétique. Ne vous inquiétez pas à propos de sa structure, au lieu de cela je suis intéressé de savoir comment configurer cela dans R.
merci!
source d'informationauteur user236215
Vous devez vous connecter pour publier un commentaire.
Paramètre de la fonction est trivial:
La configuration de la contrainte de la matrice a été problématique en raison d'un manque de beaucoup de documentation, et j'ai eu recours à l'expérimentation. La page d'aide, dit "La région possible est défini par l'interface utilisateur %*% theta - ci >= 0". Alors j'ai testé, et il semble que ce "travail":
Donc je l'ai mis dans une rangée pour chaque contrainte/limite:
Ce problème, il existe une difficulté potentielle pour toutes les valeurs de x la fonction va Inf y -> 0. Je fais un max autour de x=.95 et y=0 même quand je pousse les valeurs de départ pour le "coin", mais je suis un peu suspect que ce n'est pas le vrai maximum que je l'aurais deviné était dans le "coin".
EDIT:
La poursuite de cet j'ai pensé que le gradient pourrait fournir d'autres "direction" et a ajouté un gradient de la fonction:
Ce n' "piloter" l'optimisation d'un peu plus près à la c(.999..., 0) coin, au lieu de s'éloigner, comme il l'a fait pour certaines valeurs de départ. Je reste un peu déçu que le processus semble être "à la tête de la falaise", lorsque les valeurs de départ sont à proximité du centre de la région possible:
Remarque: Hans Werner Borchers posté un meilleur exemple sur la R-Help, qui a réussi à obtenir l'angle des valeurs par la définition de la contrainte un peu loin du bord: