/ / Comment utiliser le paramètre paresseux dans Gurobi - python, programmation linéaire, gurobi

Comment utiliser le paramètre paresseux dans Gurobi - python, programmation linéaire, gurobi

Je veux ajouter le paramètre lazy et le changer dans mon problème écrit en python. Quand j'ai lu le manuel à http://www.gurobi.com/documentation/7.5/ampl-gurobi/parameters.html pour les paramètres paresseux, il est écrit:


paresseux: s'il faut respecter le suffixe .lazy sur les contraintes linéaires dans les problèmes de variables binaires ou entières:

0 = non (ignorer .lazy)

1 = oui (par défaut) Les contraintes paresseuses sont indiquéesavec les valeurs .lazy de 1, 2 ou 3 et sont ignorés jusqu'à ce qu'une solution réalisable aux contraintes restantes soit trouvée. Ce qui se passe ensuite dépend des valeurs de .lazy:

1 ==> la contrainte peut toujours être ignorée si une autre contrainte paresseuse interrompt la solution actuelle;

2 ==> la contrainte sera désormais appliquée si elle est violée par la solution actuelle;

3 ==> la contrainte sera désormais appliquée .:


Mon but est de soulager le solveur. Parmi de nombreux paramètres, paresseux semblait être un bon moyen d'essayer. Je ne pouvais pas trouver un exemple ou un cas d'utilisation pour cela. Cela s'applique-t-il aux variables ou aux contraintes ou à un type spécifique de contrainte? Aussi à quoi correspond ".lazy"?

Réponses:

0 pour la réponse № 1

Comme le signalent sascha et Erwin, la documentation que vous lisez est spécifique à AMPL.

AMPL est une plate-forme permettant de définirproblèmes d’optimisation, indépendants du solveur utilisé pour les résoudre. Il traduit ensuite ces spécifications en un modèle approprié au solveur choisi par l’utilisateur. L’un des solveurs qu’il prend en charge est Gurobi; il existe donc une documentation spécifique à la combinaison. de AMPL et Gurobi.

Si vous programmez en Python, vous n’utilisez probablement pas AMPL, vous voudrez peut-être vous pencher sur http://www.gurobi.com/documentation/7.5/refman/lazy.html au lieu.

En bref: Les "contraintes paresseuses" sont une astuce qui peut être utilisée lorsque la définition complète du modèle nécessiterait un très grand nombre de contraintes, mais il est peu probable que la plupart d'entre elles modifient la solution. Dans ce cas, vous pouvez parfois améliorer la vitesse de la solution avec l'approche suivante:

  • Configurer le problème sans les contraintes "paresseuses"
  • Résoudre ce problème
  • Vérifiez si la solution ne respecte pas l'une des contraintes paresseuses
  • Si tel est le cas, ajoutez UNIQUEMENT les contraintes réellement violées et résolvez-les.
  • Répétez l'opération jusqu'à obtenir une solution qui réponde à toutes les contraintes paresseuses.

Selon la documentation, Gurobi ne prend en charge que l'option paresseux pour les contraintes linéaires, mais la méthode peut en principe être utilisée pour d'autres types de contraintes.