@@ -60,6 +60,56 @@ function _create_new_optimizer(opt::MOI.AbstractOptimizer)
6060 return opt_setup
6161end
6262
63+ """
64+ _set_maxiters!(optimizer, maxiters)
65+
66+ Sets the maximum number of iterations for the optimizer using solver-specific parameter names.
67+ Supports common MOI solvers including Ipopt, Gurobi, CPLEX, and SCIP.
68+ """
69+ function _set_maxiters! (optimizer, maxiters:: Number )
70+ optimizer_name = string (typeof (optimizer))
71+
72+ # Try to set maxiters based on common solver patterns
73+ try
74+ if contains (optimizer_name, " Ipopt" )
75+ MOI. set (optimizer, MOI. RawOptimizerAttribute (" max_iter" ), Int (maxiters))
76+ elseif contains (optimizer_name, " Gurobi" )
77+ MOI. set (optimizer, MOI. RawOptimizerAttribute (" IterationLimit" ), Int (maxiters))
78+ elseif contains (optimizer_name, " CPLEX" ) || contains (optimizer_name, " Cplex" )
79+ MOI. set (optimizer, MOI. RawOptimizerAttribute (" CPX_PARAM_ITLIM" ), Int (maxiters))
80+ elseif contains (optimizer_name, " SCIP" ) || contains (optimizer_name, " Scip" )
81+ MOI. set (optimizer, MOI. RawOptimizerAttribute (" limits/iterations" ), Int (maxiters))
82+ elseif contains (optimizer_name, " Mosek" ) || contains (optimizer_name, " MOSEK" )
83+ MOI. set (optimizer, MOI. RawOptimizerAttribute (" MSK_IPAR_INTPNT_MAX_ITERATIONS" ), Int (maxiters))
84+ elseif contains (optimizer_name, " OSQP" )
85+ MOI. set (optimizer, MOI. RawOptimizerAttribute (" max_iter" ), Int (maxiters))
86+ elseif contains (optimizer_name, " ECOS" )
87+ MOI. set (optimizer, MOI. RawOptimizerAttribute (" maxit" ), Int (maxiters))
88+ elseif contains (optimizer_name, " SCS" )
89+ MOI. set (optimizer, MOI. RawOptimizerAttribute (" max_iters" ), Int (maxiters))
90+ elseif contains (optimizer_name, " COSMO" )
91+ MOI. set (optimizer, MOI. RawOptimizerAttribute (" max_iter" ), Int (maxiters))
92+ else
93+ # Generic fallback - try common parameter names
94+ for param_name in [" max_iter" , " maxiter" , " IterationLimit" , " max_iterations" ]
95+ try
96+ MOI. set (optimizer, MOI. RawOptimizerAttribute (param_name), Int (maxiters))
97+ return # Success, exit early
98+ catch
99+ continue # Try next parameter name
100+ end
101+ end
102+ # If all attempts fail, show warning with guidance
103+ @warn " common maxiters argument could not be mapped for $(typeof (optimizer)) . " *
104+ " Set number of iterations via optimizer specific keyword arguments."
105+ end
106+ catch e
107+ # Catch any errors during parameter setting and show informative warning
108+ @warn " Failed to set maxiters parameter for $(typeof (optimizer)) : $(e) . " *
109+ " Set number of iterations via optimizer specific keyword arguments."
110+ end
111+ end
112+
63113function __map_optimizer_args (cache,
64114 opt:: Union {MOI. AbstractOptimizer, MOI. OptimizerWithAttributes
65115 };
@@ -82,7 +132,7 @@ function __map_optimizer_args(cache,
82132 @warn " common abstol argument is currently not used by $(optimizer) . Set tolerances via optimizer specific keyword arguments."
83133 end
84134 if ! isnothing (maxiters)
85- @warn " common maxiters argument is currently not used by $ (optimizer) . Set number of iterations via optimizer specific keyword arguments. "
135+ _set_maxiters! (optimizer, maxiters)
86136 end
87137 return optimizer
88138end
0 commit comments