code running ok until to -4-5-part using MIPLearn.BasicCollector() collect data
error :The terminal process "julia ‘-i’,‘–banner=no’,“project=C:\Userslxx,julialenvironmentslv1.11’‘c:\Users\xx.vscodelextensionsyjulialang.language-julia-1.127.2\scriptslterminalserverlterminalserver.jl’, \l.\pipelvsc-jlrepl-0b585e81-6b29-4619-89fd-806ef1ff2441,”\pipe\vsc-jl-repldbg-27a9d071-f8c5-4b16-9235-8bd35873fba0’, "l.\pipelvsc-jl-cr-c3e9982c-1771-4958-af9b-5739f5db97eb’,‘USE REVISE=true’"USE PLOTPANE=true’,‘USE PROGRESS=true’‘ENABLE SHELL INTEGRATION=true’,'DEBUG MODE=false"terminated with exit code: 1.
import JuMP
import JSON
import MIPLearn
using HiGHS
struct UnitCommitmentData
demand::Float64
pmin::Vector{Float64}
pmax::Vector{Float64}
cfix::Vector{Float64}
cvar::Vector{Float64}
end;
function build_uc_model(data)
if data isa String
data = read_jld2(data)
end
model = Model(HiGHS.Optimizer)
println("--------------------------------------")
G = 1:length(data.pmin)
JuMP.@variable(model, x[G], Bin)
JuMP.@variable(model, y[G] >= 0)
JuMP.@objective(model, Min, sum(data.cfix[g] * x[g] + data.cvar[g] * y[g] for g in G))
JuMP.@constraint(model, eq_max_power[g in G], y[g] <= data.pmax[g] * x[g])
JuMP.@constraint(model, eq_min_power[g in G], y[g] >= data.pmin[g] * x[g])
JuMP.@constraint(model, eq_demand, sum(y[g] for g in G) == data.demand)
println(eq_demand)
#optimize!(model)
#assert_is_solved_and_feasible(model)
#@show objective_value(model)
#@show Vector(value.(model.[:x]))
#@show Vector(value.(model.[:y]));
return model
#daisai
#return MIPLearn.JumpModel(model)
end;
model = build_uc_model(
UnitCommitmentData(
100.0, # demand
[10, 20, 30], # pmin
[50, 60, 70], # pmax
[700, 600, 500], # cfix
[1.5, 2.0, 2.5], # cvar
)
)
write_to_file(model, "g:\\unitcommit-data\\test_knapsnack_miplearn.lp")
write_to_file(model, "g:\\unitcommit-data\\test_knapsnack_miplearn.mps")
optimize!(model)
using Distributions
using Random
function random_uc_data(; samples::Int, n::Int, seed::Int=42)::Vector
Random.seed!(seed)
pmin = rand(Uniform(100_000, 500_000), n)
pmax = pmin .* rand(Uniform(2, 2.5), n)
cfix = pmin .* rand(Uniform(100, 125), n)
cvar = rand(Uniform(1.25, 1.50), n)
return [
UnitCommitmentData(
sum(pmax) * rand(Uniform(0.5, 0.75)),
pmin,
pmax,
cfix,
cvar,
)
for _ in 1:samples
]
end;
println("---------------------------3-----------")
using JLD2
data = random_uc_data(samples=500, n=500)
train_data = MIPLearn.write_jld2(data[1:450], "uc/train")
test_data = MIPLearn.write_jld2(data[451:500], "uc/test");
println("---------------------------4-5-----------")
using Suppressor
# 定义错误日志路径
error_log = "g:\\unitcommit-data\\miplearn_error.log"
# 捕获错误并写入文件
open(error_log, "w") do file
try
#@suppress_out begin
bc = MIPLearn.BasicCollector()
bc.collect(train_data, build_uc_model)
#end
catch e
# 写入错误基本信息
println(file, "=== ERROR MESSAGE ===")
println(file, "Type: ", typeof(e))
println(file, "Message: ", e)
println(file, "\n=== STACKTRACE ===")
# 写入完整堆栈跟踪
showerror(file, e, catch_backtrace())
end
end
println("错误日志已保存至: ", abspath(error_log))
why catch error not working