CBC.JL é um invólucro para o solucionador de Moed-Or Branch e Cut (CBC).
O invólucro tem dois componentes:
Este invólucro é mantido pela comunidade Jump e não é um projeto de moeda ou.
Se precisar de ajuda, faça uma pergunta no fórum da comunidade de salto.
Se você tiver um exemplo reproduzível de um bug, abra um problema do GitHub.
Cbc.jl
é licenciado sob a licença do MIT.
O solucionador subjacente, Coin-Or/CBC, está licenciado sob a licença pública do Eclipse.
Instale a CBC usando Pkg.add
:
import Pkg
Pkg . add ( " Cbc " )
Além de instalar o pacote CBC.JL, isso também baixará e instalará os binários da CBC. Você não precisa instalar a CBC separadamente.
Para usar um binário personalizado, leia a seção de binários de solucionador personalizada da documentação do salto.
Para usar o CBC com Jump, use Cbc.Optimizer
:
using JuMP, Cbc
model = Model (Cbc . Optimizer)
set_attribute (model, " logLevel " , 1 )
O otimizador de ramificação e corte de moedas (CBC) suporta as seguintes restrições e atributos.
Lista de funções objetivas suportadas:
MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}}
Lista de tipos de variáveis suportados:
MOI.Reals
Lista de tipos de restrição suportados:
MOI.ScalarAffineFunction{Float64}
em MOI.EqualTo{Float64}
MOI.ScalarAffineFunction{Float64}
em MOI.GreaterThan{Float64}
MOI.ScalarAffineFunction{Float64}
em MOI.Interval{Float64}
MOI.ScalarAffineFunction{Float64}
em MOI.LessThan{Float64}
MOI.VariableIndex
em MOI.EqualTo{Float64}
MOI.VariableIndex
em MOI.GreaterThan{Float64}
MOI.VariableIndex
em MOI.Integer
MOI.VariableIndex
em MOI.Interval{Float64}
MOI.VariableIndex
em MOI.LessThan{Float64}
MOI.VariableIndex
em MOI.ZeroOne
MOI.VectorOfVariables
EM MOI.SOS1{Float64}
MOI.VectorOfVariables
EM MOI.SOS2{Float64}
Lista de atributos de modelo suportados:
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
Lista de atributos de otimizador suportado:
Cbc.SetVariableNames
MOI.AbsoluteGapTolerance
MOI.NumberOfThreads
MOI.RawOptimizerAttribute
MOI.RelativeGapTolerance
MOI.Silent
MOI.SolverName
MOI.SolverVersion
MOI.TimeLimitSec
Lista de atributos variáveis suportados:
MOI.VariablePrimal
MOI.VariablePrimalStart
MOI.VariableName
Lista de atributos de restrição suportados:
MOI.ConstraintPrimal
Infelizmente, as opções não estão bem documentadas.
As seguintes opções provavelmente serão as mais úteis:
Parâmetro | Exemplo | Explicação |
---|---|---|
seconds | 60.0 | Limite de tempo limite da solução |
logLevel | 2 | Defina como 0 para desativar a saída da solução |
maxSolutions | 1 | Terminam após essas muitas soluções viáveis foram encontradas |
maxNodes | 1 | Terminam após esses muitos nós de ramificação e limite foram avaliados |
allowableGap | 0.05 | Rescindir após a lacuna de otimização é menor que esse valor (em uma escala absoluta) |
ratioGap | 0.05 | Rescindir após a lacuna de otimização é menor que essa fração relativa |
threads | 1 | Defina o número de threads a serem usados para ramificação paralela e limite |
A lista completa de parâmetros pode ser encontrada executando o executável cbc
e digitando ?
no prompt.
Inicie o executável cbc
da Julia da seguinte forma:
using Cbc_jll
Cbc_jll . cbc () do exe
run ( ` $(exe) ` )
end