diff --git a/.github/julia/MINLPTests/LP.txt b/.github/julia/MINLPTests/LP.txt new file mode 100644 index 000000000..de2adac00 --- /dev/null +++ b/.github/julia/MINLPTests/LP.txt @@ -0,0 +1,2 @@ +nlp_cvx_expr_001_010 +nlp_cvx_expr_002_010 diff --git a/.github/julia/MINLPTests/NLP.txt b/.github/julia/MINLPTests/NLP.txt new file mode 100644 index 000000000..ec9e7320b --- /dev/null +++ b/.github/julia/MINLPTests/NLP.txt @@ -0,0 +1,66 @@ +nlp_cvx_expr_001_011 +nlp_cvx_expr_002_011 +nlp_cvx_expr_101_010 +nlp_cvx_expr_101_011 +nlp_cvx_expr_101_012 +nlp_cvx_expr_102_010 +nlp_cvx_expr_102_011 +nlp_cvx_expr_102_012 +nlp_cvx_expr_102_013 +nlp_cvx_expr_102_014 +nlp_cvx_expr_103_010 +nlp_cvx_expr_103_011 +nlp_cvx_expr_103_012 +nlp_cvx_expr_103_013 +nlp_cvx_expr_103_014 +nlp_cvx_expr_104_010 +nlp_cvx_expr_105_010 +nlp_cvx_expr_105_011 +nlp_cvx_expr_105_012 +nlp_cvx_expr_105_013 +nlp_cvx_expr_106_010 +nlp_cvx_expr_106_011 +nlp_cvx_expr_107_010 +nlp_cvx_expr_107_011 +nlp_cvx_expr_107_012 +nlp_cvx_expr_108_010 +nlp_cvx_expr_108_011 +nlp_cvx_expr_108_012 +nlp_cvx_expr_108_013 +nlp_cvx_expr_109_010 +nlp_cvx_expr_109_011 +nlp_cvx_expr_109_012 +nlp_cvx_expr_110_010 +nlp_cvx_expr_110_011 +nlp_cvx_expr_110_012 +nlp_cvx_expr_201_010 +nlp_cvx_expr_201_011 +nlp_cvx_expr_202_010 +nlp_cvx_expr_202_011 +nlp_cvx_expr_202_012 +nlp_cvx_expr_202_013 +nlp_cvx_expr_202_014 +nlp_cvx_expr_203_010 +nlp_cvx_expr_204_010 +nlp_cvx_expr_205_010 +nlp_cvx_expr_206_010 +nlp_cvx_expr_210_010 +nlp_cvx_expr_210_011 +nlp_cvx_expr_210_012 +nlp_cvx_expr_501_010 +nlp_cvx_expr_501_011 +nlp_expr_001_010 +nlp_expr_002_010 +nlp_expr_003_010 +nlp_expr_003_011 +nlp_expr_003_012 +nlp_expr_003_013 +nlp_expr_003_014 +nlp_expr_003_016 +nlp_expr_004_010 +nlp_expr_004_011 +nlp_expr_005_010 +nlp_expr_007_010 +nlp_expr_008_010 +nlp_expr_009_010 +nlp_expr_009_011 diff --git a/.github/julia/MINLPTests/bound-constrained.txt b/.github/julia/MINLPTests/bound-constrained.txt new file mode 100644 index 000000000..f150c3782 --- /dev/null +++ b/.github/julia/MINLPTests/bound-constrained.txt @@ -0,0 +1 @@ +nlp_expr_001_010 diff --git a/.github/julia/MINLPTests/equality-constrained.txt b/.github/julia/MINLPTests/equality-constrained.txt new file mode 100644 index 000000000..6ac49fe8f --- /dev/null +++ b/.github/julia/MINLPTests/equality-constrained.txt @@ -0,0 +1,2 @@ +nlp_expr_002_010 +nlp_expr_007_010 diff --git a/.github/julia/MINLPTests/general.txt b/.github/julia/MINLPTests/general.txt new file mode 100644 index 000000000..49b966dde --- /dev/null +++ b/.github/julia/MINLPTests/general.txt @@ -0,0 +1,63 @@ +nlp_cvx_expr_001_010 +nlp_cvx_expr_001_011 +nlp_cvx_expr_002_010 +nlp_cvx_expr_002_011 +nlp_cvx_expr_101_010 +nlp_cvx_expr_101_011 +nlp_cvx_expr_101_012 +nlp_cvx_expr_102_010 +nlp_cvx_expr_102_011 +nlp_cvx_expr_102_012 +nlp_cvx_expr_102_013 +nlp_cvx_expr_102_014 +nlp_cvx_expr_103_010 +nlp_cvx_expr_103_011 +nlp_cvx_expr_103_012 +nlp_cvx_expr_103_013 +nlp_cvx_expr_103_014 +nlp_cvx_expr_104_010 +nlp_cvx_expr_105_010 +nlp_cvx_expr_105_011 +nlp_cvx_expr_105_012 +nlp_cvx_expr_105_013 +nlp_cvx_expr_106_010 +nlp_cvx_expr_106_011 +nlp_cvx_expr_107_010 +nlp_cvx_expr_107_011 +nlp_cvx_expr_107_012 +nlp_cvx_expr_108_010 +nlp_cvx_expr_108_011 +nlp_cvx_expr_108_012 +nlp_cvx_expr_108_013 +nlp_cvx_expr_109_010 +nlp_cvx_expr_109_011 +nlp_cvx_expr_109_012 +nlp_cvx_expr_110_010 +nlp_cvx_expr_110_011 +nlp_cvx_expr_110_012 +nlp_cvx_expr_201_010 +nlp_cvx_expr_201_011 +nlp_cvx_expr_202_010 +nlp_cvx_expr_202_011 +nlp_cvx_expr_202_012 +nlp_cvx_expr_202_013 +nlp_cvx_expr_202_014 +nlp_cvx_expr_203_010 +nlp_cvx_expr_204_010 +nlp_cvx_expr_205_010 +nlp_cvx_expr_206_010 +nlp_cvx_expr_210_010 +nlp_cvx_expr_210_011 +nlp_cvx_expr_210_012 +nlp_cvx_expr_501_010 +nlp_cvx_expr_501_011 +nlp_expr_003_010 +nlp_expr_003_011 +nlp_expr_003_012 +nlp_expr_003_013 +nlp_expr_003_014 +nlp_expr_003_016 +nlp_expr_004_010 +nlp_expr_004_011 +nlp_expr_005_010 +nlp_expr_008_010 diff --git a/.github/julia/MINLPTests/unconstrained.txt b/.github/julia/MINLPTests/unconstrained.txt new file mode 100644 index 000000000..96f233767 --- /dev/null +++ b/.github/julia/MINLPTests/unconstrained.txt @@ -0,0 +1,2 @@ +nlp_expr_009_010 +nlp_expr_009_011 diff --git a/.github/julia/MOI/LP.txt b/.github/julia/MOI/LP.txt new file mode 100644 index 000000000..85b28b7a7 --- /dev/null +++ b/.github/julia/MOI/LP.txt @@ -0,0 +1,175 @@ +test_DualObjectiveValue_Max_ScalarAffine_LessThan +test_DualObjectiveValue_Max_VariableIndex_LessThan +test_DualObjectiveValue_Min_ScalarAffine_GreaterThan +test_DualObjectiveValue_Min_VariableIndex_GreaterThan +test_add_constrained_variables_vector +test_basic_ScalarAffineFunction_EqualTo +test_basic_ScalarAffineFunction_GreaterThan +test_basic_ScalarAffineFunction_Interval +test_basic_ScalarAffineFunction_LessThan +test_basic_VariableIndex_EqualTo +test_basic_VariableIndex_GreaterThan +test_basic_VariableIndex_Interval +test_basic_VariableIndex_LessThan +test_basic_VectorAffineFunction_AllDifferent +test_basic_VectorAffineFunction_BinPacking +test_basic_VectorAffineFunction_Circuit +test_basic_VectorAffineFunction_Complements +test_basic_VectorAffineFunction_CountAtLeast +test_basic_VectorAffineFunction_CountBelongs +test_basic_VectorAffineFunction_CountDistinct +test_basic_VectorAffineFunction_CountGreaterThan +test_basic_VectorAffineFunction_Cumulative +test_basic_VectorAffineFunction_HyperRectangle +test_basic_VectorAffineFunction_Nonnegatives +test_basic_VectorAffineFunction_Nonpositives +test_basic_VectorAffineFunction_NormInfinityCone +test_basic_VectorAffineFunction_NormOneCone +test_basic_VectorAffineFunction_Path +test_basic_VectorAffineFunction_Table +test_basic_VectorAffineFunction_Zeros +test_basic_VectorOfVariables_AllDifferent +test_basic_VectorOfVariables_BinPacking +test_basic_VectorOfVariables_Circuit +test_basic_VectorOfVariables_Complements +test_basic_VectorOfVariables_CountAtLeast +test_basic_VectorOfVariables_CountBelongs +test_basic_VectorOfVariables_CountDistinct +test_basic_VectorOfVariables_CountGreaterThan +test_basic_VectorOfVariables_Cumulative +test_basic_VectorOfVariables_HyperRectangle +test_basic_VectorOfVariables_Nonnegatives +test_basic_VectorOfVariables_Nonpositives +test_basic_VectorOfVariables_NormInfinityCone +test_basic_VectorOfVariables_NormOneCone +test_basic_VectorOfVariables_Path +test_basic_VectorOfVariables_Table +test_basic_VectorOfVariables_Zeros +test_conic_NormInfinityCone_3 +test_conic_NormInfinityCone_INFEASIBLE +test_conic_NormInfinityCone_VectorAffineFunction +test_conic_NormInfinityCone_VectorOfVariables +test_conic_NormOneCone +test_conic_NormOneCone_INFEASIBLE +test_conic_NormOneCone_VectorAffineFunction +test_conic_NormOneCone_VectorOfVariables +test_conic_linear_INFEASIBLE +test_conic_linear_INFEASIBLE_2 +test_conic_linear_VectorAffineFunction +test_conic_linear_VectorAffineFunction_2 +test_conic_linear_VectorOfVariables +test_conic_linear_VectorOfVariables_2 +test_constraint_ConstraintDualStart +test_constraint_ConstraintPrimalStart +test_constraint_ScalarAffineFunction_EqualTo +test_constraint_ScalarAffineFunction_GreaterThan +test_constraint_ScalarAffineFunction_Interval +test_constraint_ScalarAffineFunction_LessThan +test_constraint_ScalarAffineFunction_duplicate +test_constraint_VectorAffineFunction_duplicate +test_constraint_get_ConstraintIndex +test_linear_DUAL_INFEASIBLE +test_linear_DUAL_INFEASIBLE_2 +test_linear_FEASIBILITY_SENSE +test_linear_HyperRectangle_VectorAffineFunction +test_linear_HyperRectangle_VectorOfVariables +test_linear_INFEASIBLE +test_linear_INFEASIBLE_2 +test_linear_Interval_inactive +test_linear_LessThan_and_GreaterThan +test_linear_VariablePrimalStart_partial +test_linear_VectorAffineFunction +test_linear_VectorAffineFunction_empty_row +test_linear_add_constraints +test_linear_complex_Zeros +test_linear_complex_Zeros_duplicate +test_linear_inactive_bounds +test_linear_integration +test_linear_integration_2 +test_linear_integration_Interval +test_linear_integration_delete_variables +test_linear_integration_modification +test_linear_modify_GreaterThan_and_LessThan_constraints +test_linear_open_intervals +test_linear_transform +test_linear_variable_open_intervals +test_model_ListOfConstraintAttributesSet +test_model_ListOfConstraintsWithAttributeSet +test_model_LowerBoundAlreadySet +test_model_ModelFilter_AbstractConstraintAttribute +test_model_ModelFilter_ListOfConstraintIndices +test_model_ModelFilter_ListOfConstraintTypesPresent +test_model_Name_VariableName_ConstraintName +test_model_ScalarAffineFunction_ConstraintName +test_model_ScalarFunctionConstantNotZero +test_model_UpperBoundAlreadySet +test_model_VariableIndex_ConstraintName +test_model_add_constrained_variable_tuple +test_model_delete +test_model_duplicate_ScalarAffineFunction_ConstraintName +test_model_ordered_indices +test_modification_affine_deletion_edge_cases +test_modification_coef_scalar_objective +test_modification_coef_scalaraffine_lessthan +test_modification_const_scalar_objective +test_modification_const_vectoraffine_nonpos +test_modification_const_vectoraffine_zeros +test_modification_delete_variable_with_single_variable_obj +test_modification_delete_variables_in_a_batch +test_modification_func_scalaraffine_lessthan +test_modification_func_vectoraffine_nonneg +test_modification_incorrect +test_modification_incorrect_VariableIndex +test_modification_mathoptinterface_issue_2452 +test_modification_multirow_vectoraffine_nonpos +test_modification_set_function_single_variable +test_modification_set_scalaraffine_lessthan +test_modification_set_singlevariable_lessthan +test_modification_transform_singlevariable_lessthan +test_multi_objective_solve_and_objective_value +test_multiobjective_vector_affine_function +test_multiobjective_vector_affine_function_delete +test_multiobjective_vector_affine_function_delete_vector +test_multiobjective_vector_affine_function_modify +test_multiobjective_vector_of_variables +test_multiobjective_vector_of_variables_delete +test_multiobjective_vector_of_variables_delete_all +test_multiobjective_vector_of_variables_delete_vector +test_objective_FEASIBILITY_SENSE_clears_objective +test_objective_ObjectiveFunction_VariableIndex +test_objective_ObjectiveFunction_blank +test_objective_ObjectiveFunction_constant +test_objective_ObjectiveFunction_duplicate_terms +test_objective_ScalarAffineFunction_in_ListOfModelAttributesSet +test_objective_VariableIndex_in_ListOfModelAttributesSet +test_objective_set_via_modify +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_EqualTo_lower +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_EqualTo_upper +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_GreaterThan +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_Interval_lower +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_Interval_upper +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_LessThan +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_VariableIndex_LessThan +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_VariableIndex_LessThan_max +test_solve_ObjectiveBound_MAX_SENSE_IP +test_solve_ObjectiveBound_MAX_SENSE_LP +test_solve_ObjectiveBound_MIN_SENSE_IP +test_solve_ObjectiveBound_MIN_SENSE_LP +test_solve_TerminationStatus_DUAL_INFEASIBLE +test_solve_VariableIndex_ConstraintDual_MAX_SENSE +test_solve_VariableIndex_ConstraintDual_MIN_SENSE +test_solve_conflict_EqualTo +test_solve_conflict_NOT_IN_CONFLICT +test_solve_conflict_affine_affine +test_solve_conflict_bound_bound +test_solve_conflict_feasible +test_solve_conflict_invalid_interval +test_solve_conflict_two_affine +test_solve_conflict_zeroone +test_solve_conflict_zeroone_2 +test_solve_optimize_twice +test_solve_result_index +test_variable_delete_Nonnegatives +test_variable_delete_Nonnegatives_row +test_variable_solve_with_lowerbound +test_variable_solve_with_upperbound diff --git a/.github/julia/MOI/NLP.txt b/.github/julia/MOI/NLP.txt new file mode 100644 index 000000000..ae2218aea --- /dev/null +++ b/.github/julia/MOI/NLP.txt @@ -0,0 +1,225 @@ +test_HermitianPSDCone_basic +test_HermitianPSDCone_min_t +test_NormNuclearCone_VectorAffineFunction_with_transform +test_NormNuclearCone_VectorAffineFunction_without_transform +test_NormNuclearCone_VectorOfVariables_with_transform +test_NormNuclearCone_VectorOfVariables_without_transform +test_NormSpectralCone_VectorAffineFunction_with_transform +test_NormSpectralCone_VectorAffineFunction_without_transform +test_NormSpectralCone_VectorOfVariables_with_transform +test_NormSpectralCone_VectorOfVariables_without_transform +test_VectorNonlinearOracle_LagrangeMultipliers_MAX_SENSE +test_VectorNonlinearOracle_LagrangeMultipliers_MIN_SENSE +test_add_constrained_PositiveSemidefiniteConeTriangle +test_add_constrained_PositiveSemidefiniteConeTriangle_VariableName +test_add_constrained_PositiveSemidefiniteConeTriangle_VariablePrimalStart +test_basic_ScalarNonlinearFunction_EqualTo +test_basic_ScalarNonlinearFunction_GreaterThan +test_basic_ScalarNonlinearFunction_Interval +test_basic_ScalarNonlinearFunction_LessThan +test_basic_ScalarQuadraticFunction_EqualTo +test_basic_ScalarQuadraticFunction_GreaterThan +test_basic_ScalarQuadraticFunction_Interval +test_basic_ScalarQuadraticFunction_LessThan +test_basic_VectorAffineFunction_DualExponentialCone +test_basic_VectorAffineFunction_DualPowerCone +test_basic_VectorAffineFunction_ExponentialCone +test_basic_VectorAffineFunction_GeometricMeanCone +test_basic_VectorAffineFunction_HermitianPositiveSemidefiniteConeTriangle +test_basic_VectorAffineFunction_LogDetConeSquare +test_basic_VectorAffineFunction_LogDetConeTriangle +test_basic_VectorAffineFunction_NormCone +test_basic_VectorAffineFunction_NormNuclearCone +test_basic_VectorAffineFunction_NormSpectralCone +test_basic_VectorAffineFunction_PositiveSemidefiniteConeSquare +test_basic_VectorAffineFunction_PositiveSemidefiniteConeTriangle +test_basic_VectorAffineFunction_PowerCone +test_basic_VectorAffineFunction_RelativeEntropyCone +test_basic_VectorAffineFunction_RootDetConeSquare +test_basic_VectorAffineFunction_RootDetConeTriangle +test_basic_VectorAffineFunction_RotatedSecondOrderCone +test_basic_VectorAffineFunction_ScaledPositiveSemidefiniteConeTriangle +test_basic_VectorAffineFunction_SecondOrderCone +test_basic_VectorAffineFunction_VectorNonlinearOracle +test_basic_VectorOfVariables_DualExponentialCone +test_basic_VectorOfVariables_DualPowerCone +test_basic_VectorOfVariables_ExponentialCone +test_basic_VectorOfVariables_GeometricMeanCone +test_basic_VectorOfVariables_HermitianPositiveSemidefiniteConeTriangle +test_basic_VectorOfVariables_LogDetConeSquare +test_basic_VectorOfVariables_LogDetConeTriangle +test_basic_VectorOfVariables_NormCone +test_basic_VectorOfVariables_NormNuclearCone +test_basic_VectorOfVariables_NormSpectralCone +test_basic_VectorOfVariables_PositiveSemidefiniteConeSquare +test_basic_VectorOfVariables_PositiveSemidefiniteConeTriangle +test_basic_VectorOfVariables_PowerCone +test_basic_VectorOfVariables_RelativeEntropyCone +test_basic_VectorOfVariables_RootDetConeSquare +test_basic_VectorOfVariables_RootDetConeTriangle +test_basic_VectorOfVariables_RotatedSecondOrderCone +test_basic_VectorOfVariables_ScaledPositiveSemidefiniteConeTriangle +test_basic_VectorOfVariables_SecondOrderCone +test_basic_VectorOfVariables_VectorNonlinearOracle +test_basic_VectorQuadraticFunction_AllDifferent +test_basic_VectorQuadraticFunction_BinPacking +test_basic_VectorQuadraticFunction_Circuit +test_basic_VectorQuadraticFunction_Complements +test_basic_VectorQuadraticFunction_CountAtLeast +test_basic_VectorQuadraticFunction_CountBelongs +test_basic_VectorQuadraticFunction_CountDistinct +test_basic_VectorQuadraticFunction_CountGreaterThan +test_basic_VectorQuadraticFunction_Cumulative +test_basic_VectorQuadraticFunction_DualExponentialCone +test_basic_VectorQuadraticFunction_DualPowerCone +test_basic_VectorQuadraticFunction_ExponentialCone +test_basic_VectorQuadraticFunction_GeometricMeanCone +test_basic_VectorQuadraticFunction_HermitianPositiveSemidefiniteConeTriangle +test_basic_VectorQuadraticFunction_HyperRectangle +test_basic_VectorQuadraticFunction_LogDetConeSquare +test_basic_VectorQuadraticFunction_LogDetConeTriangle +test_basic_VectorQuadraticFunction_Nonnegatives +test_basic_VectorQuadraticFunction_Nonpositives +test_basic_VectorQuadraticFunction_NormCone +test_basic_VectorQuadraticFunction_NormInfinityCone +test_basic_VectorQuadraticFunction_NormNuclearCone +test_basic_VectorQuadraticFunction_NormOneCone +test_basic_VectorQuadraticFunction_NormSpectralCone +test_basic_VectorQuadraticFunction_Path +test_basic_VectorQuadraticFunction_PositiveSemidefiniteConeSquare +test_basic_VectorQuadraticFunction_PositiveSemidefiniteConeTriangle +test_basic_VectorQuadraticFunction_PowerCone +test_basic_VectorQuadraticFunction_RelativeEntropyCone +test_basic_VectorQuadraticFunction_RootDetConeSquare +test_basic_VectorQuadraticFunction_RootDetConeTriangle +test_basic_VectorQuadraticFunction_RotatedSecondOrderCone +test_basic_VectorQuadraticFunction_ScaledPositiveSemidefiniteConeTriangle +test_basic_VectorQuadraticFunction_SecondOrderCone +test_basic_VectorQuadraticFunction_Table +test_basic_VectorQuadraticFunction_VectorNonlinearOracle +test_basic_VectorQuadraticFunction_Zeros +test_conic_DualExponentialCone_VectorAffineFunction +test_conic_DualExponentialCone_VectorOfVariables +test_conic_DualPowerCone_VectorAffineFunction +test_conic_DualPowerCone_VectorOfVariables +test_conic_Exponential_VectorAffineFunction +test_conic_Exponential_VectorOfVariables +test_conic_Exponential_hard +test_conic_Exponential_hard_2 +test_conic_GeometricMeanCone_VectorAffineFunction +test_conic_GeometricMeanCone_VectorAffineFunction_2 +test_conic_GeometricMeanCone_VectorAffineFunction_3 +test_conic_GeometricMeanCone_VectorOfVariables +test_conic_GeometricMeanCone_VectorOfVariables_2 +test_conic_GeometricMeanCone_VectorOfVariables_3 +test_conic_HermitianPositiveSemidefiniteConeTriangle_1 +test_conic_HermitianPositiveSemidefiniteConeTriangle_2 +test_conic_LogDetConeSquare +test_conic_LogDetConeSquare_VectorAffineFunction +test_conic_LogDetConeSquare_VectorOfVariables +test_conic_LogDetConeTriangle +test_conic_LogDetConeTriangle_VectorAffineFunction +test_conic_LogDetConeTriangle_VectorOfVariables +test_conic_NormCone +test_conic_NormNuclearCone +test_conic_NormNuclearCone_2 +test_conic_NormSpectralCone +test_conic_NormSpectralCone_2 +test_conic_PositiveSemidefiniteConeSquare_3 +test_conic_PositiveSemidefiniteConeSquare_VectorAffineFunction +test_conic_PositiveSemidefiniteConeSquare_VectorAffineFunction_2 +test_conic_PositiveSemidefiniteConeSquare_VectorOfVariables +test_conic_PositiveSemidefiniteConeSquare_VectorOfVariables_2 +test_conic_PositiveSemidefiniteConeTriangle +test_conic_PositiveSemidefiniteConeTriangle_3 +test_conic_PositiveSemidefiniteConeTriangle_4 +test_conic_PositiveSemidefiniteConeTriangle_VectorAffineFunction +test_conic_PositiveSemidefiniteConeTriangle_VectorAffineFunction_2 +test_conic_PositiveSemidefiniteConeTriangle_VectorOfVariables +test_conic_PositiveSemidefiniteConeTriangle_VectorOfVariables_2 +test_conic_PowerCone_VectorAffineFunction +test_conic_PowerCone_VectorOfVariables +test_conic_RelativeEntropyCone +test_conic_RootDetConeSquare +test_conic_RootDetConeSquare_VectorAffineFunction +test_conic_RootDetConeSquare_VectorOfVariables +test_conic_RootDetConeTriangle +test_conic_RootDetConeTriangle_VectorAffineFunction +test_conic_RootDetConeTriangle_VectorOfVariables +test_conic_RotatedSecondOrderCone_INFEASIBLE +test_conic_RotatedSecondOrderCone_INFEASIBLE_2 +test_conic_RotatedSecondOrderCone_VectorAffineFunction +test_conic_RotatedSecondOrderCone_VectorOfVariables +test_conic_RotatedSecondOrderCone_out_of_order +test_conic_ScaledPositiveSemidefiniteConeTriangle_VectorAffineFunction +test_conic_SecondOrderCone_INFEASIBLE +test_conic_SecondOrderCone_Nonnegatives +test_conic_SecondOrderCone_Nonpositives +test_conic_SecondOrderCone_VectorAffineFunction +test_conic_SecondOrderCone_VectorOfVariables +test_conic_SecondOrderCone_negative_initial_bound +test_conic_SecondOrderCone_negative_post_bound +test_conic_SecondOrderCone_negative_post_bound_2 +test_conic_SecondOrderCone_negative_post_bound_3 +test_conic_SecondOrderCone_no_initial_bound +test_conic_SecondOrderCone_nonnegative_initial_bound +test_conic_SecondOrderCone_nonnegative_post_bound +test_conic_SecondOrderCone_out_of_order +test_conic_empty_matrix +test_constraint_PrimalStart_DualStart_SecondOrderCone +test_constraint_qcp_duplicate_diagonal +test_constraint_qcp_duplicate_off_diagonal +test_model_is_valid +test_modification_constraint_scalarquadraticcoefficientchange +test_modification_objective_scalarquadraticcoefficientchange +test_multiobjective_vector_nonlinear +test_multiobjective_vector_nonlinear_delete +test_multiobjective_vector_nonlinear_delete_vector +test_multiobjective_vector_nonlinear_modify +test_multiobjective_vector_quadratic_function +test_multiobjective_vector_quadratic_function_delete +test_multiobjective_vector_quadratic_function_delete_vector +test_multiobjective_vector_quadratic_function_modify +test_nonlinear_constraint_log +test_nonlinear_constraint_scalar_affine_function +test_nonlinear_constraint_uminus +test_nonlinear_duals +test_nonlinear_expression_hs071 +test_nonlinear_expression_hs071_epigraph +test_nonlinear_expression_hs109 +test_nonlinear_expression_hs110 +test_nonlinear_expression_multivariate_function +test_nonlinear_expression_overrides_objective +test_nonlinear_expression_quartic +test_nonlinear_expression_univariate_function +test_nonlinear_hs071 +test_nonlinear_hs071_NLPBlockDual +test_nonlinear_hs071_hessian_vector_product +test_nonlinear_hs071_no_hessian +test_nonlinear_objective +test_nonlinear_objective_and_moi_objective_test +test_nonlinear_quadratic_1 +test_nonlinear_quadratic_2 +test_nonlinear_quadratic_3 +test_nonlinear_quadratic_4 +test_nonlinear_vector_complements +test_nonlinear_with_scalar_quadratic_function_with_off_diag +test_nonlinear_without_objective +test_objective_ScalarQuadraticFunction_in_ListOfModelAttributesSet +test_objective_get_ObjectiveFunction_ScalarAffineFunction +test_objective_qp_ObjectiveFunction_edge_cases +test_objective_qp_ObjectiveFunction_zero_ofdiag +test_quadratic_SecondOrderCone_basic +test_quadratic_constraint_GreaterThan +test_quadratic_constraint_LessThan +test_quadratic_constraint_basic +test_quadratic_constraint_integration +test_quadratic_constraint_minimize +test_quadratic_duplicate_terms +test_quadratic_integration +test_quadratic_nonconvex_constraint_basic +test_quadratic_nonconvex_constraint_integration +test_quadratic_nonhomogeneous +test_variable_delete_SecondOrderCone +test_vector_nonlinear_oracle +test_vector_nonlinear_oracle_no_hessian diff --git a/.github/julia/MOI/_classification_table.tsv b/.github/julia/MOI/_classification_table.tsv new file mode 100644 index 000000000..f8437aa62 --- /dev/null +++ b/.github/julia/MOI/_classification_table.tsv @@ -0,0 +1,401 @@ +problem_type constraint_class instance source_file +LP general test_DualObjectiveValue_Max_ScalarAffine_LessThan test_solve.jl +LP bound-constrained test_DualObjectiveValue_Max_VariableIndex_LessThan test_solve.jl +LP general test_DualObjectiveValue_Min_ScalarAffine_GreaterThan test_solve.jl +LP bound-constrained test_DualObjectiveValue_Min_VariableIndex_GreaterThan test_solve.jl +NLP general test_HermitianPSDCone_basic test_solve.jl +NLP general test_HermitianPSDCone_min_t test_solve.jl +NLP general test_NormNuclearCone_VectorAffineFunction_with_transform test_solve.jl +NLP general test_NormNuclearCone_VectorAffineFunction_without_transform test_solve.jl +NLP general test_NormNuclearCone_VectorOfVariables_with_transform test_solve.jl +NLP general test_NormNuclearCone_VectorOfVariables_without_transform test_solve.jl +NLP general test_NormSpectralCone_VectorAffineFunction_with_transform test_solve.jl +NLP general test_NormSpectralCone_VectorAffineFunction_without_transform test_solve.jl +NLP general test_NormSpectralCone_VectorOfVariables_with_transform test_solve.jl +NLP general test_NormSpectralCone_VectorOfVariables_without_transform test_solve.jl +NLP general test_VectorNonlinearOracle_LagrangeMultipliers_MAX_SENSE test_nonlinear.jl +NLP general test_VectorNonlinearOracle_LagrangeMultipliers_MIN_SENSE test_nonlinear.jl +NLP general test_add_constrained_PositiveSemidefiniteConeTriangle test_conic.jl +NLP general test_add_constrained_PositiveSemidefiniteConeTriangle_VariableName test_conic.jl +NLP general test_add_constrained_PositiveSemidefiniteConeTriangle_VariablePrimalStart test_conic.jl +LP bound-constrained test_add_constrained_variables_vector test_variable.jl +LP equality test_basic_ScalarAffineFunction_EqualTo (auto-generated test_basic_*) +LP general test_basic_ScalarAffineFunction_GreaterThan (auto-generated test_basic_*) +LP general test_basic_ScalarAffineFunction_Interval (auto-generated test_basic_*) +LP general test_basic_ScalarAffineFunction_LessThan (auto-generated test_basic_*) +NLP equality test_basic_ScalarNonlinearFunction_EqualTo (auto-generated test_basic_*) +NLP general test_basic_ScalarNonlinearFunction_GreaterThan (auto-generated test_basic_*) +NLP general test_basic_ScalarNonlinearFunction_Interval (auto-generated test_basic_*) +NLP general test_basic_ScalarNonlinearFunction_LessThan (auto-generated test_basic_*) +NLP equality test_basic_ScalarQuadraticFunction_EqualTo (auto-generated test_basic_*) +NLP general test_basic_ScalarQuadraticFunction_GreaterThan (auto-generated test_basic_*) +NLP general test_basic_ScalarQuadraticFunction_Interval (auto-generated test_basic_*) +NLP general test_basic_ScalarQuadraticFunction_LessThan (auto-generated test_basic_*) +LP bound-constrained test_basic_VariableIndex_EqualTo (auto-generated test_basic_*) +LP bound-constrained test_basic_VariableIndex_GreaterThan (auto-generated test_basic_*) +LP bound-constrained test_basic_VariableIndex_Interval (auto-generated test_basic_*) +LP bound-constrained test_basic_VariableIndex_LessThan (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_AllDifferent (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_BinPacking (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_Circuit (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_Complements (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_CountAtLeast (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_CountBelongs (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_CountDistinct (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_CountGreaterThan (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_Cumulative (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_DualExponentialCone (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_DualPowerCone (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_ExponentialCone (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_GeometricMeanCone (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_HermitianPositiveSemidefiniteConeTriangle (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_HyperRectangle (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_LogDetConeSquare (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_LogDetConeTriangle (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_Nonnegatives (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_Nonpositives (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_NormCone (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_NormInfinityCone (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_NormNuclearCone (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_NormOneCone (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_NormSpectralCone (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_Path (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_PositiveSemidefiniteConeSquare (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_PositiveSemidefiniteConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_PowerCone (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_RelativeEntropyCone (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_RootDetConeSquare (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_RootDetConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_RotatedSecondOrderCone (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_ScaledPositiveSemidefiniteConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_SecondOrderCone (auto-generated test_basic_*) +LP general test_basic_VectorAffineFunction_Table (auto-generated test_basic_*) +NLP general test_basic_VectorAffineFunction_VectorNonlinearOracle (auto-generated test_basic_*) +LP equality test_basic_VectorAffineFunction_Zeros (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_AllDifferent (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_BinPacking (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_Circuit (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_Complements (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_CountAtLeast (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_CountBelongs (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_CountDistinct (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_CountGreaterThan (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_Cumulative (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_DualExponentialCone (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_DualPowerCone (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_ExponentialCone (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_GeometricMeanCone (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_HermitianPositiveSemidefiniteConeTriangle (auto-generated test_basic_*) +LP bound-constrained test_basic_VectorOfVariables_HyperRectangle (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_LogDetConeSquare (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_LogDetConeTriangle (auto-generated test_basic_*) +LP bound-constrained test_basic_VectorOfVariables_Nonnegatives (auto-generated test_basic_*) +LP bound-constrained test_basic_VectorOfVariables_Nonpositives (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_NormCone (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_NormInfinityCone (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_NormNuclearCone (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_NormOneCone (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_NormSpectralCone (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_Path (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_PositiveSemidefiniteConeSquare (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_PositiveSemidefiniteConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_PowerCone (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_RelativeEntropyCone (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_RootDetConeSquare (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_RootDetConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_RotatedSecondOrderCone (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_ScaledPositiveSemidefiniteConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_SecondOrderCone (auto-generated test_basic_*) +LP general test_basic_VectorOfVariables_Table (auto-generated test_basic_*) +NLP general test_basic_VectorOfVariables_VectorNonlinearOracle (auto-generated test_basic_*) +LP bound-constrained test_basic_VectorOfVariables_Zeros (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_AllDifferent (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_BinPacking (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_Circuit (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_Complements (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_CountAtLeast (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_CountBelongs (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_CountDistinct (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_CountGreaterThan (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_Cumulative (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_DualExponentialCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_DualPowerCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_ExponentialCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_GeometricMeanCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_HermitianPositiveSemidefiniteConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_HyperRectangle (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_LogDetConeSquare (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_LogDetConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_Nonnegatives (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_Nonpositives (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_NormCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_NormInfinityCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_NormNuclearCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_NormOneCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_NormSpectralCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_Path (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_PositiveSemidefiniteConeSquare (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_PositiveSemidefiniteConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_PowerCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_RelativeEntropyCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_RootDetConeSquare (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_RootDetConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_RotatedSecondOrderCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_ScaledPositiveSemidefiniteConeTriangle (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_SecondOrderCone (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_Table (auto-generated test_basic_*) +NLP general test_basic_VectorQuadraticFunction_VectorNonlinearOracle (auto-generated test_basic_*) +NLP equality test_basic_VectorQuadraticFunction_Zeros (auto-generated test_basic_*) +NLP general test_conic_DualExponentialCone_VectorAffineFunction test_conic.jl +NLP general test_conic_DualExponentialCone_VectorOfVariables test_conic.jl +NLP general test_conic_DualPowerCone_VectorAffineFunction test_conic.jl +NLP general test_conic_DualPowerCone_VectorOfVariables test_conic.jl +NLP general test_conic_Exponential_VectorAffineFunction test_conic.jl +NLP general test_conic_Exponential_VectorOfVariables test_conic.jl +NLP general test_conic_Exponential_hard test_conic.jl +NLP general test_conic_Exponential_hard_2 test_conic.jl +NLP general test_conic_GeometricMeanCone_VectorAffineFunction test_conic.jl +NLP general test_conic_GeometricMeanCone_VectorAffineFunction_2 test_conic.jl +NLP general test_conic_GeometricMeanCone_VectorAffineFunction_3 test_conic.jl +NLP general test_conic_GeometricMeanCone_VectorOfVariables test_conic.jl +NLP general test_conic_GeometricMeanCone_VectorOfVariables_2 test_conic.jl +NLP general test_conic_GeometricMeanCone_VectorOfVariables_3 test_conic.jl +NLP general test_conic_HermitianPositiveSemidefiniteConeTriangle_1 test_conic.jl +NLP general test_conic_HermitianPositiveSemidefiniteConeTriangle_2 test_conic.jl +NLP general test_conic_LogDetConeSquare test_conic.jl +NLP general test_conic_LogDetConeSquare_VectorAffineFunction test_conic.jl +NLP general test_conic_LogDetConeSquare_VectorOfVariables test_conic.jl +NLP general test_conic_LogDetConeTriangle test_conic.jl +NLP general test_conic_LogDetConeTriangle_VectorAffineFunction test_conic.jl +NLP general test_conic_LogDetConeTriangle_VectorOfVariables test_conic.jl +NLP general test_conic_NormCone test_conic.jl +LP general test_conic_NormInfinityCone_3 test_conic.jl +LP general test_conic_NormInfinityCone_INFEASIBLE test_conic.jl +LP general test_conic_NormInfinityCone_VectorAffineFunction test_conic.jl +LP general test_conic_NormInfinityCone_VectorOfVariables test_conic.jl +NLP general test_conic_NormNuclearCone test_conic.jl +NLP general test_conic_NormNuclearCone_2 test_conic.jl +LP general test_conic_NormOneCone test_conic.jl +LP general test_conic_NormOneCone_INFEASIBLE test_conic.jl +LP general test_conic_NormOneCone_VectorAffineFunction test_conic.jl +LP general test_conic_NormOneCone_VectorOfVariables test_conic.jl +NLP general test_conic_NormSpectralCone test_conic.jl +NLP general test_conic_NormSpectralCone_2 test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeSquare_3 test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeSquare_VectorAffineFunction test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeSquare_VectorAffineFunction_2 test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeSquare_VectorOfVariables test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeSquare_VectorOfVariables_2 test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeTriangle test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeTriangle_3 test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeTriangle_4 test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeTriangle_VectorAffineFunction test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeTriangle_VectorAffineFunction_2 test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeTriangle_VectorOfVariables test_conic.jl +NLP general test_conic_PositiveSemidefiniteConeTriangle_VectorOfVariables_2 test_conic.jl +NLP general test_conic_PowerCone_VectorAffineFunction test_conic.jl +NLP general test_conic_PowerCone_VectorOfVariables test_conic.jl +NLP general test_conic_RelativeEntropyCone test_conic.jl +NLP general test_conic_RootDetConeSquare test_conic.jl +NLP general test_conic_RootDetConeSquare_VectorAffineFunction test_conic.jl +NLP general test_conic_RootDetConeSquare_VectorOfVariables test_conic.jl +NLP general test_conic_RootDetConeTriangle test_conic.jl +NLP general test_conic_RootDetConeTriangle_VectorAffineFunction test_conic.jl +NLP general test_conic_RootDetConeTriangle_VectorOfVariables test_conic.jl +NLP general test_conic_RotatedSecondOrderCone_INFEASIBLE test_conic.jl +NLP general test_conic_RotatedSecondOrderCone_INFEASIBLE_2 test_conic.jl +NLP general test_conic_RotatedSecondOrderCone_VectorAffineFunction test_conic.jl +NLP general test_conic_RotatedSecondOrderCone_VectorOfVariables test_conic.jl +NLP general test_conic_RotatedSecondOrderCone_out_of_order test_conic.jl +NLP general test_conic_ScaledPositiveSemidefiniteConeTriangle_VectorAffineFunction test_conic.jl +NLP general test_conic_SecondOrderCone_INFEASIBLE test_conic.jl +NLP general test_conic_SecondOrderCone_Nonnegatives test_conic.jl +NLP general test_conic_SecondOrderCone_Nonpositives test_conic.jl +NLP general test_conic_SecondOrderCone_VectorAffineFunction test_conic.jl +NLP general test_conic_SecondOrderCone_VectorOfVariables test_conic.jl +NLP general test_conic_SecondOrderCone_negative_initial_bound test_conic.jl +NLP general test_conic_SecondOrderCone_negative_post_bound test_conic.jl +NLP general test_conic_SecondOrderCone_negative_post_bound_2 test_conic.jl +NLP general test_conic_SecondOrderCone_negative_post_bound_3 test_conic.jl +NLP general test_conic_SecondOrderCone_no_initial_bound test_conic.jl +NLP general test_conic_SecondOrderCone_nonnegative_initial_bound test_conic.jl +NLP general test_conic_SecondOrderCone_nonnegative_post_bound test_conic.jl +NLP general test_conic_SecondOrderCone_out_of_order test_conic.jl +NLP general test_conic_empty_matrix test_conic.jl +LP general test_conic_linear_INFEASIBLE test_conic.jl +LP general test_conic_linear_INFEASIBLE_2 test_conic.jl +LP general test_conic_linear_VectorAffineFunction test_conic.jl +LP general test_conic_linear_VectorAffineFunction_2 test_conic.jl +LP general test_conic_linear_VectorOfVariables test_conic.jl +LP general test_conic_linear_VectorOfVariables_2 test_conic.jl +LP general test_constraint_ConstraintDualStart test_constraint.jl +LP general test_constraint_ConstraintPrimalStart test_constraint.jl +NLP general test_constraint_PrimalStart_DualStart_SecondOrderCone test_constraint.jl +LP equality test_constraint_ScalarAffineFunction_EqualTo test_constraint.jl +LP general test_constraint_ScalarAffineFunction_GreaterThan test_constraint.jl +LP general test_constraint_ScalarAffineFunction_Interval test_constraint.jl +LP general test_constraint_ScalarAffineFunction_LessThan test_constraint.jl +LP general test_constraint_ScalarAffineFunction_duplicate test_constraint.jl +LP general test_constraint_VectorAffineFunction_duplicate test_constraint.jl +LP bound-constrained test_constraint_get_ConstraintIndex test_constraint.jl +NLP general test_constraint_qcp_duplicate_diagonal test_constraint.jl +NLP general test_constraint_qcp_duplicate_off_diagonal test_constraint.jl +LP general test_linear_DUAL_INFEASIBLE test_linear.jl +LP equality test_linear_DUAL_INFEASIBLE_2 test_linear.jl +LP general test_linear_FEASIBILITY_SENSE test_linear.jl +LP general test_linear_HyperRectangle_VectorAffineFunction test_linear.jl +LP bound-constrained test_linear_HyperRectangle_VectorOfVariables test_linear.jl +LP general test_linear_INFEASIBLE test_linear.jl +LP general test_linear_INFEASIBLE_2 test_linear.jl +LP general test_linear_Interval_inactive test_linear.jl +LP general test_linear_LessThan_and_GreaterThan test_linear.jl +LP general test_linear_VariablePrimalStart_partial test_linear.jl +LP general test_linear_VectorAffineFunction test_linear.jl +LP equality test_linear_VectorAffineFunction_empty_row test_linear.jl +LP general test_linear_add_constraints test_linear.jl +LP equality test_linear_complex_Zeros test_linear.jl +LP equality test_linear_complex_Zeros_duplicate test_linear.jl +LP general test_linear_inactive_bounds test_linear.jl +LP general test_linear_integration test_linear.jl +LP general test_linear_integration_2 test_linear.jl +LP general test_linear_integration_Interval test_linear.jl +LP general test_linear_integration_delete_variables test_linear.jl +LP general test_linear_integration_modification test_linear.jl +LP general test_linear_modify_GreaterThan_and_LessThan_constraints test_linear.jl +LP general test_linear_open_intervals test_linear.jl +LP general test_linear_transform test_linear.jl +LP bound-constrained test_linear_variable_open_intervals test_linear.jl +LP equality test_model_ListOfConstraintAttributesSet test_model.jl +LP general test_model_ListOfConstraintsWithAttributeSet test_model.jl +LP bound-constrained test_model_LowerBoundAlreadySet test_model.jl +LP bound-constrained test_model_ModelFilter_AbstractConstraintAttribute test_model.jl +LP bound-constrained test_model_ModelFilter_ListOfConstraintIndices test_model.jl +LP bound-constrained test_model_ModelFilter_ListOfConstraintTypesPresent test_model.jl +LP general test_model_Name_VariableName_ConstraintName test_model.jl +LP general test_model_ScalarAffineFunction_ConstraintName test_model.jl +LP general test_model_ScalarFunctionConstantNotZero test_model.jl +LP bound-constrained test_model_UpperBoundAlreadySet test_model.jl +LP bound-constrained test_model_VariableIndex_ConstraintName test_model.jl +LP bound-constrained test_model_add_constrained_variable_tuple test_model.jl +LP bound-constrained test_model_delete test_model.jl +LP bound-constrained test_model_duplicate_ScalarAffineFunction_ConstraintName test_model.jl +NLP general test_model_is_valid test_model.jl +LP bound-constrained test_model_ordered_indices test_model.jl +LP general test_modification_affine_deletion_edge_cases test_modification.jl +LP bound-constrained test_modification_coef_scalar_objective test_modification.jl +LP bound-constrained test_modification_coef_scalaraffine_lessthan test_modification.jl +LP bound-constrained test_modification_const_scalar_objective test_modification.jl +LP general test_modification_const_vectoraffine_nonpos test_modification.jl +LP equality test_modification_const_vectoraffine_zeros test_modification.jl +NLP bound-constrained test_modification_constraint_scalarquadraticcoefficientchange test_modification.jl +LP bound-constrained test_modification_delete_variable_with_single_variable_obj test_modification.jl +LP bound-constrained test_modification_delete_variables_in_a_batch test_modification.jl +LP bound-constrained test_modification_func_scalaraffine_lessthan test_modification.jl +LP general test_modification_func_vectoraffine_nonneg test_modification.jl +LP equality test_modification_incorrect test_modification.jl +LP bound-constrained test_modification_incorrect_VariableIndex test_modification.jl +LP equality test_modification_mathoptinterface_issue_2452 test_modification.jl +LP general test_modification_multirow_vectoraffine_nonpos test_modification.jl +NLP unconstrained test_modification_objective_scalarquadraticcoefficientchange test_modification.jl +LP bound-constrained test_modification_set_function_single_variable test_modification.jl +LP bound-constrained test_modification_set_scalaraffine_lessthan test_modification.jl +LP bound-constrained test_modification_set_singlevariable_lessthan test_modification.jl +LP bound-constrained test_modification_transform_singlevariable_lessthan test_modification.jl +LP general test_multi_objective_solve_and_objective_value test_multiobjective.jl +LP unconstrained test_multiobjective_vector_affine_function test_multiobjective.jl +LP unconstrained test_multiobjective_vector_affine_function_delete test_multiobjective.jl +LP unconstrained test_multiobjective_vector_affine_function_delete_vector test_multiobjective.jl +LP unconstrained test_multiobjective_vector_affine_function_modify test_multiobjective.jl +NLP bound-constrained test_multiobjective_vector_nonlinear test_multiobjective.jl +NLP bound-constrained test_multiobjective_vector_nonlinear_delete test_multiobjective.jl +NLP bound-constrained test_multiobjective_vector_nonlinear_delete_vector test_multiobjective.jl +NLP bound-constrained test_multiobjective_vector_nonlinear_modify test_multiobjective.jl +LP unconstrained test_multiobjective_vector_of_variables test_multiobjective.jl +LP unconstrained test_multiobjective_vector_of_variables_delete test_multiobjective.jl +LP unconstrained test_multiobjective_vector_of_variables_delete_all test_multiobjective.jl +LP unconstrained test_multiobjective_vector_of_variables_delete_vector test_multiobjective.jl +NLP unconstrained test_multiobjective_vector_quadratic_function test_multiobjective.jl +NLP unconstrained test_multiobjective_vector_quadratic_function_delete test_multiobjective.jl +NLP unconstrained test_multiobjective_vector_quadratic_function_delete_vector test_multiobjective.jl +NLP unconstrained test_multiobjective_vector_quadratic_function_modify test_multiobjective.jl +NLP general test_nonlinear_constraint_log test_nonlinear.jl +NLP general test_nonlinear_constraint_scalar_affine_function test_nonlinear.jl +NLP general test_nonlinear_constraint_uminus test_nonlinear.jl +NLP general test_nonlinear_duals test_nonlinear.jl +NLP general test_nonlinear_expression_hs071 test_nonlinear.jl +NLP general test_nonlinear_expression_hs071_epigraph test_nonlinear.jl +NLP general test_nonlinear_expression_hs109 test_nonlinear.jl +NLP bound-constrained test_nonlinear_expression_hs110 test_nonlinear.jl +NLP unconstrained test_nonlinear_expression_multivariate_function test_nonlinear.jl +NLP general test_nonlinear_expression_overrides_objective test_nonlinear.jl +NLP bound-constrained test_nonlinear_expression_quartic test_nonlinear.jl +NLP unconstrained test_nonlinear_expression_univariate_function test_nonlinear.jl +NLP general test_nonlinear_hs071 test_nonlinear.jl +NLP general test_nonlinear_hs071_NLPBlockDual test_nonlinear.jl +NLP general test_nonlinear_hs071_hessian_vector_product test_nonlinear.jl +NLP general test_nonlinear_hs071_no_hessian test_nonlinear.jl +NLP equality test_nonlinear_objective test_nonlinear.jl +NLP equality test_nonlinear_objective_and_moi_objective_test test_nonlinear.jl +NLP general test_nonlinear_quadratic_1 test_nonlinear.jl +NLP general test_nonlinear_quadratic_2 test_nonlinear.jl +NLP general test_nonlinear_quadratic_3 test_nonlinear.jl +NLP general test_nonlinear_quadratic_4 test_nonlinear.jl +NLP general test_nonlinear_vector_complements test_nonlinear.jl +NLP general test_nonlinear_with_scalar_quadratic_function_with_off_diag test_nonlinear.jl +NLP equality test_nonlinear_without_objective test_nonlinear.jl +LP bound-constrained test_objective_FEASIBILITY_SENSE_clears_objective test_objective.jl +LP bound-constrained test_objective_ObjectiveFunction_VariableIndex test_objective.jl +LP unconstrained test_objective_ObjectiveFunction_blank test_objective.jl +LP bound-constrained test_objective_ObjectiveFunction_constant test_objective.jl +LP bound-constrained test_objective_ObjectiveFunction_duplicate_terms test_objective.jl +LP unconstrained test_objective_ScalarAffineFunction_in_ListOfModelAttributesSet test_objective.jl +NLP unconstrained test_objective_ScalarQuadraticFunction_in_ListOfModelAttributesSet test_objective.jl +LP unconstrained test_objective_VariableIndex_in_ListOfModelAttributesSet test_objective.jl +NLP unconstrained test_objective_get_ObjectiveFunction_ScalarAffineFunction test_objective.jl +NLP bound-constrained test_objective_qp_ObjectiveFunction_edge_cases test_objective.jl +NLP bound-constrained test_objective_qp_ObjectiveFunction_zero_ofdiag test_objective.jl +LP unconstrained test_objective_set_via_modify test_objective.jl +NLP general test_quadratic_SecondOrderCone_basic test_quadratic.jl +NLP general test_quadratic_constraint_GreaterThan test_quadratic.jl +NLP general test_quadratic_constraint_LessThan test_quadratic.jl +NLP general test_quadratic_constraint_basic test_quadratic.jl +NLP general test_quadratic_constraint_integration test_quadratic.jl +NLP general test_quadratic_constraint_minimize test_quadratic.jl +NLP general test_quadratic_duplicate_terms test_quadratic.jl +NLP general test_quadratic_integration test_quadratic.jl +NLP equality test_quadratic_nonconvex_constraint_basic test_quadratic.jl +NLP general test_quadratic_nonconvex_constraint_integration test_quadratic.jl +NLP equality test_quadratic_nonhomogeneous test_quadratic.jl +LP equality test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_EqualTo_lower test_solve.jl +LP equality test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_EqualTo_upper test_solve.jl +LP general test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_GreaterThan test_solve.jl +LP general test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_Interval_lower test_solve.jl +LP general test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_Interval_upper test_solve.jl +LP general test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_LessThan test_solve.jl +LP general test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_VariableIndex_LessThan test_solve.jl +LP general test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_VariableIndex_LessThan_max test_solve.jl +LP bound-constrained test_solve_ObjectiveBound_MAX_SENSE_IP test_solve.jl +LP bound-constrained test_solve_ObjectiveBound_MAX_SENSE_LP test_solve.jl +LP bound-constrained test_solve_ObjectiveBound_MIN_SENSE_IP test_solve.jl +LP bound-constrained test_solve_ObjectiveBound_MIN_SENSE_LP test_solve.jl +LP unconstrained test_solve_TerminationStatus_DUAL_INFEASIBLE test_solve.jl +LP bound-constrained test_solve_VariableIndex_ConstraintDual_MAX_SENSE test_solve.jl +LP bound-constrained test_solve_VariableIndex_ConstraintDual_MIN_SENSE test_solve.jl +LP general test_solve_conflict_EqualTo test_solve.jl +LP general test_solve_conflict_NOT_IN_CONFLICT test_solve.jl +LP general test_solve_conflict_affine_affine test_solve.jl +LP bound-constrained test_solve_conflict_bound_bound test_solve.jl +LP general test_solve_conflict_feasible test_solve.jl +LP bound-constrained test_solve_conflict_invalid_interval test_solve.jl +LP general test_solve_conflict_two_affine test_solve.jl +LP general test_solve_conflict_zeroone test_solve.jl +LP equality test_solve_conflict_zeroone_2 test_solve.jl +LP bound-constrained test_solve_optimize_twice test_solve.jl +LP bound-constrained test_solve_result_index test_solve.jl +LP bound-constrained test_variable_delete_Nonnegatives test_variable.jl +LP bound-constrained test_variable_delete_Nonnegatives_row test_variable.jl +NLP general test_variable_delete_SecondOrderCone test_variable.jl +LP bound-constrained test_variable_solve_with_lowerbound test_variable.jl +LP bound-constrained test_variable_solve_with_upperbound test_variable.jl +NLP general test_vector_nonlinear_oracle test_nonlinear.jl +NLP general test_vector_nonlinear_oracle_no_hessian test_nonlinear.jl diff --git a/.github/julia/MOI/_removed_pure_api_tests.txt b/.github/julia/MOI/_removed_pure_api_tests.txt new file mode 100644 index 000000000..324fdb69b --- /dev/null +++ b/.github/julia/MOI/_removed_pure_api_tests.txt @@ -0,0 +1,46 @@ +test_add_parameter +test_attribute_AbsoluteGapTolerance +test_attribute_NodeLimit +test_attribute_NumberThreads +test_attribute_ObjectiveLimit +test_attribute_RawStatusString +test_attribute_RelativeGapTolerance +test_attribute_Silent +test_attribute_SolutionLimit +test_attribute_SolveTimeSec +test_attribute_SolverName +test_attribute_TimeLimitSec +test_attribute_VariableBridgingCost +test_attribute_after_empty +test_attribute_unsupported_constraint +test_model_ListOfVariablesWithAttributeSet +test_model_ModelFilter_AbstractModelAttribute +test_model_ModelFilter_AbstractVariableAttribute +test_model_Name +test_model_VariableName +test_model_VariablePrimalStart +test_model_copy_to_UnsupportedAttribute +test_model_copy_to_UnsupportedConstraint +test_model_default_DualStatus +test_model_default_ObjectiveSense +test_model_default_PrimalStatus +test_model_default_TerminationStatus +test_model_duplicate_VariableName +test_model_empty +test_model_show +test_model_supports_constraint_ScalarAffineFunction_EqualTo +test_model_supports_constraint_VariableIndex_EqualTo +test_model_supports_constraint_VectorOfVariables_Nonnegatives +test_nonlinear_Feasibility_internal +test_nonlinear_HS071_internal +test_nonlinear_InvalidEvaluator_internal +test_objective_ObjectiveSense_FEASIBILITY_SENSE +test_objective_ObjectiveSense_MAX_SENSE +test_objective_ObjectiveSense_MIN_SENSE +test_objective_ObjectiveSense_in_ListOfModelAttributesSet +test_variable_VariableName +test_variable_add_variable +test_variable_add_variables +test_variable_delete +test_variable_delete_variables +test_variable_get_VariableIndex diff --git a/.github/julia/MOI/bound-constrained.txt b/.github/julia/MOI/bound-constrained.txt new file mode 100644 index 000000000..1ac5af6f2 --- /dev/null +++ b/.github/julia/MOI/bound-constrained.txt @@ -0,0 +1,62 @@ +test_DualObjectiveValue_Max_VariableIndex_LessThan +test_DualObjectiveValue_Min_VariableIndex_GreaterThan +test_add_constrained_variables_vector +test_basic_VariableIndex_EqualTo +test_basic_VariableIndex_GreaterThan +test_basic_VariableIndex_Interval +test_basic_VariableIndex_LessThan +test_basic_VectorOfVariables_HyperRectangle +test_basic_VectorOfVariables_Nonnegatives +test_basic_VectorOfVariables_Nonpositives +test_basic_VectorOfVariables_Zeros +test_constraint_get_ConstraintIndex +test_linear_HyperRectangle_VectorOfVariables +test_linear_variable_open_intervals +test_model_LowerBoundAlreadySet +test_model_ModelFilter_AbstractConstraintAttribute +test_model_ModelFilter_ListOfConstraintIndices +test_model_ModelFilter_ListOfConstraintTypesPresent +test_model_UpperBoundAlreadySet +test_model_VariableIndex_ConstraintName +test_model_add_constrained_variable_tuple +test_model_delete +test_model_duplicate_ScalarAffineFunction_ConstraintName +test_model_ordered_indices +test_modification_coef_scalar_objective +test_modification_coef_scalaraffine_lessthan +test_modification_const_scalar_objective +test_modification_constraint_scalarquadraticcoefficientchange +test_modification_delete_variable_with_single_variable_obj +test_modification_delete_variables_in_a_batch +test_modification_func_scalaraffine_lessthan +test_modification_incorrect_VariableIndex +test_modification_set_function_single_variable +test_modification_set_scalaraffine_lessthan +test_modification_set_singlevariable_lessthan +test_modification_transform_singlevariable_lessthan +test_multiobjective_vector_nonlinear +test_multiobjective_vector_nonlinear_delete +test_multiobjective_vector_nonlinear_delete_vector +test_multiobjective_vector_nonlinear_modify +test_nonlinear_expression_hs110 +test_nonlinear_expression_quartic +test_objective_FEASIBILITY_SENSE_clears_objective +test_objective_ObjectiveFunction_VariableIndex +test_objective_ObjectiveFunction_constant +test_objective_ObjectiveFunction_duplicate_terms +test_objective_qp_ObjectiveFunction_edge_cases +test_objective_qp_ObjectiveFunction_zero_ofdiag +test_solve_ObjectiveBound_MAX_SENSE_IP +test_solve_ObjectiveBound_MAX_SENSE_LP +test_solve_ObjectiveBound_MIN_SENSE_IP +test_solve_ObjectiveBound_MIN_SENSE_LP +test_solve_VariableIndex_ConstraintDual_MAX_SENSE +test_solve_VariableIndex_ConstraintDual_MIN_SENSE +test_solve_conflict_bound_bound +test_solve_conflict_invalid_interval +test_solve_optimize_twice +test_solve_result_index +test_variable_delete_Nonnegatives +test_variable_delete_Nonnegatives_row +test_variable_solve_with_lowerbound +test_variable_solve_with_upperbound diff --git a/.github/julia/MOI/equality-constrained.txt b/.github/julia/MOI/equality-constrained.txt new file mode 100644 index 000000000..95be73e27 --- /dev/null +++ b/.github/julia/MOI/equality-constrained.txt @@ -0,0 +1,20 @@ +test_basic_ScalarAffineFunction_EqualTo +test_basic_ScalarNonlinearFunction_EqualTo +test_basic_ScalarQuadraticFunction_EqualTo +test_basic_VectorAffineFunction_Zeros +test_basic_VectorQuadraticFunction_Zeros +test_constraint_ScalarAffineFunction_EqualTo +test_linear_DUAL_INFEASIBLE_2 +test_linear_VectorAffineFunction_empty_row +test_linear_complex_Zeros +test_linear_complex_Zeros_duplicate +test_model_ListOfConstraintAttributesSet +test_modification_const_vectoraffine_zeros +test_modification_incorrect +test_modification_mathoptinterface_issue_2452 +test_nonlinear_objective +test_nonlinear_objective_and_moi_objective_test +test_nonlinear_without_objective +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_EqualTo_lower +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_EqualTo_upper +test_solve_conflict_zeroone_2 diff --git a/.github/julia/MOI/general.txt b/.github/julia/MOI/general.txt new file mode 100644 index 000000000..72ae17a3a --- /dev/null +++ b/.github/julia/MOI/general.txt @@ -0,0 +1,296 @@ +test_DualObjectiveValue_Max_ScalarAffine_LessThan +test_DualObjectiveValue_Min_ScalarAffine_GreaterThan +test_HermitianPSDCone_basic +test_HermitianPSDCone_min_t +test_NormNuclearCone_VectorAffineFunction_with_transform +test_NormNuclearCone_VectorAffineFunction_without_transform +test_NormNuclearCone_VectorOfVariables_with_transform +test_NormNuclearCone_VectorOfVariables_without_transform +test_NormSpectralCone_VectorAffineFunction_with_transform +test_NormSpectralCone_VectorAffineFunction_without_transform +test_NormSpectralCone_VectorOfVariables_with_transform +test_NormSpectralCone_VectorOfVariables_without_transform +test_VectorNonlinearOracle_LagrangeMultipliers_MAX_SENSE +test_VectorNonlinearOracle_LagrangeMultipliers_MIN_SENSE +test_add_constrained_PositiveSemidefiniteConeTriangle +test_add_constrained_PositiveSemidefiniteConeTriangle_VariableName +test_add_constrained_PositiveSemidefiniteConeTriangle_VariablePrimalStart +test_basic_ScalarAffineFunction_GreaterThan +test_basic_ScalarAffineFunction_Interval +test_basic_ScalarAffineFunction_LessThan +test_basic_ScalarNonlinearFunction_GreaterThan +test_basic_ScalarNonlinearFunction_Interval +test_basic_ScalarNonlinearFunction_LessThan +test_basic_ScalarQuadraticFunction_GreaterThan +test_basic_ScalarQuadraticFunction_Interval +test_basic_ScalarQuadraticFunction_LessThan +test_basic_VectorAffineFunction_AllDifferent +test_basic_VectorAffineFunction_BinPacking +test_basic_VectorAffineFunction_Circuit +test_basic_VectorAffineFunction_Complements +test_basic_VectorAffineFunction_CountAtLeast +test_basic_VectorAffineFunction_CountBelongs +test_basic_VectorAffineFunction_CountDistinct +test_basic_VectorAffineFunction_CountGreaterThan +test_basic_VectorAffineFunction_Cumulative +test_basic_VectorAffineFunction_DualExponentialCone +test_basic_VectorAffineFunction_DualPowerCone +test_basic_VectorAffineFunction_ExponentialCone +test_basic_VectorAffineFunction_GeometricMeanCone +test_basic_VectorAffineFunction_HermitianPositiveSemidefiniteConeTriangle +test_basic_VectorAffineFunction_HyperRectangle +test_basic_VectorAffineFunction_LogDetConeSquare +test_basic_VectorAffineFunction_LogDetConeTriangle +test_basic_VectorAffineFunction_Nonnegatives +test_basic_VectorAffineFunction_Nonpositives +test_basic_VectorAffineFunction_NormCone +test_basic_VectorAffineFunction_NormInfinityCone +test_basic_VectorAffineFunction_NormNuclearCone +test_basic_VectorAffineFunction_NormOneCone +test_basic_VectorAffineFunction_NormSpectralCone +test_basic_VectorAffineFunction_Path +test_basic_VectorAffineFunction_PositiveSemidefiniteConeSquare +test_basic_VectorAffineFunction_PositiveSemidefiniteConeTriangle +test_basic_VectorAffineFunction_PowerCone +test_basic_VectorAffineFunction_RelativeEntropyCone +test_basic_VectorAffineFunction_RootDetConeSquare +test_basic_VectorAffineFunction_RootDetConeTriangle +test_basic_VectorAffineFunction_RotatedSecondOrderCone +test_basic_VectorAffineFunction_ScaledPositiveSemidefiniteConeTriangle +test_basic_VectorAffineFunction_SecondOrderCone +test_basic_VectorAffineFunction_Table +test_basic_VectorAffineFunction_VectorNonlinearOracle +test_basic_VectorOfVariables_AllDifferent +test_basic_VectorOfVariables_BinPacking +test_basic_VectorOfVariables_Circuit +test_basic_VectorOfVariables_Complements +test_basic_VectorOfVariables_CountAtLeast +test_basic_VectorOfVariables_CountBelongs +test_basic_VectorOfVariables_CountDistinct +test_basic_VectorOfVariables_CountGreaterThan +test_basic_VectorOfVariables_Cumulative +test_basic_VectorOfVariables_DualExponentialCone +test_basic_VectorOfVariables_DualPowerCone +test_basic_VectorOfVariables_ExponentialCone +test_basic_VectorOfVariables_GeometricMeanCone +test_basic_VectorOfVariables_HermitianPositiveSemidefiniteConeTriangle +test_basic_VectorOfVariables_LogDetConeSquare +test_basic_VectorOfVariables_LogDetConeTriangle +test_basic_VectorOfVariables_NormCone +test_basic_VectorOfVariables_NormInfinityCone +test_basic_VectorOfVariables_NormNuclearCone +test_basic_VectorOfVariables_NormOneCone +test_basic_VectorOfVariables_NormSpectralCone +test_basic_VectorOfVariables_Path +test_basic_VectorOfVariables_PositiveSemidefiniteConeSquare +test_basic_VectorOfVariables_PositiveSemidefiniteConeTriangle +test_basic_VectorOfVariables_PowerCone +test_basic_VectorOfVariables_RelativeEntropyCone +test_basic_VectorOfVariables_RootDetConeSquare +test_basic_VectorOfVariables_RootDetConeTriangle +test_basic_VectorOfVariables_RotatedSecondOrderCone +test_basic_VectorOfVariables_ScaledPositiveSemidefiniteConeTriangle +test_basic_VectorOfVariables_SecondOrderCone +test_basic_VectorOfVariables_Table +test_basic_VectorOfVariables_VectorNonlinearOracle +test_basic_VectorQuadraticFunction_AllDifferent +test_basic_VectorQuadraticFunction_BinPacking +test_basic_VectorQuadraticFunction_Circuit +test_basic_VectorQuadraticFunction_Complements +test_basic_VectorQuadraticFunction_CountAtLeast +test_basic_VectorQuadraticFunction_CountBelongs +test_basic_VectorQuadraticFunction_CountDistinct +test_basic_VectorQuadraticFunction_CountGreaterThan +test_basic_VectorQuadraticFunction_Cumulative +test_basic_VectorQuadraticFunction_DualExponentialCone +test_basic_VectorQuadraticFunction_DualPowerCone +test_basic_VectorQuadraticFunction_ExponentialCone +test_basic_VectorQuadraticFunction_GeometricMeanCone +test_basic_VectorQuadraticFunction_HermitianPositiveSemidefiniteConeTriangle +test_basic_VectorQuadraticFunction_HyperRectangle +test_basic_VectorQuadraticFunction_LogDetConeSquare +test_basic_VectorQuadraticFunction_LogDetConeTriangle +test_basic_VectorQuadraticFunction_Nonnegatives +test_basic_VectorQuadraticFunction_Nonpositives +test_basic_VectorQuadraticFunction_NormCone +test_basic_VectorQuadraticFunction_NormInfinityCone +test_basic_VectorQuadraticFunction_NormNuclearCone +test_basic_VectorQuadraticFunction_NormOneCone +test_basic_VectorQuadraticFunction_NormSpectralCone +test_basic_VectorQuadraticFunction_Path +test_basic_VectorQuadraticFunction_PositiveSemidefiniteConeSquare +test_basic_VectorQuadraticFunction_PositiveSemidefiniteConeTriangle +test_basic_VectorQuadraticFunction_PowerCone +test_basic_VectorQuadraticFunction_RelativeEntropyCone +test_basic_VectorQuadraticFunction_RootDetConeSquare +test_basic_VectorQuadraticFunction_RootDetConeTriangle +test_basic_VectorQuadraticFunction_RotatedSecondOrderCone +test_basic_VectorQuadraticFunction_ScaledPositiveSemidefiniteConeTriangle +test_basic_VectorQuadraticFunction_SecondOrderCone +test_basic_VectorQuadraticFunction_Table +test_basic_VectorQuadraticFunction_VectorNonlinearOracle +test_conic_DualExponentialCone_VectorAffineFunction +test_conic_DualExponentialCone_VectorOfVariables +test_conic_DualPowerCone_VectorAffineFunction +test_conic_DualPowerCone_VectorOfVariables +test_conic_Exponential_VectorAffineFunction +test_conic_Exponential_VectorOfVariables +test_conic_Exponential_hard +test_conic_Exponential_hard_2 +test_conic_GeometricMeanCone_VectorAffineFunction +test_conic_GeometricMeanCone_VectorAffineFunction_2 +test_conic_GeometricMeanCone_VectorAffineFunction_3 +test_conic_GeometricMeanCone_VectorOfVariables +test_conic_GeometricMeanCone_VectorOfVariables_2 +test_conic_GeometricMeanCone_VectorOfVariables_3 +test_conic_HermitianPositiveSemidefiniteConeTriangle_1 +test_conic_HermitianPositiveSemidefiniteConeTriangle_2 +test_conic_LogDetConeSquare +test_conic_LogDetConeSquare_VectorAffineFunction +test_conic_LogDetConeSquare_VectorOfVariables +test_conic_LogDetConeTriangle +test_conic_LogDetConeTriangle_VectorAffineFunction +test_conic_LogDetConeTriangle_VectorOfVariables +test_conic_NormCone +test_conic_NormInfinityCone_3 +test_conic_NormInfinityCone_INFEASIBLE +test_conic_NormInfinityCone_VectorAffineFunction +test_conic_NormInfinityCone_VectorOfVariables +test_conic_NormNuclearCone +test_conic_NormNuclearCone_2 +test_conic_NormOneCone +test_conic_NormOneCone_INFEASIBLE +test_conic_NormOneCone_VectorAffineFunction +test_conic_NormOneCone_VectorOfVariables +test_conic_NormSpectralCone +test_conic_NormSpectralCone_2 +test_conic_PositiveSemidefiniteConeSquare_3 +test_conic_PositiveSemidefiniteConeSquare_VectorAffineFunction +test_conic_PositiveSemidefiniteConeSquare_VectorAffineFunction_2 +test_conic_PositiveSemidefiniteConeSquare_VectorOfVariables +test_conic_PositiveSemidefiniteConeSquare_VectorOfVariables_2 +test_conic_PositiveSemidefiniteConeTriangle +test_conic_PositiveSemidefiniteConeTriangle_3 +test_conic_PositiveSemidefiniteConeTriangle_4 +test_conic_PositiveSemidefiniteConeTriangle_VectorAffineFunction +test_conic_PositiveSemidefiniteConeTriangle_VectorAffineFunction_2 +test_conic_PositiveSemidefiniteConeTriangle_VectorOfVariables +test_conic_PositiveSemidefiniteConeTriangle_VectorOfVariables_2 +test_conic_PowerCone_VectorAffineFunction +test_conic_PowerCone_VectorOfVariables +test_conic_RelativeEntropyCone +test_conic_RootDetConeSquare +test_conic_RootDetConeSquare_VectorAffineFunction +test_conic_RootDetConeSquare_VectorOfVariables +test_conic_RootDetConeTriangle +test_conic_RootDetConeTriangle_VectorAffineFunction +test_conic_RootDetConeTriangle_VectorOfVariables +test_conic_RotatedSecondOrderCone_INFEASIBLE +test_conic_RotatedSecondOrderCone_INFEASIBLE_2 +test_conic_RotatedSecondOrderCone_VectorAffineFunction +test_conic_RotatedSecondOrderCone_VectorOfVariables +test_conic_RotatedSecondOrderCone_out_of_order +test_conic_ScaledPositiveSemidefiniteConeTriangle_VectorAffineFunction +test_conic_SecondOrderCone_INFEASIBLE +test_conic_SecondOrderCone_Nonnegatives +test_conic_SecondOrderCone_Nonpositives +test_conic_SecondOrderCone_VectorAffineFunction +test_conic_SecondOrderCone_VectorOfVariables +test_conic_SecondOrderCone_negative_initial_bound +test_conic_SecondOrderCone_negative_post_bound +test_conic_SecondOrderCone_negative_post_bound_2 +test_conic_SecondOrderCone_negative_post_bound_3 +test_conic_SecondOrderCone_no_initial_bound +test_conic_SecondOrderCone_nonnegative_initial_bound +test_conic_SecondOrderCone_nonnegative_post_bound +test_conic_SecondOrderCone_out_of_order +test_conic_empty_matrix +test_conic_linear_INFEASIBLE +test_conic_linear_INFEASIBLE_2 +test_conic_linear_VectorAffineFunction +test_conic_linear_VectorAffineFunction_2 +test_conic_linear_VectorOfVariables +test_conic_linear_VectorOfVariables_2 +test_constraint_ConstraintDualStart +test_constraint_ConstraintPrimalStart +test_constraint_PrimalStart_DualStart_SecondOrderCone +test_constraint_ScalarAffineFunction_GreaterThan +test_constraint_ScalarAffineFunction_Interval +test_constraint_ScalarAffineFunction_LessThan +test_constraint_ScalarAffineFunction_duplicate +test_constraint_VectorAffineFunction_duplicate +test_constraint_qcp_duplicate_diagonal +test_constraint_qcp_duplicate_off_diagonal +test_linear_DUAL_INFEASIBLE +test_linear_FEASIBILITY_SENSE +test_linear_HyperRectangle_VectorAffineFunction +test_linear_INFEASIBLE +test_linear_INFEASIBLE_2 +test_linear_Interval_inactive +test_linear_LessThan_and_GreaterThan +test_linear_VariablePrimalStart_partial +test_linear_VectorAffineFunction +test_linear_add_constraints +test_linear_inactive_bounds +test_linear_integration +test_linear_integration_2 +test_linear_integration_Interval +test_linear_integration_delete_variables +test_linear_integration_modification +test_linear_modify_GreaterThan_and_LessThan_constraints +test_linear_open_intervals +test_linear_transform +test_model_ListOfConstraintsWithAttributeSet +test_model_Name_VariableName_ConstraintName +test_model_ScalarAffineFunction_ConstraintName +test_model_ScalarFunctionConstantNotZero +test_model_is_valid +test_modification_affine_deletion_edge_cases +test_modification_const_vectoraffine_nonpos +test_modification_func_vectoraffine_nonneg +test_modification_multirow_vectoraffine_nonpos +test_multi_objective_solve_and_objective_value +test_nonlinear_constraint_log +test_nonlinear_constraint_scalar_affine_function +test_nonlinear_constraint_uminus +test_nonlinear_duals +test_nonlinear_expression_hs071 +test_nonlinear_expression_hs071_epigraph +test_nonlinear_expression_hs109 +test_nonlinear_expression_overrides_objective +test_nonlinear_hs071 +test_nonlinear_hs071_NLPBlockDual +test_nonlinear_hs071_hessian_vector_product +test_nonlinear_hs071_no_hessian +test_nonlinear_quadratic_1 +test_nonlinear_quadratic_2 +test_nonlinear_quadratic_3 +test_nonlinear_quadratic_4 +test_nonlinear_vector_complements +test_nonlinear_with_scalar_quadratic_function_with_off_diag +test_quadratic_SecondOrderCone_basic +test_quadratic_constraint_GreaterThan +test_quadratic_constraint_LessThan +test_quadratic_constraint_basic +test_quadratic_constraint_integration +test_quadratic_constraint_minimize +test_quadratic_duplicate_terms +test_quadratic_integration +test_quadratic_nonconvex_constraint_basic +test_quadratic_nonconvex_constraint_integration +test_quadratic_nonhomogeneous +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_GreaterThan +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_Interval_lower +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_Interval_upper +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_LessThan +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_VariableIndex_LessThan +test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_VariableIndex_LessThan_max +test_solve_conflict_EqualTo +test_solve_conflict_NOT_IN_CONFLICT +test_solve_conflict_affine_affine +test_solve_conflict_feasible +test_solve_conflict_two_affine +test_solve_conflict_zeroone +test_variable_delete_SecondOrderCone +test_vector_nonlinear_oracle +test_vector_nonlinear_oracle_no_hessian diff --git a/.github/julia/MOI/unconstrained.txt b/.github/julia/MOI/unconstrained.txt new file mode 100644 index 000000000..c1e0ea28b --- /dev/null +++ b/.github/julia/MOI/unconstrained.txt @@ -0,0 +1,22 @@ +test_modification_objective_scalarquadraticcoefficientchange +test_multiobjective_vector_affine_function +test_multiobjective_vector_affine_function_delete +test_multiobjective_vector_affine_function_delete_vector +test_multiobjective_vector_affine_function_modify +test_multiobjective_vector_of_variables +test_multiobjective_vector_of_variables_delete +test_multiobjective_vector_of_variables_delete_all +test_multiobjective_vector_of_variables_delete_vector +test_multiobjective_vector_quadratic_function +test_multiobjective_vector_quadratic_function_delete +test_multiobjective_vector_quadratic_function_delete_vector +test_multiobjective_vector_quadratic_function_modify +test_nonlinear_expression_multivariate_function +test_nonlinear_expression_univariate_function +test_objective_ObjectiveFunction_blank +test_objective_ScalarAffineFunction_in_ListOfModelAttributesSet +test_objective_ScalarQuadraticFunction_in_ListOfModelAttributesSet +test_objective_VariableIndex_in_ListOfModelAttributesSet +test_objective_get_ObjectiveFunction_ScalarAffineFunction +test_objective_set_via_modify +test_solve_TerminationStatus_DUAL_INFEASIBLE diff --git a/.github/julia/README.md b/.github/julia/README.md new file mode 100644 index 000000000..43ee26cd2 --- /dev/null +++ b/.github/julia/README.md @@ -0,0 +1,26 @@ +# Julia tests + +The Julia workflows run different solver configurations on MINLPTests.jl and MathOptInterface.jl instances. +We have partitioned the instances in order to target particular tests (e.g., inequality-constrained problems). + +| Script | unconstrained | bound-constrained | equality-constrained | general | LP | NLP | +|:------------------------------------------------|:--------------|:------------------|:---------------------|:--------|:---|:----| +| `runtests_uno_filterslp_bqpd` | | | | | | | +| `runtests_uno_filterslp_highs` | | | | | | | +| `runtests_uno_filtersqp_bqpd` | | | | | | | +| `runtests_uno_filtersqp_bqpd_identity` | | | | | | | +| `runtests_uno_filtersqp_bqpd_ls_lbfgs` | | | | | | | +| `runtests_uno_filtersqp_bqpd_lsr1` | | | | | | | +| `runtests_uno_filtersqp_bqpd_regularization_ls` | | | | | | | +| `runtests_uno_filtersqp_bqpd_regularization_tr` | | | | | | | +| `runtests_uno_ipopt_ma27` | | x | | x | x | x | +| `runtests_uno_ipopt_ma57` | | x | | x | x | x | +| `runtests_uno_ipopt_mumps` | | x | | x | x | x | +| `runtests_uno_ipopt_ssids` | | x | | x | x | x | +| `runtests_uno_ipopt_mumps_identity` | | x | | x | | x | +| `runtests_uno_ipopt_mumps_lbfgs` | | x | | x | | x | +| `runtests_uno_pure_sqp_mumps` | | | x | | | x | +| `runtests_uno_unconstrained_lbfgs_mumps` | x | | | | | x | +| `runtests_uno_unconstrained_mumps` | x | | | | x | x | + +`runtests_uno_filtersqp_highs` runs only on convex `MINLPTests.nlp_cvx_expr`. \ No newline at end of file diff --git a/.github/julia/runtests_uno_filterslp_bqpd.jl b/.github/julia/runtests_uno_filterslp_bqpd.jl index fc1d31d51..6d48926c8 100644 --- a/.github/julia/runtests_uno_filterslp_bqpd.jl +++ b/.github/julia/runtests_uno_filterslp_bqpd.jl @@ -22,7 +22,8 @@ function Optimizer(options) return AmplNLWriter.Optimizer(Uno_jll.amplexe, options) end -Optimizer_Uno_filterslp() = Optimizer(["logger=SILENT", "preset=filterslp", "LP_solver=BQPD", "max_iterations=10000", "unbounded_objective_threshold=-1e15", "primal_tolerance=1e-7"]) +Optimizer_Uno_filterslp() = Optimizer(["logger=SILENT", "preset=filterslp", "LP_solver=BQPD", "max_iterations=10000", + "unbounded_objective_threshold=-1e15", "primal_tolerance=1e-7"]) # This testset runs https://github.com/jump-dev/MINLPTests.jl @testset "MINLPTests" begin diff --git a/.github/julia/runtests_uno_filterslp_highs.jl b/.github/julia/runtests_uno_filterslp_highs.jl index 1652e161a..c911533c2 100644 --- a/.github/julia/runtests_uno_filterslp_highs.jl +++ b/.github/julia/runtests_uno_filterslp_highs.jl @@ -22,7 +22,8 @@ function Optimizer(options) return AmplNLWriter.Optimizer(Uno_jll.amplexe, options) end -Optimizer_Uno_filterslp() = Optimizer(["logger=SILENT", "preset=filterslp", "LP_solver=HiGHS", "max_iterations=10000", "unbounded_objective_threshold=-1e15", "dual_tolerance=1e-6"]) +Optimizer_Uno_filterslp() = Optimizer(["logger=SILENT", "preset=filterslp", "LP_solver=HiGHS", "max_iterations=10000", + "unbounded_objective_threshold=-1e15", "dual_tolerance=1e-6"]) # This testset runs https://github.com/jump-dev/MINLPTests.jl @testset "MINLPTests" begin diff --git a/.github/julia/runtests_uno_ipopt_ma27.jl b/.github/julia/runtests_uno_ipopt_ma27.jl index 8edbecd76..5e05efb60 100644 --- a/.github/julia/runtests_uno_ipopt_ma27.jl +++ b/.github/julia/runtests_uno_ipopt_ma27.jl @@ -1,9 +1,9 @@ -# Copyright (c) 2018-2025: Charlie Vanaret and contributors +# Copyright (c) 2018-2026: Charlie Vanaret and contributors # # Use of this source code is governed by an MIT-style license that can be found # in the LICENSE.md file or at https://opensource.org/licenses/MIT. -# For help with this file, please contact `@amontoison` or `@odow` on GitHub. +# For help with this file, please contact `@odow` on GitHub. using Test @@ -25,37 +25,60 @@ end Optimizer_Uno_ipopt() = Optimizer(["logger=SILENT", "preset=ipopt", "linear_solver=MA27", "unbounded_objective_threshold=-1e15"]) # This testset runs https://github.com/jump-dev/MINLPTests.jl -@testset "MINLPTests" begin - primal_target = Dict( - MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, - # If Uno starts writing a .sol file with an infeasible point, change - # this to `=> MOI.INFEASIBLE_POINT` - MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, - ) - objective_tol = 1e-4 - primal_tol = 1e-4 - # This function tests (potentially) non-convex nonlinear programs. The tests - # are meant to be "easy" in the sense that most NLP solvers can find the - # same global minimum, but a test failure can sometimes be allowed. - MINLPTests.test_nlp_expr( - Optimizer_Uno_ipopt; - exclude = [ - # Okay to exclude forever: AmplNLWriter does not support - # user-defined functions. - "006_010", - # Remove once https://github.com/cvanaret/Uno/issues/38 is fixed - "007_010", - ], - primal_target, objective_tol, primal_tol - ) - # This function tests convex nonlinear programs. Test failures here should - # never be allowed, because even local NLP solvers should find the global - # optimum. - MINLPTests.test_nlp_cvx_expr(Optimizer_Uno_ipopt; primal_target, objective_tol, primal_tol) + +# drop the equality-constrained instances +bound_constrained_instances = readlines(joinpath(@__DIR__, "MINLPTests/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MINLPTests/general.txt")) +instances = vcat(bound_constrained_instances, general_instances) +#print("Instances: ", instances) + +# strip the prefix +function strip_prefix(instances, prefix) + cleaned_instances = String[] + for instance in instances + instance = strip(instance) + startswith(instance, prefix) && push!(cleaned_instances, replace(instance, prefix => ""; count = 1)) + end + return cleaned_instances end +primal_target = Dict( + MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, + # If Uno starts writing a .sol file with an infeasible point, change + # this to `=> MOI.INFEASIBLE_POINT` + MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, +) +objective_tol = 1e-4 +primal_tol = 1e-4 + +# This function tests (potentially) non-convex nonlinear programs. The tests +# are meant to be "easy" in the sense that most NLP solvers can find the +# same global minimum, but a test failure can sometimes be allowed. +MINLPTests.test_directory( + "nlp-expr", + Optimizer_Uno_ipopt; + include = strip_prefix(instances, "nlp_expr_"), + primal_target, objective_tol, primal_tol +) +# This function tests convex nonlinear programs. Test failures here should +# never be allowed, because even local NLP solvers should find the global +# optimum. +MINLPTests.test_directory( + "nlp-cvx-expr", + Optimizer_Uno_ipopt; + include = strip_prefix(instances, "nlp_cvx_expr_"), + primal_target, objective_tol, primal_tol +) + # This testset runs the full gamut of MOI.Test.runtests. There are a number of # tests in here with weird edge cases, so a variety of exclusions are expected. + +# drop the equality-constrained instances +bound_constrained_instances = readlines(joinpath(@__DIR__, "MOI/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MOI/general.txt")) +instances = vcat(bound_constrained_instances, general_instances) +#print("Instances with inequality constraints: ", instances) + @testset "MathOptInterface.test" begin optimizer = MOI.instantiate( Optimizer_Uno_ipopt; @@ -83,6 +106,7 @@ end MOI.DualObjectiveValue, ], ); + include = [Regex("^" * instance * "\$") for instance in instances], # exact match exclude = [ # ================================================================== # The following tests are bugs. diff --git a/.github/julia/runtests_uno_ipopt_ma57.jl b/.github/julia/runtests_uno_ipopt_ma57.jl index bade46273..be335e17d 100644 --- a/.github/julia/runtests_uno_ipopt_ma57.jl +++ b/.github/julia/runtests_uno_ipopt_ma57.jl @@ -1,9 +1,9 @@ -# Copyright (c) 2018-2025: Charlie Vanaret and contributors +# Copyright (c) 2018-2026: Charlie Vanaret and contributors # # Use of this source code is governed by an MIT-style license that can be found # in the LICENSE.md file or at https://opensource.org/licenses/MIT. -# For help with this file, please contact `@amontoison` or `@odow` on GitHub. +# For help with this file, please contact `@odow` on GitHub. using Test @@ -25,37 +25,60 @@ end Optimizer_Uno_ipopt() = Optimizer(["logger=SILENT", "preset=ipopt", "linear_solver=MA57", "unbounded_objective_threshold=-1e15"]) # This testset runs https://github.com/jump-dev/MINLPTests.jl -@testset "MINLPTests" begin - primal_target = Dict( - MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, - # If Uno starts writing a .sol file with an infeasible point, change - # this to `=> MOI.INFEASIBLE_POINT` - MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, - ) - objective_tol = 1e-4 - primal_tol = 1e-4 - # This function tests (potentially) non-convex nonlinear programs. The tests - # are meant to be "easy" in the sense that most NLP solvers can find the - # same global minimum, but a test failure can sometimes be allowed. - MINLPTests.test_nlp_expr( - Optimizer_Uno_ipopt; - exclude = [ - # Okay to exclude forever: AmplNLWriter does not support - # user-defined functions. - "006_010", - # Remove once https://github.com/cvanaret/Uno/issues/38 is fixed - "007_010", - ], - primal_target, objective_tol, primal_tol - ) - # This function tests convex nonlinear programs. Test failures here should - # never be allowed, because even local NLP solvers should find the global - # optimum. - MINLPTests.test_nlp_cvx_expr(Optimizer_Uno_ipopt; primal_target, objective_tol, primal_tol) + +# drop the equality-constrained instances +bound_constrained_instances = readlines(joinpath(@__DIR__, "MINLPTests/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MINLPTests/general.txt")) +instances = vcat(bound_constrained_instances, general_instances) +#print("Instances: ", instances) + +# strip the prefix +function strip_prefix(instances, prefix) + cleaned_instances = String[] + for instance in instances + instance = strip(instance) + startswith(instance, prefix) && push!(cleaned_instances, replace(instance, prefix => ""; count = 1)) + end + return cleaned_instances end +primal_target = Dict( + MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, + # If Uno starts writing a .sol file with an infeasible point, change + # this to `=> MOI.INFEASIBLE_POINT` + MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, +) +objective_tol = 1e-4 +primal_tol = 1e-4 + +# This function tests (potentially) non-convex nonlinear programs. The tests +# are meant to be "easy" in the sense that most NLP solvers can find the +# same global minimum, but a test failure can sometimes be allowed. +MINLPTests.test_directory( + "nlp-expr", + Optimizer_Uno_ipopt; + include = strip_prefix(instances, "nlp_expr_"), + primal_target, objective_tol, primal_tol +) +# This function tests convex nonlinear programs. Test failures here should +# never be allowed, because even local NLP solvers should find the global +# optimum. +MINLPTests.test_directory( + "nlp-cvx-expr", + Optimizer_Uno_ipopt; + include = strip_prefix(instances, "nlp_cvx_expr_"), + primal_target, objective_tol, primal_tol +) + # This testset runs the full gamut of MOI.Test.runtests. There are a number of # tests in here with weird edge cases, so a variety of exclusions are expected. + +# drop the equality-constrained instances +bound_constrained_instances = readlines(joinpath(@__DIR__, "MOI/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MOI/general.txt")) +instances = vcat(bound_constrained_instances, general_instances) +#print("Instances with inequality constraints: ", instances) + @testset "MathOptInterface.test" begin optimizer = MOI.instantiate( Optimizer_Uno_ipopt; @@ -83,6 +106,7 @@ end MOI.DualObjectiveValue, ], ); + include = [Regex("^" * instance * "\$") for instance in instances], # exact match exclude = [ # ================================================================== # The following tests are bugs. diff --git a/.github/julia/runtests_uno_ipopt_mumps.jl b/.github/julia/runtests_uno_ipopt_mumps.jl index ad88bcb35..603a4a3e4 100644 --- a/.github/julia/runtests_uno_ipopt_mumps.jl +++ b/.github/julia/runtests_uno_ipopt_mumps.jl @@ -1,4 +1,4 @@ -# Copyright (c) 2018-2025: Charlie Vanaret and contributors +# Copyright (c) 2018-2026: Charlie Vanaret and contributors # # Use of this source code is governed by an MIT-style license that can be found # in the LICENSE.md file or at https://opensource.org/licenses/MIT. @@ -25,37 +25,60 @@ end Optimizer_Uno_ipopt() = Optimizer(["logger=SILENT", "preset=ipopt", "linear_solver=MUMPS", "unbounded_objective_threshold=-1e15"]) # This testset runs https://github.com/jump-dev/MINLPTests.jl -@testset "MINLPTests" begin - primal_target = Dict( - MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, - # If Uno starts writing a .sol file with an infeasible point, change - # this to `=> MOI.INFEASIBLE_POINT` - MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, - ) - objective_tol = 1e-4 - primal_tol = 1e-4 - # This function tests (potentially) non-convex nonlinear programs. The tests - # are meant to be "easy" in the sense that most NLP solvers can find the - # same global minimum, but a test failure can sometimes be allowed. - MINLPTests.test_nlp_expr( - Optimizer_Uno_ipopt; - exclude = [ - # Okay to exclude forever: AmplNLWriter does not support - # user-defined functions. - "006_010", - # Remove once https://github.com/cvanaret/Uno/issues/38 is fixed - "007_010", - ], - primal_target, objective_tol, primal_tol - ) - # This function tests convex nonlinear programs. Test failures here should - # never be allowed, because even local NLP solvers should find the global - # optimum. - MINLPTests.test_nlp_cvx_expr(Optimizer_Uno_ipopt; primal_target, objective_tol, primal_tol) + +# drop the equality-constrained instances +bound_constrained_instances = readlines(joinpath(@__DIR__, "MINLPTests/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MINLPTests/general.txt")) +instances = vcat(bound_constrained_instances, general_instances) +#print("Instances: ", instances) + +# strip the prefix +function strip_prefix(instances, prefix) + cleaned_instances = String[] + for instance in instances + instance = strip(instance) + startswith(instance, prefix) && push!(cleaned_instances, replace(instance, prefix => ""; count = 1)) + end + return cleaned_instances end +primal_target = Dict( + MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, + # If Uno starts writing a .sol file with an infeasible point, change + # this to `=> MOI.INFEASIBLE_POINT` + MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, +) +objective_tol = 1e-4 +primal_tol = 1e-4 + +# This function tests (potentially) non-convex nonlinear programs. The tests +# are meant to be "easy" in the sense that most NLP solvers can find the +# same global minimum, but a test failure can sometimes be allowed. +MINLPTests.test_directory( + "nlp-expr", + Optimizer_Uno_ipopt; + include = strip_prefix(instances, "nlp_expr_"), + primal_target, objective_tol, primal_tol +) +# This function tests convex nonlinear programs. Test failures here should +# never be allowed, because even local NLP solvers should find the global +# optimum. +MINLPTests.test_directory( + "nlp-cvx-expr", + Optimizer_Uno_ipopt; + include = strip_prefix(instances, "nlp_cvx_expr_"), + primal_target, objective_tol, primal_tol +) + # This testset runs the full gamut of MOI.Test.runtests. There are a number of # tests in here with weird edge cases, so a variety of exclusions are expected. + +# drop the equality-constrained instances +bound_constrained_instances = readlines(joinpath(@__DIR__, "MOI/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MOI/general.txt")) +instances = vcat(bound_constrained_instances, general_instances) +#print("Instances with inequality constraints: ", instances) + @testset "MathOptInterface.test" begin optimizer = MOI.instantiate( Optimizer_Uno_ipopt; @@ -83,6 +106,7 @@ end MOI.DualObjectiveValue, ], ); + include = [Regex("^" * instance * "\$") for instance in instances], # exact match exclude = [ # ================================================================== # The following tests are bugs. diff --git a/.github/julia/runtests_uno_ipopt_mumps_identity.jl b/.github/julia/runtests_uno_ipopt_mumps_identity.jl index f9bd09aa0..4c4cd9761 100644 --- a/.github/julia/runtests_uno_ipopt_mumps_identity.jl +++ b/.github/julia/runtests_uno_ipopt_mumps_identity.jl @@ -25,37 +25,64 @@ end Optimizer_Uno_ipopt() = Optimizer(["logger=SILENT", "preset=ipopt", "linear_solver=MUMPS", "hessian_model=identity", "unbounded_objective_threshold=-1e15"]) # This testset runs https://github.com/jump-dev/MINLPTests.jl -@testset "MINLPTests" begin - primal_target = Dict( - MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, - # If Uno starts writing a .sol file with an infeasible point, change - # this to `=> MOI.INFEASIBLE_POINT` - MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, - ) - objective_tol = 1e-4 - primal_tol = 1e-4 - # This function tests (potentially) non-convex nonlinear programs. The tests - # are meant to be "easy" in the sense that most NLP solvers can find the - # same global minimum, but a test failure can sometimes be allowed. - MINLPTests.test_nlp_expr( - Optimizer_Uno_ipopt; - exclude = [ - # Okay to exclude forever: AmplNLWriter does not support - # user-defined functions. - "006_010", - # Remove once https://github.com/cvanaret/Uno/issues/38 is fixed - "007_010", - ], - primal_target, objective_tol, primal_tol - ) - # This function tests convex nonlinear programs. Test failures here should - # never be allowed, because even local NLP solvers should find the global - # optimum. - MINLPTests.test_nlp_cvx_expr(Optimizer_Uno_ipopt; primal_target, objective_tol, primal_tol) + +# drop the equality-constrained instances and the LPs +bound_constrained_instances = readlines(joinpath(@__DIR__, "MINLPTests/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MINLPTests/general.txt")) +NLP_instances = readlines(joinpath(@__DIR__, "MINLPTests/NLP.txt")) +instances = vcat(bound_constrained_instances, general_instances) +instances = intersect(instances, NLP_instances) +#print("Instances: ", instances) + +# strip the prefix +function strip_prefix(instances, prefix) + cleaned_instances = String[] + for instance in instances + instance = strip(instance) + startswith(instance, prefix) && push!(cleaned_instances, replace(instance, prefix => ""; count = 1)) + end + return cleaned_instances end +primal_target = Dict( + MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, + # If Uno starts writing a .sol file with an infeasible point, change + # this to `=> MOI.INFEASIBLE_POINT` + MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, +) +objective_tol = 1e-4 +primal_tol = 1e-4 + +# This function tests (potentially) non-convex nonlinear programs. The tests +# are meant to be "easy" in the sense that most NLP solvers can find the +# same global minimum, but a test failure can sometimes be allowed. +MINLPTests.test_directory( + "nlp-expr", + Optimizer_Uno_ipopt; + include = strip_prefix(instances, "nlp_expr_"), + primal_target, objective_tol, primal_tol +) +# This function tests convex nonlinear programs. Test failures here should +# never be allowed, because even local NLP solvers should find the global +# optimum. +MINLPTests.test_directory( + "nlp-cvx-expr", + Optimizer_Uno_ipopt; + include = strip_prefix(instances, "nlp_cvx_expr_"), + primal_target, objective_tol, primal_tol +) + # This testset runs the full gamut of MOI.Test.runtests. There are a number of # tests in here with weird edge cases, so a variety of exclusions are expected. + +# drop the equality-constrained instances and the LPs +bound_constrained_instances = readlines(joinpath(@__DIR__, "MOI/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MOI/general.txt")) +NLP_instances = readlines(joinpath(@__DIR__, "MOI/NLP.txt")) +instances = vcat(bound_constrained_instances, general_instances) +instances = intersect(instances, NLP_instances) +#print("Instances: ", instances) + @testset "MathOptInterface.test" begin optimizer = MOI.instantiate( Optimizer_Uno_ipopt; @@ -83,6 +110,7 @@ end MOI.DualObjectiveValue, ], ); + include = [Regex("^" * instance * "\$") for instance in instances], # exact match exclude = [ # ================================================================== # The following tests are bugs. diff --git a/.github/julia/runtests_uno_ipopt_mumps_lbfgs.jl b/.github/julia/runtests_uno_ipopt_mumps_lbfgs.jl index 45a6f2488..61afdf600 100644 --- a/.github/julia/runtests_uno_ipopt_mumps_lbfgs.jl +++ b/.github/julia/runtests_uno_ipopt_mumps_lbfgs.jl @@ -25,104 +25,139 @@ end Optimizer_Uno_ipopt() = Optimizer(["logger=SILENT", "preset=ipopt", "linear_solver=MUMPS", "hessian_model=LBFGS", "unbounded_objective_threshold=-1e15"]) # This testset runs https://github.com/jump-dev/MINLPTests.jl -@testset "MINLPTests" begin - primal_target = Dict( - MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, - # If Uno starts writing a .sol file with an infeasible point, change - # this to `=> MOI.INFEASIBLE_POINT` - MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, + +# drop the equality-constrained instances and the LPs +bound_constrained_instances = readlines(joinpath(@__DIR__, "MINLPTests/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MINLPTests/general.txt")) +NLP_instances = readlines(joinpath(@__DIR__, "MINLPTests/NLP.txt")) +instances = vcat(bound_constrained_instances, general_instances) +instances = intersect(instances, NLP_instances) +#print("Instances: ", instances) + +# strip the prefix +function strip_prefix(instances, prefix) + cleaned_instances = String[] + for instance in instances + instance = strip(instance) + startswith(instance, prefix) && push!(cleaned_instances, replace(instance, prefix => ""; count = 1)) + end + return cleaned_instances +end + +primal_target = Dict( + MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, + # If Uno starts writing a .sol file with an infeasible point, change + # this to `=> MOI.INFEASIBLE_POINT` + MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, +) +objective_tol = 1e-4 +primal_tol = 1e-4 + +# This function tests (potentially) non-convex nonlinear programs. The tests +# are meant to be "easy" in the sense that most NLP solvers can find the +# same global minimum, but a test failure can sometimes be allowed. +nlp_expr_instances = strip_prefix(instances, "nlp_expr_") +if !isempty(nlp_expr_instances) + MINLPTests.test_directory( + "nlp-expr", + Optimizer_Uno_ipopt; + include = nlp_expr_instances, + primal_target, objective_tol, primal_tol ) - objective_tol = 1e-4 - primal_tol = 1e-4 - # This function tests (potentially) non-convex nonlinear programs. The tests - # are meant to be "easy" in the sense that most NLP solvers can find the - # same global minimum, but a test failure can sometimes be allowed. - MINLPTests.test_nlp_expr( +end +# This function tests convex nonlinear programs. Test failures here should +# never be allowed, because even local NLP solvers should find the global +# optimum. +nlp_cvx_expr_instances = strip_prefix(instances, "nlp_cvx_expr_") +if !isempty(nlp_cvx_expr_instances) + MINLPTests.test_directory( + "nlp-cvx-expr", Optimizer_Uno_ipopt; - exclude = [ - # Okay to exclude forever: AmplNLWriter does not support - # user-defined functions. - "006_010", - # Remove once https://github.com/cvanaret/Uno/issues/38 is fixed - "007_010", - ], + include = nlp_cvx_expr_instances, primal_target, objective_tol, primal_tol ) - # This function tests convex nonlinear programs. Test failures here should - # never be allowed, because even local NLP solvers should find the global - # optimum. - MINLPTests.test_nlp_cvx_expr(Optimizer_Uno_ipopt; primal_target, objective_tol, primal_tol) end # This testset runs the full gamut of MOI.Test.runtests. There are a number of # tests in here with weird edge cases, so a variety of exclusions are expected. -@testset "MathOptInterface.test" begin - optimizer = MOI.instantiate( - Optimizer_Uno_ipopt; - with_cache_type = Float64, - with_bridge_type = Float64, - ) - MOI.Test.runtests( - optimizer, - MOI.Test.Config( - # These are pretty loose tolerances so that all tests pass. There - # are few tests with weird numerics. If tests fail because of - # tolerances, it might be okay to make these looser, or you could - # tighten the tolerances used by Uno. - atol = 1e-4, - rtol = 1e-4, - optimal_status = MOI.LOCALLY_SOLVED, - infeasible_status = MOI.LOCALLY_INFEASIBLE, - exclude = Any[ - # It's okay to exclude BasisStatus, since AmplNLWriter doesn't - # support this information, so too with ObjectiveBound, since - # Uno is a local NLP solver. - MOI.VariableBasisStatus, - MOI.ConstraintBasisStatus, - MOI.ObjectiveBound, - MOI.DualObjectiveValue, + +# drop the equality-constrained instances and the LPs +bound_constrained_instances = readlines(joinpath(@__DIR__, "MOI/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MOI/general.txt")) +NLP_instances = readlines(joinpath(@__DIR__, "MOI/NLP.txt")) +instances = vcat(bound_constrained_instances, general_instances) +instances = intersect(instances, NLP_instances) +MOI_instances = [Regex("^" * instance * "\$") for instance in instances] # exact match +#print("Instances: ", instances) + +if !isempty(MOI_instances) + @testset "MathOptInterface.test" begin + optimizer = MOI.instantiate( + Optimizer_Uno_ipopt; + with_cache_type = Float64, + with_bridge_type = Float64, + ) + MOI.Test.runtests( + optimizer, + MOI.Test.Config( + # These are pretty loose tolerances so that all tests pass. There + # are few tests with weird numerics. If tests fail because of + # tolerances, it might be okay to make these looser, or you could + # tighten the tolerances used by Uno. + atol = 1e-4, + rtol = 1e-4, + optimal_status = MOI.LOCALLY_SOLVED, + infeasible_status = MOI.LOCALLY_INFEASIBLE, + exclude = Any[ + # It's okay to exclude BasisStatus, since AmplNLWriter doesn't + # support this information, so too with ObjectiveBound, since + # Uno is a local NLP solver. + MOI.VariableBasisStatus, + MOI.ConstraintBasisStatus, + MOI.ObjectiveBound, + MOI.DualObjectiveValue, + ], + ); + include = MOI_instances, + exclude = [ + # ================================================================== + # The following tests are bugs. + # + # We should fix issues in Uno, and then try removing these lines. + # + # These tests return OTHER_LIMIT instead of LOCALLY_INFEASIBLE. It + # might be acceptable to leave this as-is, but it would be better to + # fix. + r"^test_conic_NormInfinityCone_INFEASIBLE$", + r"^test_conic_NormOneCone_INFEASIBLE$", + r"^test_conic_linear_INFEASIBLE$", + r"^test_conic_linear_INFEASIBLE_2$", + r"^test_linear_INFEASIBLE$", + r"^test_linear_INFEASIBLE_2$", + r"^test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_", + # this test passes with exact Hessian but fails with L-BFGS Hessian + # OK to exclude for now, but should be investigated + r"^test_objective_qp_ObjectiveFunction_edge_cases", + # ================================================================== + # The following tests are okay to exclude forever. + # + # Uno does not support integrality, and AmplNLWriter has no way of + # telling if a particular binary supports integers or not (it + # defaults to assuming yes). + "Indicator", + r"[Ii]nteger", + "Semicontinuous", + "Semiinteger", + "SOS1", + "SOS2", + "ZeroOne", + r"^test_cpsat_", + r"^test_attribute_SolverVersion$", + r"^test_nonlinear_invalid$", + r"^test_basic_VectorNonlinearFunction_", + # MPEC instances + "_complementarity", ], - ); - exclude = [ - # ================================================================== - # The following tests are bugs. - # - # We should fix issues in Uno, and then try removing these lines. - # - # These tests return OTHER_LIMIT instead of LOCALLY_INFEASIBLE. It - # might be acceptable to leave this as-is, but it would be better to - # fix. - r"^test_conic_NormInfinityCone_INFEASIBLE$", - r"^test_conic_NormOneCone_INFEASIBLE$", - r"^test_conic_linear_INFEASIBLE$", - r"^test_conic_linear_INFEASIBLE_2$", - r"^test_linear_INFEASIBLE$", - r"^test_linear_INFEASIBLE_2$", - r"^test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_", - # this test passes with exact Hessian but fails with L-BFGS Hessian - # OK to exclude for now, but should be investigated - r"^test_objective_qp_ObjectiveFunction_edge_cases", - # ================================================================== - # The following tests are okay to exclude forever. - # - # Uno does not support integrality, and AmplNLWriter has no way of - # telling if a particular binary supports integers or not (it - # defaults to assuming yes). - "Indicator", - r"[Ii]nteger", - "Semicontinuous", - "Semiinteger", - "SOS1", - "SOS2", - "ZeroOne", - r"^test_cpsat_", - r"^test_attribute_SolverVersion$", - r"^test_nonlinear_invalid$", - r"^test_basic_VectorNonlinearFunction_", - # MPEC instances - "_complementarity", - # linear instances (doesn't make sense to use a quasi-Newton Hessian) - "_linear", - ], - ) -end + ) + end +end \ No newline at end of file diff --git a/.github/julia/runtests_uno_ipopt_ssids.jl b/.github/julia/runtests_uno_ipopt_ssids.jl index a105b0162..cc93d8ecf 100644 --- a/.github/julia/runtests_uno_ipopt_ssids.jl +++ b/.github/julia/runtests_uno_ipopt_ssids.jl @@ -25,37 +25,60 @@ end Optimizer_Uno_ipopt() = Optimizer(["logger=SILENT", "preset=ipopt", "linear_solver=SSIDS", "unbounded_objective_threshold=-1e15"]) # This testset runs https://github.com/jump-dev/MINLPTests.jl -@testset "MINLPTests" begin - primal_target = Dict( - MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, - # If Uno starts writing a .sol file with an infeasible point, change - # this to `=> MOI.INFEASIBLE_POINT` - MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, - ) - objective_tol = 1e-4 - primal_tol = 1e-4 - # This function tests (potentially) non-convex nonlinear programs. The tests - # are meant to be "easy" in the sense that most NLP solvers can find the - # same global minimum, but a test failure can sometimes be allowed. - MINLPTests.test_nlp_expr( - Optimizer_Uno_ipopt; - exclude = [ - # Okay to exclude forever: AmplNLWriter does not support - # user-defined functions. - "006_010", - # Remove once https://github.com/cvanaret/Uno/issues/38 is fixed - "007_010", - ], - primal_target, objective_tol, primal_tol - ) - # This function tests convex nonlinear programs. Test failures here should - # never be allowed, because even local NLP solvers should find the global - # optimum. - MINLPTests.test_nlp_cvx_expr(Optimizer_Uno_ipopt; primal_target, objective_tol, primal_tol) + +# drop the equality-constrained instances +bound_constrained_instances = readlines(joinpath(@__DIR__, "MINLPTests/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MINLPTests/general.txt")) +instances = vcat(bound_constrained_instances, general_instances) +#print("Instances: ", instances) + +# strip the prefix +function strip_prefix(instances, prefix) + cleaned_instances = String[] + for instance in instances + instance = strip(instance) + startswith(instance, prefix) && push!(cleaned_instances, replace(instance, prefix => ""; count = 1)) + end + return cleaned_instances end +primal_target = Dict( + MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, + # If Uno starts writing a .sol file with an infeasible point, change + # this to `=> MOI.INFEASIBLE_POINT` + MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, +) +objective_tol = 1e-4 +primal_tol = 1e-4 + +# This function tests (potentially) non-convex nonlinear programs. The tests +# are meant to be "easy" in the sense that most NLP solvers can find the +# same global minimum, but a test failure can sometimes be allowed. +MINLPTests.test_directory( + "nlp-expr", + Optimizer_Uno_ipopt; + include = strip_prefix(instances, "nlp_expr_"), + primal_target, objective_tol, primal_tol +) +# This function tests convex nonlinear programs. Test failures here should +# never be allowed, because even local NLP solvers should find the global +# optimum. +MINLPTests.test_directory( + "nlp-cvx-expr", + Optimizer_Uno_ipopt; + include = strip_prefix(instances, "nlp_cvx_expr_"), + primal_target, objective_tol, primal_tol +) + # This testset runs the full gamut of MOI.Test.runtests. There are a number of # tests in here with weird edge cases, so a variety of exclusions are expected. + +# drop the equality-constrained instances +bound_constrained_instances = readlines(joinpath(@__DIR__, "MOI/bound-constrained.txt")) +general_instances = readlines(joinpath(@__DIR__, "MOI/general.txt")) +instances = vcat(bound_constrained_instances, general_instances) +#print("Instances with inequality constraints: ", instances) + @testset "MathOptInterface.test" begin optimizer = MOI.instantiate( Optimizer_Uno_ipopt; @@ -83,6 +106,7 @@ end MOI.DualObjectiveValue, ], ); + include = [Regex("^" * instance * "\$") for instance in instances], # exact match exclude = [ # ================================================================== # The following tests are bugs. diff --git a/.github/julia/runtests_uno_pure_sqp_mumps.jl b/.github/julia/runtests_uno_pure_sqp_mumps.jl new file mode 100644 index 000000000..1e822c8b5 --- /dev/null +++ b/.github/julia/runtests_uno_pure_sqp_mumps.jl @@ -0,0 +1,162 @@ +# Copyright (c) 2018-2026: Charlie Vanaret and contributors +# +# Use of this source code is governed by an MIT-style license that can be found +# in the LICENSE.md file or at https://opensource.org/licenses/MIT. + +# For help with this file, please contact `@odow` on GitHub. + +using Test + +import AmplNLWriter +import MathOptInterface as MOI +import MINLPTests +import Uno_jll + +""" + Optimizer() + +Create a new `AmplNLWriter.Optimizer` object that uses Uno as the backing +solver. +""" +function Optimizer(options) + return AmplNLWriter.Optimizer(Uno_jll.amplexe, options) +end + +Optimizer_Uno_sqp() = Optimizer(["logger=SILENT", "preset=ipopt", "linear_solver=MUMPS", + "unbounded_objective_threshold=-1e15"]) + +# This testset runs https://github.com/jump-dev/MINLPTests.jl + +# keep only the equality-constrained instances +instances = readlines(joinpath(@__DIR__, "MINLPTests/equality-constrained.txt")) +NLP_instances = readlines(joinpath(@__DIR__, "MINLPTests/NLP.txt")) +exclude = [ + # Remove once https://github.com/cvanaret/Uno/issues/38 is fixed + "nlp_expr_007_010" +] +instances = setdiff(instances, exclude) +instances = intersect(instances, NLP_instances) +#print("Instances: ", instances) + +# strip the prefix +function strip_prefix(instances, prefix) + cleaned_instances = String[] + for instance in instances + instance = strip(instance) + startswith(instance, prefix) && push!(cleaned_instances, replace(instance, prefix => ""; count = 1)) + end + return cleaned_instances +end + +primal_target = Dict( + MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, + # If Uno starts writing a .sol file with an infeasible point, change + # this to `=> MOI.INFEASIBLE_POINT` + MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, +) +objective_tol = 1e-4 +primal_tol = 1e-4 + +# This function tests (potentially) non-convex nonlinear programs. The tests +# are meant to be "easy" in the sense that most NLP solvers can find the +# same global minimum, but a test failure can sometimes be allowed. +nlp_expr_instances = strip_prefix(instances, "nlp_expr_") +if !isempty(nlp_expr_instances) + MINLPTests.test_directory( + "nlp-expr", + Optimizer_Uno_sqp; + include = nlp_expr_instances, + primal_target, objective_tol, primal_tol + ) +end +# This function tests convex nonlinear programs. Test failures here should +# never be allowed, because even local NLP solvers should find the global +# optimum. +nlp_cvx_expr_instances = strip_prefix(instances, "nlp_cvx_expr_") +if !isempty(nlp_cvx_expr_instances) + MINLPTests.test_directory( + "nlp-cvx-expr", + Optimizer_Uno_sqp; + include = nlp_cvx_expr_instances, + primal_target, objective_tol, primal_tol + ) +end + +# This testset runs the full gamut of MOI.Test.runtests. There are a number of +# tests in here with weird edge cases, so a variety of exclusions are expected. + +# keep only the equality-constrained instances +instances = readlines(joinpath(@__DIR__, "MOI/equality-constrained.txt")) +NLP_instances = readlines(joinpath(@__DIR__, "MOI/NLP.txt")) +instances = intersect(instances, NLP_instances) +MOI_instances = [Regex("^" * instance * "\$") for instance in instances] # exact match +#print("Instances: ", instances) + +if !isempty(MOI_instances) + @testset "MathOptInterface.test" begin + optimizer = MOI.instantiate( + Optimizer_Uno_sqp; + with_cache_type = Float64, + with_bridge_type = Float64, + ) + MOI.Test.runtests( + optimizer, + MOI.Test.Config( + # These are pretty loose tolerances so that all tests pass. There + # are few tests with weird numerics. If tests fail because of + # tolerances, it might be okay to make these looser, or you could + # tighten the tolerances used by Uno. + atol = 1e-4, + rtol = 1e-4, + optimal_status = MOI.LOCALLY_SOLVED, + infeasible_status = MOI.LOCALLY_INFEASIBLE, + exclude = Any[ + # It's okay to exclude BasisStatus, since AmplNLWriter doesn't + # support this information, so too with ObjectiveBound, since + # Uno is a local NLP solver. + MOI.VariableBasisStatus, + MOI.ConstraintBasisStatus, + MOI.ObjectiveBound, + MOI.DualObjectiveValue, + ], + ); + include = MOI_instances, + exclude = [ + # ================================================================== + # The following tests are bugs. + # + # We should fix issues in Uno, and then try removing these lines. + # + # These tests return OTHER_LIMIT instead of LOCALLY_INFEASIBLE. It + # might be acceptable to leave this as-is, but it would be better to + # fix. + r"^test_conic_NormInfinityCone_INFEASIBLE$", + r"^test_conic_NormOneCone_INFEASIBLE$", + r"^test_conic_linear_INFEASIBLE$", + r"^test_conic_linear_INFEASIBLE_2$", + r"^test_linear_INFEASIBLE$", + r"^test_linear_INFEASIBLE_2$", + r"^test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_", + # ================================================================== + # The following tests are okay to exclude forever. + # + # Uno does not support integrality, and AmplNLWriter has no way of + # telling if a particular binary supports integers or not (it + # defaults to assuming yes). + "Indicator", + r"[Ii]nteger", + "Semicontinuous", + "Semiinteger", + "SOS1", + "SOS2", + "ZeroOne", + r"^test_cpsat_", + r"^test_attribute_SolverVersion$", + r"^test_nonlinear_invalid$", + r"^test_basic_VectorNonlinearFunction_", + # MPEC instances + "_complementarity", + ], + ) + end +end \ No newline at end of file diff --git a/.github/julia/runtests_uno_unconstrained_lbfgs_mumps.jl b/.github/julia/runtests_uno_unconstrained_lbfgs_mumps.jl new file mode 100644 index 000000000..5b55deb67 --- /dev/null +++ b/.github/julia/runtests_uno_unconstrained_lbfgs_mumps.jl @@ -0,0 +1,158 @@ +# Copyright (c) 2018-2026: Charlie Vanaret and contributors +# +# Use of this source code is governed by an MIT-style license that can be found +# in the LICENSE.md file or at https://opensource.org/licenses/MIT. + +# For help with this file, please contact `@odow` on GitHub. + +using Test + +import AmplNLWriter +import MathOptInterface as MOI +import MINLPTests +import Uno_jll + +""" + Optimizer() + +Create a new `AmplNLWriter.Optimizer` object that uses Uno as the backing +solver. +""" +function Optimizer(options) + return AmplNLWriter.Optimizer(Uno_jll.amplexe, options) +end + +Optimizer_Uno_ipopt() = Optimizer(["logger=SILENT", "preset=ipopt", "hessian_model=LBFGS", "linear_solver=MUMPS"]) + +# This testset runs https://github.com/jump-dev/MINLPTests.jl + +# keep only the unconstrained NLP instances +instances = readlines(joinpath(@__DIR__, "MINLPTests/unconstrained.txt")) +NLP_instances = readlines(joinpath(@__DIR__, "MINLPTests/NLP.txt")) +instances = intersect(instances, NLP_instances) +#print("Instances: ", instances) + +# strip the prefix +function strip_prefix(instances, prefix) + cleaned_instances = String[] + for instance in instances + instance = strip(instance) + startswith(instance, prefix) && push!(cleaned_instances, replace(instance, prefix => ""; count = 1)) + end + return cleaned_instances +end + +primal_target = Dict( + MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, + # If Uno starts writing a .sol file with an infeasible point, change + # this to `=> MOI.INFEASIBLE_POINT` + MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, +) +objective_tol = 1e-4 +primal_tol = 1e-4 + +# This function tests (potentially) non-convex nonlinear programs. The tests +# are meant to be "easy" in the sense that most NLP solvers can find the +# same global minimum, but a test failure can sometimes be allowed. +nlp_expr_instances = strip_prefix(instances, "nlp_expr_") +if !isempty(nlp_expr_instances) + MINLPTests.test_directory( + "nlp-expr", + Optimizer_Uno_ipopt; + # debug=true, + include = nlp_expr_instances, + primal_target, objective_tol, primal_tol + ) +end +# This function tests convex nonlinear programs. Test failures here should +# never be allowed, because even local NLP solvers should find the global +# optimum. +nlp_cvx_expr_instances = strip_prefix(instances, "nlp_cvx_expr_") +if !isempty(nlp_cvx_expr_instances) + MINLPTests.test_directory( + "nlp-cvx-expr", + Optimizer_Uno_ipopt; + # debug = true, + include = nlp_cvx_expr_instances, + primal_target, objective_tol, primal_tol + ) +end + +# This testset runs the full gamut of MOI.Test.runtests. There are a number of +# tests in here with weird edge cases, so a variety of exclusions are expected. + +# keep only the unconstrained NLP instances +instances = readlines(joinpath(@__DIR__, "MOI/unconstrained.txt")) +NLP_instances = readlines(joinpath(@__DIR__, "MOI/NLP.txt")) +instances = intersect(instances, NLP_instances) +MOI_instances = [Regex("^" * instance * "\$") for instance in instances] # exact match +#print("Instances: ", instances) + +if !isempty(MOI_instances) + @testset "MathOptInterface.test" begin + optimizer = MOI.instantiate( + Optimizer_Uno_ipopt; + with_cache_type = Float64, + with_bridge_type = Float64, + ) + MOI.Test.runtests( + optimizer, + MOI.Test.Config( + # These are pretty loose tolerances so that all tests pass. There + # are few tests with weird numerics. If tests fail because of + # tolerances, it might be okay to make these looser, or you could + # tighten the tolerances used by Uno. + atol = 1e-4, + rtol = 1e-4, + optimal_status = MOI.LOCALLY_SOLVED, + infeasible_status = MOI.LOCALLY_INFEASIBLE, + exclude = Any[ + # It's okay to exclude BasisStatus, since AmplNLWriter doesn't + # support this information, so too with ObjectiveBound, since + # Uno is a local NLP solver. + MOI.VariableBasisStatus, + MOI.ConstraintBasisStatus, + MOI.ObjectiveBound, + MOI.DualObjectiveValue, + ], + ); + include = MOI_instances, + exclude = [ + # ================================================================== + # The following tests are bugs. + # + # We should fix issues in Uno, and then try removing these lines. + # + # These tests return OTHER_LIMIT instead of LOCALLY_INFEASIBLE. It + # might be acceptable to leave this as-is, but it would be better to + # fix. + r"^test_conic_NormInfinityCone_INFEASIBLE$", + r"^test_conic_NormOneCone_INFEASIBLE$", + r"^test_conic_linear_INFEASIBLE$", + r"^test_conic_linear_INFEASIBLE_2$", + r"^test_linear_INFEASIBLE$", + r"^test_linear_INFEASIBLE_2$", + r"^test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_", + # ================================================================== + # The following tests are okay to exclude forever. + # + # Uno does not support integrality, and AmplNLWriter has no way of + # telling if a particular binary supports integers or not (it + # defaults to assuming yes). + "Indicator", + r"[Ii]nteger", + "Semicontinuous", + "Semiinteger", + "SOS1", + "SOS2", + "ZeroOne", + r"^test_cpsat_", + r"^test_attribute_SolverVersion$", + r"^test_nonlinear_invalid$", + r"^test_basic_VectorNonlinearFunction_", + # MPEC instances + "_complementarity", + ], + ) + end +end \ No newline at end of file diff --git a/.github/julia/runtests_uno_unconstrained_mumps.jl b/.github/julia/runtests_uno_unconstrained_mumps.jl new file mode 100644 index 000000000..89327de57 --- /dev/null +++ b/.github/julia/runtests_uno_unconstrained_mumps.jl @@ -0,0 +1,154 @@ +# Copyright (c) 2018-2026: Charlie Vanaret and contributors +# +# Use of this source code is governed by an MIT-style license that can be found +# in the LICENSE.md file or at https://opensource.org/licenses/MIT. + +# For help with this file, please contact `@odow` on GitHub. + +using Test + +import AmplNLWriter +import MathOptInterface as MOI +import MINLPTests +import Uno_jll + +""" + Optimizer() + +Create a new `AmplNLWriter.Optimizer` object that uses Uno as the backing +solver. +""" +function Optimizer(options) + return AmplNLWriter.Optimizer(Uno_jll.amplexe, options) +end + +Optimizer_Uno_ipopt() = Optimizer(["logger=SILENT", "preset=ipopt", "hessian_model=exact", "linear_solver=MUMPS"]) + +# This testset runs https://github.com/jump-dev/MINLPTests.jl + +# keep only the unconstrained instances +instances = readlines(joinpath(@__DIR__, "MINLPTests/unconstrained.txt")) +#print("Instances: ", instances) + +# strip the prefix +function strip_prefix(instances, prefix) + cleaned_instances = String[] + for instance in instances + instance = strip(instance) + startswith(instance, prefix) && push!(cleaned_instances, replace(instance, prefix => ""; count = 1)) + end + return cleaned_instances +end + +primal_target = Dict( + MINLPTests.FEASIBLE_PROBLEM => MOI.FEASIBLE_POINT, + # If Uno starts writing a .sol file with an infeasible point, change + # this to `=> MOI.INFEASIBLE_POINT` + MINLPTests.INFEASIBLE_PROBLEM => MOI.NO_SOLUTION, +) +objective_tol = 1e-4 +primal_tol = 1e-4 + +# This function tests (potentially) non-convex nonlinear programs. The tests +# are meant to be "easy" in the sense that most NLP solvers can find the +# same global minimum, but a test failure can sometimes be allowed. +nlp_expr_instances = strip_prefix(instances, "nlp_expr_") +if !isempty(nlp_expr_instances) + MINLPTests.test_directory( + "nlp-expr", + Optimizer_Uno_ipopt; + # debug=true, + include = nlp_expr_instances, + primal_target, objective_tol, primal_tol + ) +end +# This function tests convex nonlinear programs. Test failures here should +# never be allowed, because even local NLP solvers should find the global +# optimum. +nlp_cvx_expr_instances = strip_prefix(instances, "nlp_cvx_expr_") +if !isempty(nlp_cvx_expr_instances) + MINLPTests.test_directory( + "nlp-cvx-expr", + Optimizer_Uno_ipopt; + # debug = true, + include = nlp_cvx_expr_instances, + primal_target, objective_tol, primal_tol + ) +end + +# This testset runs the full gamut of MOI.Test.runtests. There are a number of +# tests in here with weird edge cases, so a variety of exclusions are expected. + +# keep only the unconstrained instances +instances = readlines(joinpath(@__DIR__, "MOI/unconstrained.txt")) +MOI_instances = [Regex("^" * instance * "\$") for instance in instances] # exact match +#print("Instances: ", instances) + +if !isempty(MOI_instances) + @testset "MathOptInterface.test" begin + optimizer = MOI.instantiate( + Optimizer_Uno_ipopt; + with_cache_type = Float64, + with_bridge_type = Float64, + ) + MOI.Test.runtests( + optimizer, + MOI.Test.Config( + # These are pretty loose tolerances so that all tests pass. There + # are few tests with weird numerics. If tests fail because of + # tolerances, it might be okay to make these looser, or you could + # tighten the tolerances used by Uno. + atol = 1e-4, + rtol = 1e-4, + optimal_status = MOI.LOCALLY_SOLVED, + infeasible_status = MOI.LOCALLY_INFEASIBLE, + exclude = Any[ + # It's okay to exclude BasisStatus, since AmplNLWriter doesn't + # support this information, so too with ObjectiveBound, since + # Uno is a local NLP solver. + MOI.VariableBasisStatus, + MOI.ConstraintBasisStatus, + MOI.ObjectiveBound, + MOI.DualObjectiveValue, + ], + ); + include = MOI_instances, + exclude = [ + # ================================================================== + # The following tests are bugs. + # + # We should fix issues in Uno, and then try removing these lines. + # + # These tests return OTHER_LIMIT instead of LOCALLY_INFEASIBLE. It + # might be acceptable to leave this as-is, but it would be better to + # fix. + r"^test_conic_NormInfinityCone_INFEASIBLE$", + r"^test_conic_NormOneCone_INFEASIBLE$", + r"^test_conic_linear_INFEASIBLE$", + r"^test_conic_linear_INFEASIBLE_2$", + r"^test_linear_INFEASIBLE$", + r"^test_linear_INFEASIBLE_2$", + r"^test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_", + # ================================================================== + # The following tests are okay to exclude forever. + # + # Uno does not support integrality, and AmplNLWriter has no way of + # telling if a particular binary supports integers or not (it + # defaults to assuming yes). + "Indicator", + r"[Ii]nteger", + "Semicontinuous", + "Semiinteger", + "SOS1", + "SOS2", + "ZeroOne", + r"^test_cpsat_", + r"^test_attribute_SolverVersion$", + r"^test_nonlinear_invalid$", + r"^test_basic_VectorNonlinearFunction_", + # MPEC instances + "_complementarity", + ], + ) + end +end \ No newline at end of file diff --git a/.github/workflows/julia-tests-ubuntu.yml b/.github/workflows/julia-tests-ubuntu.yml index 4cdd10efe..dbccdeea4 100644 --- a/.github/workflows/julia-tests-ubuntu.yml +++ b/.github/workflows/julia-tests-ubuntu.yml @@ -88,10 +88,11 @@ jobs: strategy: fail-fast: false matrix: - UNO_PRESET: [uno_filtersqp_bqpd, uno_filtersqp_highs, uno_filtersqp_bqpd_identity, uno_filtersqp_bqpd_lsr1, + UNO_PRESET: [uno_filterslp_bqpd, uno_filterslp_highs, uno_filtersqp_bqpd_charlies_instances, + uno_filtersqp_bqpd, uno_filtersqp_highs, uno_filtersqp_bqpd_identity, uno_filtersqp_bqpd_lsr1, uno_filtersqp_bqpd_regularization_tr, uno_filtersqp_bqpd_regularization_ls, uno_filtersqp_bqpd_ls_lbfgs, - uno_ipopt_mumps, uno_ipopt_mumps_lbfgs, uno_ipopt_mumps_identity, uno_ipopt_ssids, uno_filterslp_bqpd, - uno_filterslp_highs, uno_filtersqp_bqpd_charlies_instances] + uno_ipopt_mumps, uno_ipopt_mumps_lbfgs, uno_ipopt_mumps_identity, uno_ipopt_ssids, + uno_pure_sqp_mumps, uno_unconstrained_lbfgs_mumps, uno_unconstrained_mumps] steps: - uses: actions/checkout@v4 @@ -127,4 +128,4 @@ jobs: using Pkg Pkg.instantiate() Pkg.develop(path="/home/runner/.julia/dev/Uno_jll") - include("/home/runner/work/Uno/Uno/.github/julia/runtests_${{matrix.UNO_PRESET}}.jl") + include("/home/runner/work/Uno/Uno/.github/julia/runtests_${{matrix.UNO_PRESET}}.jl") \ No newline at end of file