From 4e0b644854b86ca3013602c5c60d0b6dd6c50aea Mon Sep 17 00:00:00 2001 From: Mohamed Tarek Date: Sat, 3 Feb 2024 05:04:42 +1100 Subject: [PATCH] replace Cbc with HiGHS --- Project.toml | 6 +++--- src/NonconvexTOBS.jl | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Project.toml b/Project.toml index 3f75db4..619f1e7 100644 --- a/Project.toml +++ b/Project.toml @@ -1,10 +1,10 @@ name = "NonconvexTOBS" uuid = "6c0b5230-d4c9-466e-bfd4-b31e6272ab65" authors = ["Mohamed Tarek and contributors"] -version = "0.1.2" +version = "0.2.0" [deps] -Cbc = "9961bab8-2fa3-5c5a-9d89-47fab24efd76" +HiGHS = "87dc4568-4c63-4d18-b0c0-bb2238e4078b" JuMP = "4076af6c-e467-56ae-b986-b466b2749572" NonconvexCore = "035190e5-69f1-488f-aaab-becca2889735" Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a" @@ -12,7 +12,7 @@ Reexport = "189a3867-3050-52da-a836-e630ba90ab69" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [compat] -Cbc = "1.0.1" +HiGHS = "1" JuMP = "1.1" NonconvexCore = "1" Parameters = "0.12" diff --git a/src/NonconvexTOBS.jl b/src/NonconvexTOBS.jl index 01db105..c78dcc9 100644 --- a/src/NonconvexTOBS.jl +++ b/src/NonconvexTOBS.jl @@ -2,9 +2,9 @@ module NonconvexTOBS export TOBSAlg, TOBSOptions -using Reexport, Parameters, SparseArrays, Cbc +using Reexport, Parameters, SparseArrays, HiGHS @reexport using NonconvexCore -using NonconvexCore: @params, VecModel, AbstractResult +using NonconvexCore: VecModel, AbstractResult using NonconvexCore: AbstractOptimizer, CountingFunction import NonconvexCore: optimize! import JuMP @@ -21,7 +21,7 @@ function TOBSOptions(; convParam::Real = 0.001, # convergence parameter (upper bound of error) constrRelax::Real = 0.1, # constraint relaxation parameter timeLimit::Real = 1.0, - optimizer = Cbc.Optimizer, + optimizer = HiGHS.Optimizer, maxiter::Int = 200, timeStable::Bool = true, ) @@ -37,10 +37,10 @@ function TOBSOptions(; )) end -@params mutable struct TOBSWorkspace <: Workspace - model::VecModel - x0::AbstractVector - options::TOBSOptions +mutable struct TOBSWorkspace{TM <: VecModel, TX <: AbstractVector, TO <: TOBSOptions} <: Workspace + model::TM + x0::TX + options::TO end function TOBSWorkspace( model::VecModel, @@ -50,10 +50,10 @@ function TOBSWorkspace( ) return TOBSWorkspace(model, copy(x0), options) end -@params struct TOBSResult <: AbstractResult - minimizer::Any - minimum::Any - error::Any +struct TOBSResult{TM1, TM2, TE} <: AbstractResult + minimizer::TM1 + minimum::TM2 + error::TE end function optimize!(workspace::TOBSWorkspace) @@ -84,8 +84,8 @@ function optimize!(workspace::TOBSWorkspace) skip_step = false while (convParam < er || any(currentConstr .> 0)) && count < maxiter count > 1 && (m = JuMP.Model(milp_solver)) - JuMP.set_optimizer_attribute(m, "logLevel", 0) - JuMP.set_optimizer_attribute(m, "seconds", timeLimit) + JuMP.set_optimizer_attribute(m, "log_to_console", false) + JuMP.set_optimizer_attribute(m, "time_limit", timeLimit) if !skip_step || count == 1 if count > 1 currentConstr, jacConstr =