From 6e33db72a60121d5f47c76a6e3dfbe963fae8640 Mon Sep 17 00:00:00 2001 From: Sungho Park Date: Thu, 19 Dec 2019 12:59:57 +0900 Subject: [PATCH 1/5] Update Project.toml --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index fccc92d4..d155735b 100644 --- a/Project.toml +++ b/Project.toml @@ -8,7 +8,7 @@ Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" [compat] -CEnum = "^0.1.0" +CEnum = "^0.1.0, 0.2" MathOptInterface = "^0.9.6" julia = "^1.0.0" From 39d81e3682eb287ce3f4d9bb36a5b4385c7d0407 Mon Sep 17 00:00:00 2001 From: Sungho Park Date: Thu, 19 Dec 2019 14:24:59 +0900 Subject: [PATCH 2/5] Update commons.jl --- src/wrapper/commons.jl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/wrapper/commons.jl b/src/wrapper/commons.jl index e714d635..886186e5 100644 --- a/src/wrapper/commons.jl +++ b/src/wrapper/commons.jl @@ -700,7 +700,7 @@ const SCIP_PRIMAL = SCIP_Primal # Skipping MacroDefinition: SCIP_DECL_PROBEXITSOL ( x ) SCIP_RETCODE x ( SCIP * scip , SCIP_PROBDATA * probdata , SCIP_Bool restart ) # Skipping MacroDefinition: SCIP_DECL_PROBCOPY ( x ) SCIP_RETCODE x ( SCIP * scip , SCIP * sourcescip , SCIP_PROBDATA * sourcedata , SCIP_HASHMAP * varmap , SCIP_HASHMAP * consmap , SCIP_PROBDATA * * targetdata , SCIP_Bool global , SCIP_RESULT * result ) -@cenum(SCIP_Objsense{Int32}, +@cenum(SCIP_Objsense, SCIP_OBJSENSE_MAXIMIZE = -1, SCIP_OBJSENSE_MINIMIZE = 1, ) @@ -811,7 +811,7 @@ const REOPT_CONSTYPE = Reopt_ConsType const SCIP_RESULT = SCIP_Result -@cenum(SCIP_Retcode{Int32}, +@cenum(SCIP_Retcode, SCIP_OKAY = 1, SCIP_ERROR = 0, SCIP_NOMEMORY = -1, @@ -1111,7 +1111,7 @@ const SCIP_VAR = SCIP_Var const SCIP_VarData = Cvoid const SCIP_VARDATA = SCIP_VarData -@cenum(SCIP_VBCColor{Int32}, +@cenum(SCIP_VBCColor, SCIP_VBCCOLOR_UNSOLVED = 3, SCIP_VBCCOLOR_SOLVED = 2, SCIP_VBCCOLOR_CUTOFF = 4, @@ -1201,7 +1201,7 @@ const SCIP_LINCONSUPGRADE = SCIP_LinConsUpgrade const SCIP_ORBITOPETYPE = SCIP_OrbitopeType const ARTIFICIALVARNAMEPREFIX = "andresultant_" -@cenum(SCIP_LinearConsType{Int32}, +@cenum(SCIP_LinearConsType, SCIP_LINEARCONSTYPE_INVALIDCONS = -1, SCIP_LINEARCONSTYPE_LINEAR = 0, SCIP_LINEARCONSTYPE_LOGICOR = 1, @@ -1265,7 +1265,7 @@ end const SCIP_INTERVAL = SCIP_Interval const SCIP_ROUNDMODE = Cint -@cenum(SCIP_ObjSen{Int32}, +@cenum(SCIP_ObjSen, SCIP_OBJSEN_MAXIMIZE = -1, SCIP_OBJSEN_MINIMIZE = 1, ) From aa53d0ed28b2cc184fd33f66d9509bf02683fa1b Mon Sep 17 00:00:00 2001 From: Sungho Park Date: Thu, 19 Dec 2019 14:56:34 +0900 Subject: [PATCH 3/5] Update results.jl --- src/MOI_wrapper/results.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MOI_wrapper/results.jl b/src/MOI_wrapper/results.jl index d0a09be2..6b18ef52 100644 --- a/src/MOI_wrapper/results.jl +++ b/src/MOI_wrapper/results.jl @@ -40,7 +40,7 @@ function MOI.get(o::Optimizer, ::MOI.ResultCount)::Int end function MOI.get(o::Optimizer, ::MOI.RawStatusString) - return String(CEnum.enum_name(SCIPgetStatus(o))) + return String(Symbol(SCIPgetStatus(o))) end "Make sure that SCIP is currently in one of the allowed stages." From 454c60f59303d048e1ae649931b30f0194aec205 Mon Sep 17 00:00:00 2001 From: Sungho Park Date: Thu, 19 Dec 2019 15:09:33 +0900 Subject: [PATCH 4/5] scip with JuMP --- example/scip_with_jump_minlp.jl | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 example/scip_with_jump_minlp.jl diff --git a/example/scip_with_jump_minlp.jl b/example/scip_with_jump_minlp.jl new file mode 100644 index 00000000..88bea34e --- /dev/null +++ b/example/scip_with_jump_minlp.jl @@ -0,0 +1,46 @@ +using JuMP +#using JuMP:MOI +using SCIP + +function solve_model(m::Model;mixed::Bool = false) + if mixed + @variable(m, x>=0, Int) + @variable(m, y[1:2], Int) + @variable(m, s[1:5]>=0, Int) + @variable(m, l[1:5]>=0, Int) + else + @variable(m, x>=0) + @variable(m, y[1:2]) + @variable(m, s[1:5]>=0) + @variable(m, l[1:5]>=0) + end + + @objective(m, Min, -x -3y[1] + 2y[2]) + + @constraint(m, -2x + y[1] + 4y[2] + s[1] == 16) + @constraint(m, 8x + 3y[1] - 2y[2] + s[2] == 48) + @constraint(m, -2x + y[1] - 3y[2] + s[3] == -12) + @constraint(m, -y[1] + s[4] == 0) + @constraint(m, y[1] + s[5] == 4) + @constraint(m, -1 + l[1] + 3l[2] + l[3] - l[4] + l[5] == 0) + @constraint(m, 4l[2] - 2l[2] - 3l[3] == 0) + for i in 1:5 + @NLconstraint(m, l[i] * s[i] == 0) + end + + JuMP.optimize!(m) + + println("** Optimal objective function value = ", JuMP.objective_value(m)) + println("** Optimal x = ", JuMP.value(x)) + println("** Optimal y = ", JuMP.value.(y)) + println("** Optimal s = ", JuMP.value.(s)) + println("** Optimal l = ", JuMP.value.(l)) + nothing; +end + +model = direct_model(SCIP.Optimizer()) +solve_model(model) + +model = direct_model(SCIP.Optimizer()) +solve_model(model,mixed=true) + From 3b3dcf4aae07740448f94502946f9fd69ca0411e Mon Sep 17 00:00:00 2001 From: Sungho Park Date: Fri, 20 Dec 2019 01:49:29 +0900 Subject: [PATCH 5/5] Update scip_with_jump_minlp.jl --- example/scip_with_jump_minlp.jl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/example/scip_with_jump_minlp.jl b/example/scip_with_jump_minlp.jl index 88bea34e..a6396244 100644 --- a/example/scip_with_jump_minlp.jl +++ b/example/scip_with_jump_minlp.jl @@ -1,3 +1,7 @@ +#= +The following some part of code are excerpt from "Julia Programming for Operations Research 2/e (Changhyun Kwon) - Chap 8" +=# + using JuMP #using JuMP:MOI using SCIP