Closed odow closed 2 weeks ago
using HiGHS
import MathOptInterface as MOI
model = HiGHS.Optimizer()
x = MOI.add_variables(model, 2)
MOI.add_constraint.(model, x, MOI.GreaterThan(0.0))
ci = MOI.add_constraint(model, x[1] + 2.0 * x[2], MOI.LessThan(3.0))
function run_user_callback(
callback_type::Cint,
message::Ptr{Cchar},
p_data_out::Ptr{HiGHS.HighsCallbackDataOut},
p_data_in::Ptr{HiGHS.HighsCallbackDataIn},
user_callback_data::Ptr{Cvoid},
)
data_out = unsafe_load(p_data_out)::HiGHS.HighsCallbackDataOut
# @show data_out
if p_data_in != C_NULL
data_in = unsafe_load(p_data_in)::HiGHS.HighsCallbackDataIn
end
print(unsafe_string(message))
return
end
callback_cfn = @cfunction(
run_user_callback,
Cvoid,
(
Cint,
Ptr{Cchar},
Ptr{HiGHS.HighsCallbackDataOut},
Ptr{HiGHS.HighsCallbackDataIn},
Ptr{Cvoid},
),
)
HiGHS.Highs_setCallback(model, callback_cfn, C_NULL)
HiGHS.Highs_startCallback(model, HiGHS.kHighsCallbackLogging)
MOI.optimize!(model)
Required for https://github.com/jump-dev/open-energy-modeling-benchmarks/issues/17