2016-01-06 1 views
1

J'écris un MILP dans JuMP et j'implémente un rappel heuristique de recherche de branchement local qui effectue un second problème d'optimisation dans le rappel. Je voudrais seulement chercher des solutions dans le voisinage de la solution proposée dans le problème d'optimisation maître. Ce problème principal comporte également une routine séparée de contrainte paresseuse.Contraintes d'optimisation de réutilisation de Julia-JuMP dans un sous-problème

Existe-t-il un moyen d'extraire les contraintes de problème du solveur maître? En particulier, peut-on obtenir une copie des contraintes paresseuses générées jusqu'ici à partir du problème principal pour utilisation dans le sous-problème?

Merci pour votre aide.

p.s. J'utilise le solveur CPLEX si cela fait une différence

Répondre

1

Il s'avère que la raison pour laquelle je me débattais est que ce n'est pas la bonne façon de le faire! CPLEX a quelques options sophistiquées pour générer des subMILP pendant le processus de coupe de la branche &, tout en conservant le cutpool du MILP d'origine.

CPLEX a implémenté une heuristique locale de recherche de branchement. Il peut être activé en définissant l'indicateur CPX_PARAM_LBHEUR sur 1 (0 est la valeur par défaut).

m = Modèle (solveur = CplexSolver (CPX_PARAM_LBHEUR = 1))

J'ai trouvé un ensemble de slides des jours ILOG CPLEX parler de Branching locale et Relaxation Recherche Quartier Induced (RISO) recherche heuristiques (qui est également disponible via le drapeau approprié).