Skip to content

Commit edb4b78

Browse files
committed
refactor: unify non-linear constraint types under a single enum value
1 parent 761f78f commit edb4b78

6 files changed

Lines changed: 20 additions & 24 deletions

File tree

include/pyoptinterface/core.hpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -271,12 +271,8 @@ enum class ConstraintType
271271
SOS,
272272
SecondOrderCone,
273273
ExponentialCone,
274-
SolverDefinedOrNL,
275-
Gurobi_General,
276-
COPT_NL,
277-
IPOPT_NL,
278-
Xpress_Nlp,
279-
KNITRO_NL,
274+
NL,
275+
SolverDefined,
280276
};
281277

282278
enum class SOSType

lib/copt_model.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,7 @@ ConstraintIndex COPTModel::add_single_nl_constraint(ExpressionGraph &graph,
704704

705705
IndexT constraint_index = m_nl_constraint_index.add_index();
706706

707-
ConstraintIndex constraint(ConstraintType::COPT_NL, constraint_index);
707+
ConstraintIndex constraint(ConstraintType::NL, constraint_index);
708708

709709
return constraint;
710710
}
@@ -1036,7 +1036,7 @@ double COPTModel::get_constraint_info(const ConstraintIndex &constraint, const c
10361036
case ConstraintType::Quadratic:
10371037
error = copt::COPT_GetQConstrInfo(m_model.get(), info_name, num, &row, &retval);
10381038
break;
1039-
case ConstraintType::COPT_NL:
1039+
case ConstraintType::NL:
10401040
error = copt::COPT_GetNLConstrInfo(m_model.get(), info_name, num, &row, &retval);
10411041
break;
10421042
default:
@@ -1059,7 +1059,7 @@ std::string COPTModel::get_constraint_name(const ConstraintIndex &constraint)
10591059
case ConstraintType::Quadratic:
10601060
error = copt::COPT_GetQConstrName(m_model.get(), row, NULL, 0, &reqsize);
10611061
break;
1062-
case ConstraintType::COPT_NL:
1062+
case ConstraintType::NL:
10631063
error = copt::COPT_GetNLConstrName(m_model.get(), row, NULL, 0, &reqsize);
10641064
break;
10651065
default:
@@ -1093,7 +1093,7 @@ void COPTModel::set_constraint_name(const ConstraintIndex &constraint, const cha
10931093
case ConstraintType::Quadratic:
10941094
error = copt::COPT_SetQConstrNames(m_model.get(), 1, &row, names);
10951095
break;
1096-
case ConstraintType::COPT_NL:
1096+
case ConstraintType::NL:
10971097
error = copt::COPT_SetNLConstrNames(m_model.get(), 1, &row, names);
10981098
break;
10991099
default:
@@ -1304,7 +1304,7 @@ int COPTModel::_constraint_index(const ConstraintIndex &constraint)
13041304
return m_cone_constraint_index.get_index(constraint.index);
13051305
case ConstraintType::ExponentialCone:
13061306
return m_exp_cone_constraint_index.get_index(constraint.index);
1307-
case ConstraintType::COPT_NL:
1307+
case ConstraintType::NL:
13081308
return m_nl_constraint_index.get_index(constraint.index);
13091309
default:
13101310
throw std::runtime_error("Unknown constraint type");

lib/gurobi_model.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ ConstraintIndex GurobiModel::add_single_nl_constraint(const ExpressionGraph &gra
629629

630630
IndexT constraint_index = m_general_constraint_index.add_index();
631631

632-
ConstraintIndex constraint(ConstraintType::Gurobi_General, constraint_index);
632+
ConstraintIndex constraint(ConstraintType::NL, constraint_index);
633633
m_nlcon_resvar_map.emplace(constraint_index, resvar.index);
634634

635635
m_update_flag |= m_general_constraint_creation;
@@ -661,7 +661,7 @@ void GurobiModel::delete_constraint(const ConstraintIndex &constraint)
661661
error = gurobi::GRBdelsos(m_model.get(), 1, &constraint_row);
662662
m_update_flag |= m_sos_constraint_deletion;
663663
break;
664-
case ConstraintType::Gurobi_General: {
664+
case ConstraintType::NL: {
665665
m_general_constraint_index.delete_index(constraint.index);
666666
error = gurobi::GRBdelgenconstrs(m_model.get(), 1, &constraint_row);
667667
// delete the corresponding resvar variable as well
@@ -687,7 +687,7 @@ bool GurobiModel::is_constraint_active(const ConstraintIndex &constraint)
687687
return m_quadratic_constraint_index.has_index(constraint.index);
688688
case ConstraintType::SOS:
689689
return m_sos_constraint_index.has_index(constraint.index);
690-
case ConstraintType::Gurobi_General:
690+
case ConstraintType::NL:
691691
return m_general_constraint_index.has_index(constraint.index);
692692
default:
693693
throw std::runtime_error("Unknown constraint type");
@@ -1253,7 +1253,7 @@ int GurobiModel::_constraint_index(const ConstraintIndex &constraint)
12531253
return m_quadratic_constraint_index.get_index(constraint.index);
12541254
case ConstraintType::SOS:
12551255
return m_sos_constraint_index.get_index(constraint.index);
1256-
case ConstraintType::Gurobi_General:
1256+
case ConstraintType::NL:
12571257
return m_general_constraint_index.get_index(constraint.index);
12581258
default:
12591259
throw std::runtime_error("Unknown constraint type");
@@ -1310,7 +1310,7 @@ void GurobiModel::_update_for_constraint_index(ConstraintType type)
13101310
case ConstraintType::SOS:
13111311
need_update = m_update_flag & (m_sos_constraint_creation | m_sos_constraint_deletion);
13121312
break;
1313-
case ConstraintType::Gurobi_General:
1313+
case ConstraintType::NL:
13141314
need_update =
13151315
m_update_flag & (m_general_constraint_creation | m_general_constraint_deletion);
13161316
break;

lib/ipopt_model.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ int IpoptModel::_constraint_internal_index(const ConstraintIndex &constraint)
162162
return constraint.index;
163163
case ConstraintType::Quadratic:
164164
return m_linear_con_evaluator.n_constraints + constraint.index;
165-
case ConstraintType::IPOPT_NL: {
165+
case ConstraintType::NL: {
166166
auto base = m_linear_con_evaluator.n_constraints + m_quadratic_con_evaluator.n_constraints;
167167
auto internal_nl_index = nl_constraint_map_ext2int[constraint.index];
168168
return base + internal_nl_index;
@@ -380,7 +380,7 @@ ConstraintIndex IpoptModel::add_single_nl_constraint(size_t graph_index,
380380

381381
m_is_dirty = true;
382382

383-
return ConstraintIndex(ConstraintType::IPOPT_NL, constraint_index);
383+
return ConstraintIndex(ConstraintType::NL, constraint_index);
384384
}
385385

386386
static bool eval_f(ipindex n, ipnumber *x, bool new_x, ipnumber *obj_value, UserDataPtr user_data)

lib/knitro_model.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ ConstraintIndex KNITROModel::add_single_nl_constraint(ExpressionGraph &graph,
389389
m_pending_outputs[&graph].cons.push_back(constraint);
390390
m_need_to_add_callbacks = true;
391391
};
392-
return _add_constraint_impl(ConstraintType::KNITRO_NL, interval, name, &n_nlcons, setter);
392+
return _add_constraint_impl(ConstraintType::NL, interval, name, &n_nlcons, setter);
393393
}
394394

395395
ConstraintIndex KNITROModel::add_single_nl_constraint_sense_rhs(ExpressionGraph &graph,
@@ -526,7 +526,7 @@ void KNITROModel::delete_constraint(const ConstraintIndex &constraint)
526526
case ConstraintType::SecondOrderCone:
527527
n_soccons--;
528528
break;
529-
case ConstraintType::KNITRO_NL:
529+
case ConstraintType::NL:
530530
n_nlcons--;
531531
break;
532532
default:

lib/xpress_model.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,7 +1241,7 @@ ConstraintIndex Model::add_single_nl_constraint(ExpressionGraph &graph,
12411241

12421242
int rowidx = get_raw_attribute_int_by_id(POI_XPRS_ROWS);
12431243
ConstraintIndex constraint = add_linear_constraint(ScalarAffineFunction{}, interval, name);
1244-
constraint.type = ConstraintType::Xpress_Nlp;
1244+
constraint.type = ConstraintType::NL;
12451245

12461246
auto [types, values] = _decode_graph_postfix_order(graph, result);
12471247

@@ -1271,7 +1271,7 @@ void Model::delete_constraint(ConstraintIndex constraint)
12711271
case ConstraintType::Quadratic:
12721272
case ConstraintType::SecondOrderCone:
12731273
case ConstraintType::ExponentialCone:
1274-
case ConstraintType::Xpress_Nlp:
1274+
case ConstraintType::NL:
12751275
--m_quad_nl_constr_num;
12761276
[[fallthrough]];
12771277
case ConstraintType::Linear:
@@ -1297,7 +1297,7 @@ bool Model::is_constraint_active(ConstraintIndex constraint)
12971297
case ConstraintType::Quadratic:
12981298
case ConstraintType::SecondOrderCone:
12991299
case ConstraintType::ExponentialCone:
1300-
case ConstraintType::Xpress_Nlp:
1300+
case ConstraintType::NL:
13011301
return m_constraint_index.has_index(constraint.index);
13021302
case ConstraintType::SOS:
13031303
return m_sos_constraint_index.has_index(constraint.index);
@@ -1478,7 +1478,7 @@ int Model::_constraint_index(ConstraintIndex constraint)
14781478
case ConstraintType::Quadratic:
14791479
case ConstraintType::SecondOrderCone:
14801480
case ConstraintType::ExponentialCone:
1481-
case ConstraintType::Xpress_Nlp:
1481+
case ConstraintType::NL:
14821482
return m_constraint_index.get_index(constraint.index);
14831483
case ConstraintType::SOS:
14841484
return m_sos_constraint_index.get_index(constraint.index);

0 commit comments

Comments
 (0)