2015-07-16 1 views
0

Pour le problème d'optimisation non linéaire dans deux variables, disons x et y, comment vérifier si la fonction est lisse ou non et s'il s'agit d'un problème d'échelle moyenne ou de grande échelle. Dois-je utiliser le solveur 'fmincon' (dans MATLAB) car il y a une contrainte linéaire et des bornes sur les variables? J'ai besoin d'optima globaux et pour une fonction convexe, les optima locaux sont les mêmes que les optima globaux. Mais je ne suis pas sûr de savoir comment vérifier la convexité de ma fonction?Optimisation non linéaire dans MATLAB

Mon problème est min f (x, y) où x < y et x, y> 0

Répondre

1

Le solveur fmincon, en particulier le sqp, est très approprié pour résoudre les problèmes non-linéaires quadratiques avec contraintes linéaires. C'est le meilleur résolveur que vous pouvez choisir, si vous savez que votre problème est convexe. Cependant, avec si peu d'informations vous avez donné, il est difficile de dire si votre est convexe ou non. Vous pouvez consulter le convex optimization book de Boyd & Vandenberghe (à partir de la page 23) pour voir les propriétés des ensembles convexes et des fonctions.

EDIT

pour découvrir, si la fonction est convex ou non, vous pouvez essayer d'utiliser le fichier this. Je ne sais pas comment vous pouvez vérifier smoothness. Vous pouvez trouver beaucoup d'informations sur large-scale, medium-scale problèmes à chaque livre d'optimisation. En bref, cela dépend du nombre de paramètres que vous devez optimiser. Le traçage est un problème complètement différent. Si vous le recherchez spécifiquement, vous trouverez des centaines de ressources.

+0

Merci, T-1000. Je demandais s'il y a un moyen pour MATLAB de vérifier la convexité? Et qu'en est-il de la finesse et de l'échelle du problème (moyenne ou grande échelle)? Ai-je besoin de tracer pour voir la finesse de la fonction? Je suis un débutant, s'il vous plaît aussi dire comment obtenir un «terrain de surf». J'utilise MATLAB 2013, les graphiques sont affichés inactifs avec le commentaire 'aucune variable sélectionnée'. –

+0

@ Dr.NishaArora J'ai modifié la réponse –

+0

Merci encore, je l'ai téléchargé, essayé d'exécuter le code donné. Il a montré quelques erreurs. Initialement, j'ai eu une erreur comme 'Undefined fonction ou variable' x1 ' Erreur dans convex_checker (ligne 2) f = x1^2 + sin (x2) -x1 * x3 et beaucoup plus. Après avoir lutté sur l'écriture de la fonction (se référant http://www.mathworks.com/matlabcentral/answers/14049-question-from-global-optimization-webinar) & autres erreurs Et enfin quand je cours, je ne reçois pas sortie. J'ai essayé 'echo on & echo off' et 'stdout' aussi, mais je ne sais pas où je peux obtenir la sortie, plz aide. Je suis nouveau à ce sujet. Merci et désolé de mettre des explications détaillées. –