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.Reals
Liste 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.Integer
MOI.VariableIndex
dans MOI.Interval{Float64}
MOI.VariableIndex
dans MOI.LessThan{Float64}
MOI.VariableIndex
dans MOI.ZeroOne
MOI.VectorOfVariables
dans MOI.SOS1{Float64}
MOI.VectorOfVariables
dans MOI.SOS2{Float64}
Liste des attributs du modèle pris en charge:
Cbc.Status
Cbc.SecondaryStatus
MOI.DualStatus
MOI.NodeCount
MOI.NumberOfVariables
MOI.ObjectiveBound
MOI.ObjectiveSense
MOI.ObjectiveValue
MOI.PrimalStatus
MOI.RelativeGap
MOI.ResultCount
MOI.SolveTimeSec
MOI.TerminationStatus
Liste des attributs d'optimiseur pris en charge:
Cbc.SetVariableNames
MOI.AbsoluteGapTolerance
MOI.NumberOfThreads
MOI.RawOptimizerAttribute
MOI.RelativeGapTolerance
MOI.Silent
MOI.SolverName
MOI.SolverVersion
MOI.TimeLimitSec
Liste des attributs variables pris en charge:
MOI.VariablePrimal
MOI.VariablePrimalStart
MOI.VariableName
Liste des attributs de contrainte pris en charge:
MOI.ConstraintPrimal
Les 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