@@ -33,84 +33,96 @@ function get_solver(pm)
3333 )
3434 end
3535
36- if optimizer == " juniper" && nl == " ipopt" && mip == " cbc"
37- mip_solver = JuMP. optimizer_with_attributes (
36+ if optimizer == " knitro"
37+ solver = JuMP. optimizer_with_attributes (KNITRO. Optimizer, " tol" => tol)
38+ end
39+
40+ if optimizer == " cbc"
41+ solver = JuMP. optimizer_with_attributes (
3842 Cbc. Optimizer,
39- " logLevel" => log_level,
40- " seconds" => mip_time_limit,
41- )
42- nl_solver = JuMP. optimizer_with_attributes (
43- Ipopt. Optimizer,
44- " print_level" => log_level,
45- " max_cpu_time" => nl_time_limit,
46- " tol" => 1e-4 ,
43+ " seconds" => time_limit,
44+ " tol" => tol,
4745 )
46+ end
47+
48+ if optimizer == " scip"
4849 solver = JuMP. optimizer_with_attributes (
49- Juniper. Optimizer,
50- " nl_solver" => nl_solver,
51- " mip_solver" => mip_solver,
52- " log_levels" => [],
53- " time_limit" => time_limit,
50+ SCIP. Optimizer,
51+ " tol" => tol
5452 )
5553 end
5654
57- if optimizer == " juniper" && nl == " gurobi" && mip == " cbc"
58- mip_solver = JuMP. optimizer_with_attributes (
59- Cbc. Optimizer,
60- " logLevel" => log_level,
61- " seconds" => mip_time_limit,
62- )
63- nl_solver = JuMP. optimizer_with_attributes (
64- Gurobi. Optimizer,
65- " TimeLimit" => nl_time_limit,
66- " FeasibilityTol" => tol,
67- " OptimalityTol" => tol,
68- )
55+ if optimizer == " highs"
6956 solver = JuMP. optimizer_with_attributes (
70- Juniper. Optimizer,
71- " nl_solver" => nl_solver,
72- " mip_solver" => mip_solver,
73- " log_levels" => [],
57+ HiGHS. Optimizer,
7458 " time_limit" => time_limit,
59+ " output_flag" => false
7560 )
7661 end
7762
78- if optimizer == " juniper" && nl == " gurobi" && mip == " gurobi"
79- mip_solver = JuMP. optimizer_with_attributes (
80- Gurobi. Optimizer,
81- " TimeLimit" => mip_time_limit,
82- " FeasibilityTol" => tol,
83- " OptimalityTol" => tol,
84- )
85- nl_solver = JuMP. optimizer_with_attributes (
86- Gurobi. Optimizer,
87- " TimeLimit" => nl_time_limit,
88- " FeasibilityTol" => tol,
89- " OptimalityTol" => tol,
90- )
63+ if optimizer == " juniper"
64+ if nl == " ipopt"
65+ nl_solver = JuMP. optimizer_with_attributes (
66+ Ipopt. Optimizer,
67+ " print_level" => log_level,
68+ " max_cpu_time" => nl_time_limit,
69+ " tol" => 1e-4 ,
70+ )
71+ end
72+
73+ if nl == " gurobi"
74+ nl_solver = JuMP. optimizer_with_attributes (
75+ Gurobi. Optimizer,
76+ " TimeLimit" => nl_time_limit,
77+ " FeasibilityTol" => tol,
78+ " OptimalityTol" => tol,
79+ )
80+ end
81+
82+ if mip == " gurobi"
83+ mip_solver = JuMP. optimizer_with_attributes (
84+ Gurobi. Optimizer,
85+ " TimeLimit" => mip_time_limit,
86+ " FeasibilityTol" => tol,
87+ " OptimalityTol" => tol,
88+ )
89+ end
90+
91+ if mip == " highs"
92+ mip_solver = JuMP. optimizer_with_attributes (
93+ HiGHS. Optimizer,
94+ " time_limit" => mip_time_limit,
95+ " primal_feasibility_tolerance" => tol,
96+ " optimality_tolerance" => tol,
97+ " output_flag" => false
98+ )
99+ end
100+
101+ if mip == " cbc"
102+ mip_solver = JuMP. optimizer_with_attributes (
103+ Cbc. Optimizer,
104+ " logLevel" => log_level,
105+ " seconds" => mip_time_limit,
106+ )
107+ end
108+
109+ if mip == " ipopt"
110+ mip_solver = JuMP. optimizer_with_attributes (
111+ Ipopt. Optimizer,
112+ " print_level" => log_level,
113+ " max_cpu_time" => nl_time_limit,
114+ " tol" => 1e-4 ,
115+ )
116+ end
117+
91118 solver = JuMP. optimizer_with_attributes (
92119 Juniper. Optimizer,
93120 " nl_solver" => nl_solver,
94121 " mip_solver" => mip_solver,
95122 " log_levels" => [],
96123 " time_limit" => time_limit,
97124 )
98- end
99-
100- if optimizer == " knitro"
101- solver = JuMP. optimizer_with_attributes (KNITRO. Optimizer, " tol" => tol)
102- end
103125
104- if optimizer == " cbc"
105- solver = JuMP. optimizer_with_attributes (
106- Cbc. Optimizer,
107- " seconds" => time_limit,
108- " tol" => tol,
109- )
110- end
111-
112- if optimizer == " scip"
113- solver = JuMP. optimizer_with_attributes (SCIP. Optimizer, " tol" => tol)
114126 end
115127
116128 return solver
0 commit comments