
CBC.JL est un emballage pour le solveur de branche et de coupe (CBC).
Le wrapper a deux composants:
Cet emballage est maintenu par la communauté Jump et n'est pas un projet de pièces.
Si vous avez besoin d'aide, veuillez poser une question sur le forum de la communauté Jump.
Si vous avez un exemple reproductible d'un bogue, veuillez ouvrir un problème GitHub.
Cbc.jl est sous licence sous la licence MIT.
Le solveur sous-jacent, Coin-Or / CBC, est autorisé sous la licence publique Eclipse.
Installez CBC à l'aide de Pkg.add :
import Pkg
Pkg . add ( " Cbc " )En plus d'installer le package CBC.JL, cela téléchargera et installera également les binaires CBC. Vous n'avez pas besoin d'installer CBC séparément.
Pour utiliser un binaire personnalisé, lisez la section Binaires de solveur personnalisée de la documentation de saut.
Pour utiliser CBC avec Jump, utilisez Cbc.Optimizer :
using JuMP, Cbc
model = Model (Cbc . Optimizer)
set_attribute (model, " logLevel " , 1 )L'optimiseur de branche et de coupe (CBC) prend en charge les contraintes et attributs suivants.
Liste des fonctions objectives prises en charge:
MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}}Liste des types de variables prises en charge:
MOI.RealsListe des types de contraintes prises en charge:
MOI.ScalarAffineFunction{Float64} dans MOI.EqualTo{Float64}MOI.ScalarAffineFunction{Float64} dans MOI.GreaterThan{Float64}MOI.ScalarAffineFunction{Float64} dans MOI.Interval{Float64}MOI.ScalarAffineFunction{Float64} dans MOI.LessThan{Float64}MOI.VariableIndex dans MOI.EqualTo{Float64}MOI.VariableIndex dans MOI.GreaterThan{Float64}MOI.VariableIndex dans MOI.IntegerMOI.VariableIndex dans MOI.Interval{Float64}MOI.VariableIndex dans MOI.LessThan{Float64}MOI.VariableIndex dans MOI.ZeroOneMOI.VectorOfVariables dans MOI.SOS1{Float64}MOI.VectorOfVariables dans MOI.SOS2{Float64}Liste des attributs du modèle pris en charge:
Cbc.StatusCbc.SecondaryStatusMOI.DualStatusMOI.NodeCountMOI.NumberOfVariablesMOI.ObjectiveBoundMOI.ObjectiveSenseMOI.ObjectiveValueMOI.PrimalStatusMOI.RelativeGapMOI.ResultCountMOI.SolveTimeSecMOI.TerminationStatusListe des attributs d'optimiseur pris en charge:
Cbc.SetVariableNamesMOI.AbsoluteGapToleranceMOI.NumberOfThreadsMOI.RawOptimizerAttributeMOI.RelativeGapToleranceMOI.SilentMOI.SolverNameMOI.SolverVersionMOI.TimeLimitSecListe des attributs variables pris en charge:
MOI.VariablePrimalMOI.VariablePrimalStartMOI.VariableNameListe des attributs de contrainte pris en charge:
MOI.ConstraintPrimalLes options ne sont malheureusement pas bien documentées.
Les options suivantes sont probablement les plus utiles:
| Paramètre | Exemple | Explication |
|---|---|---|
seconds | 60.0 | Limite de délai d'expiration de la solution |
logLevel | 2 | Réglé sur 0 pour désactiver la sortie de la solution |
maxSolutions | 1 | Se terminer après que de nombreuses solutions réalisables ont été trouvées |
maxNodes | 1 | Se terminer après que de nombreux nœuds de branche et liés ont été évalués |
allowableGap | 0.05 | Terminer après l'optimalité L'écart est inférieur à cette valeur (à une échelle absolue) |
ratioGap | 0.05 | Se terminer après l'optimalité que l'écart est plus petit que cette fraction relative |
threads | 1 | Définissez le nombre de threads à utiliser pour la branche parallèle et lié |
La liste complète des paramètres peut être trouvée en exécutant l'exécutable cbc et en tapant ? à l'invite.
Démarrez l'exécutable cbc à partir de Julia comme suit:
using Cbc_jll
Cbc_jll . cbc () do exe
run ( ` $(exe) ` )
end