Je résous un problème de minimisation non linéaire (contraint) avec trois variables (w, V, m). Étant donné que w le problème de minimisation est (contraint) linéaire pour (V, m). Le problème de minimisation linéaire est défini pour w dans [w_0, w_1].Comment conserver la recherche d'optimisation dans les limites de Scipy?
La façon dont j'ai mis en place le problème est que w donné, je résous un programme linéaire contraint et puis je le minimise sur w avec bounds = ((w_0, w_1),)
la gamme de w comme limites. Je rencontre des problèmes lorsque la minimisation sur w recherche en dehors de ses limites, c'est-à-dire dans une région où le programme linéaire n'est pas défini.
Existe-t-il un moyen de restreindre la recherche pour ne pas sortir des limites fournies? Si non, existe-t-il des alternatives? Passer des limites plus serrées? Faire que la fonction objectif renvoie une grande valeur si elle est passée une valeur en dehors des limites?
Je suis désolé de ne pas pouvoir fournir un exemple de travail minimal.
Voici quelques pseudo-code:
from scipy.optimize import linprog,minimize
def objective(w):
A_ub,b_ub = constraints(w)
results = linprog(c,A_ub = A_ub,b_ub=b_ub)
return results.fun
bounds = ((w_0,w_1),)
x0 = (w_0+w_1)/2
minimize(objective,x0,bounds)
Même des solveurs de chemin infaisables plus sophistiqués (par exemple MINOS) n'évalueront pas les fonctions et les gradients pour x à l'extérieur de leurs limites. Infaisible n'est pas identique aux violations liées. Pour les problèmes du monde réel, il est important pour un solveur de s'assurer que nous faisons des évaluations uniquement pour 'lb <= x <= ub'. Nous l'utilisons pour protéger contre les erreurs de domaine (par exemple log (x) pour x négatif). –
@ErwinKalvelagen Merci pour votre commentaire.Je n'ai jamais utilisé MINOS et je ne me souviens pas des internes que j'aurais pu lire dans le passé à propos de ce solveur, mais j'ai toujours eu l'impression que certains/la plupart des solveurs NLP généraux évalueront des points irréalisables pendant l'optimisation (COBYLA serait certains [exemple] (https://mail.scipy.org/pipermail/scipy-user/2007-July/012955.html)). Je peux même imaginer des avantages en ce qui concerne les preuves de convergence. La question est maintenant: ai-je tort ou vos impressions sont-elles limitées aux solveurs commerciaux? – sascha
Oui, les points peuvent être irréalisables, mais les limites des variables structurelles sont respectées lors de l'évaluation des fonctions (pour les bons solveurs). C'est à dire. x est entre les limites mais les équations peuvent encore être infaisables. Notez que les méthodes de chemin réalisables peuvent être irréalisables; Dans ma terminologie, faisable signifie que, une fois que tu es faisable, tu restes réalisable (essentiellement une approche stricte de phase I/phase II). Par exemple. CONOPT est un algorithme de chemin possible mais acceptera un point initial irréalisable. –