forked from pz4kybsvg/Conception
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1792 lines
43 KiB
1792 lines
43 KiB
2 years ago
|
load(
|
||
|
"@drake//tools/skylark:drake_cc.bzl",
|
||
|
"drake_cc_binary",
|
||
|
"drake_cc_googletest",
|
||
|
"drake_cc_library",
|
||
|
"drake_cc_package_library",
|
||
|
"drake_cc_test",
|
||
|
)
|
||
|
load(
|
||
|
":defs.bzl",
|
||
|
"drake_cc_optional_googletest",
|
||
|
"drake_cc_optional_library",
|
||
|
"drake_cc_variant_library",
|
||
|
)
|
||
|
load(
|
||
|
"@drake//tools/skylark:test_tags.bzl",
|
||
|
"gurobi_test_tags",
|
||
|
"mosek_test_tags",
|
||
|
)
|
||
|
load("//tools/lint:lint.bzl", "add_lint_tests")
|
||
|
|
||
|
package(default_visibility = ["//visibility:public"])
|
||
|
|
||
|
drake_cc_package_library(
|
||
|
name = "solvers",
|
||
|
visibility = ["//visibility:public"],
|
||
|
deps = [
|
||
|
":aggregate_costs_constraints",
|
||
|
":augmented_lagrangian",
|
||
|
":binding",
|
||
|
":branch_and_bound",
|
||
|
":choose_best_solver",
|
||
|
":clp_solver",
|
||
|
":constraint",
|
||
|
":cost",
|
||
|
":create_constraint",
|
||
|
":create_cost",
|
||
|
":csdp_solver",
|
||
|
":decision_variable",
|
||
|
":equality_constrained_qp_solver",
|
||
|
":evaluator_base",
|
||
|
":function",
|
||
|
":get_program_type",
|
||
|
":gurobi_solver",
|
||
|
":indeterminate",
|
||
|
":integer_inequality_solver",
|
||
|
":integer_optimization_util",
|
||
|
":ipopt_solver",
|
||
|
":linear_system_solver",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_result",
|
||
|
":minimum_value_constraint",
|
||
|
":mixed_integer_optimization_util",
|
||
|
":mixed_integer_rotation_constraint",
|
||
|
":moby_lcp_solver",
|
||
|
":mosek_solver",
|
||
|
":nlopt_solver",
|
||
|
":non_convex_optimization_util",
|
||
|
":osqp_solver",
|
||
|
":program_attribute",
|
||
|
":rotation_constraint",
|
||
|
":scs_solver",
|
||
|
":sdpa_free_format",
|
||
|
":snopt_solver",
|
||
|
":solution_result",
|
||
|
":solve",
|
||
|
":solver_base",
|
||
|
":solver_id",
|
||
|
":solver_interface",
|
||
|
":solver_options",
|
||
|
":solver_type",
|
||
|
":solver_type_converter",
|
||
|
":sos_basis_generator",
|
||
|
":sparse_and_dense_matrix",
|
||
|
":unrevised_lemke_solver",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "augmented_lagrangian",
|
||
|
srcs = ["augmented_lagrangian.cc"],
|
||
|
hdrs = ["augmented_lagrangian.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps = [
|
||
|
":aggregate_costs_constraints",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "integer_inequality_solver",
|
||
|
srcs = ["integer_inequality_solver.cc"],
|
||
|
hdrs = ["integer_inequality_solver.h"],
|
||
|
interface_deps = [
|
||
|
"@eigen",
|
||
|
],
|
||
|
deps = [
|
||
|
"//common:essential",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "sos_basis_generator",
|
||
|
srcs = ["sos_basis_generator.cc"],
|
||
|
hdrs = ["sos_basis_generator.h"],
|
||
|
interface_deps = [
|
||
|
"//common/symbolic:expression",
|
||
|
"//common/symbolic:polynomial",
|
||
|
],
|
||
|
deps = [
|
||
|
":integer_inequality_solver",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "binding",
|
||
|
srcs = [],
|
||
|
hdrs = ["binding.h"],
|
||
|
interface_deps = [
|
||
|
":decision_variable",
|
||
|
":evaluator_base",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "choose_best_solver",
|
||
|
srcs = ["choose_best_solver.cc"],
|
||
|
hdrs = ["choose_best_solver.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
":solver_id",
|
||
|
":solver_interface",
|
||
|
],
|
||
|
deps = [
|
||
|
":clp_solver",
|
||
|
":csdp_solver",
|
||
|
":equality_constrained_qp_solver",
|
||
|
":get_program_type",
|
||
|
":gurobi_solver",
|
||
|
":ipopt_solver",
|
||
|
":linear_system_solver",
|
||
|
":moby_lcp_solver",
|
||
|
":mosek_solver",
|
||
|
":nlopt_solver",
|
||
|
":osqp_solver",
|
||
|
":scs_solver",
|
||
|
":snopt_solver",
|
||
|
"@abseil_cpp_internal//absl/container:inlined_vector",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "evaluator_base",
|
||
|
srcs = ["evaluator_base.cc"],
|
||
|
hdrs = ["evaluator_base.h"],
|
||
|
interface_deps = [
|
||
|
"//common:essential",
|
||
|
"//common:polynomial",
|
||
|
"//common/symbolic:expression",
|
||
|
"//math:autodiff",
|
||
|
":function",
|
||
|
],
|
||
|
deps = [
|
||
|
"//common:nice_type_name",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "constraint",
|
||
|
srcs = ["constraint.cc"],
|
||
|
hdrs = ["constraint.h"],
|
||
|
interface_deps = [
|
||
|
":decision_variable",
|
||
|
":evaluator_base",
|
||
|
":sparse_and_dense_matrix",
|
||
|
"//common:essential",
|
||
|
"//common:polynomial",
|
||
|
"//common/symbolic:expression",
|
||
|
],
|
||
|
deps = [
|
||
|
"//common/symbolic:polynomial",
|
||
|
"//math:gradient",
|
||
|
"//math:matrix_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "minimum_value_constraint",
|
||
|
srcs = ["minimum_value_constraint.cc"],
|
||
|
hdrs = ["minimum_value_constraint.h"],
|
||
|
interface_deps = [
|
||
|
":constraint",
|
||
|
],
|
||
|
deps = [
|
||
|
"//math:gradient",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "cost",
|
||
|
srcs = ["cost.cc"],
|
||
|
hdrs = ["cost.h"],
|
||
|
interface_deps = [
|
||
|
":evaluator_base",
|
||
|
],
|
||
|
deps = [
|
||
|
"//math:gradient",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "create_constraint",
|
||
|
srcs = ["create_constraint.cc"],
|
||
|
hdrs = ["create_constraint.h"],
|
||
|
interface_deps = [
|
||
|
"//common/symbolic:expression",
|
||
|
":binding",
|
||
|
":constraint",
|
||
|
],
|
||
|
deps = [
|
||
|
"//common/symbolic:polynomial",
|
||
|
"//math:quadratic_form",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "create_cost",
|
||
|
srcs = ["create_cost.cc"],
|
||
|
hdrs = ["create_cost.h"],
|
||
|
interface_deps = [
|
||
|
":binding",
|
||
|
":cost",
|
||
|
"//common/symbolic:expression",
|
||
|
],
|
||
|
deps = [
|
||
|
"//common:polynomial",
|
||
|
"//common:unused",
|
||
|
"//common/symbolic:polynomial",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "decision_variable",
|
||
|
srcs = ["decision_variable.cc"],
|
||
|
hdrs = ["decision_variable.h"],
|
||
|
interface_deps = [
|
||
|
"//common/symbolic:expression",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "function",
|
||
|
srcs = [],
|
||
|
hdrs = ["function.h"],
|
||
|
interface_deps = [
|
||
|
"//common:essential",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "get_program_type",
|
||
|
srcs = ["get_program_type.cc"],
|
||
|
hdrs = ["get_program_type.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "solver_type",
|
||
|
hdrs = ["solver_type.h"],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "solver_id",
|
||
|
srcs = ["solver_id.cc"],
|
||
|
hdrs = ["solver_id.h"],
|
||
|
deps = [
|
||
|
"//common:essential",
|
||
|
"//common:hash",
|
||
|
"//common:reset_after_move",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "solver_options",
|
||
|
srcs = [
|
||
|
"common_solver_option.cc",
|
||
|
"solver_options.cc",
|
||
|
],
|
||
|
hdrs = [
|
||
|
"common_solver_option.h",
|
||
|
"solver_options.h",
|
||
|
],
|
||
|
interface_deps = [
|
||
|
":solver_id",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "indeterminate",
|
||
|
srcs = ["indeterminate.cc"],
|
||
|
hdrs = ["indeterminate.h"],
|
||
|
interface_deps = [
|
||
|
"//common/symbolic:expression",
|
||
|
],
|
||
|
deps = [
|
||
|
"//solvers:decision_variable",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "solver_type_converter",
|
||
|
srcs = ["solver_type_converter.cc"],
|
||
|
hdrs = ["solver_type_converter.h"],
|
||
|
interface_deps = [
|
||
|
":solver_id",
|
||
|
":solver_type",
|
||
|
"//common:essential",
|
||
|
],
|
||
|
deps = [
|
||
|
":clp_solver",
|
||
|
":csdp_solver",
|
||
|
":equality_constrained_qp_solver",
|
||
|
":gurobi_solver",
|
||
|
":ipopt_solver",
|
||
|
":linear_system_solver",
|
||
|
":moby_lcp_solver",
|
||
|
":mosek_solver",
|
||
|
":nlopt_solver",
|
||
|
":osqp_solver",
|
||
|
":scs_solver",
|
||
|
":snopt_solver",
|
||
|
":unrevised_lemke_solver",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "mathematical_program",
|
||
|
srcs = ["mathematical_program.cc"],
|
||
|
hdrs = ["mathematical_program.h"],
|
||
|
interface_deps = [
|
||
|
":binding",
|
||
|
":create_constraint",
|
||
|
":create_cost",
|
||
|
":decision_variable",
|
||
|
":function",
|
||
|
":indeterminate",
|
||
|
":program_attribute",
|
||
|
":solver_options",
|
||
|
"//common:autodiff",
|
||
|
"//common:essential",
|
||
|
"//common:polynomial",
|
||
|
"//common/symbolic:expression",
|
||
|
"//common/symbolic:monomial_util",
|
||
|
"//common/symbolic:polynomial",
|
||
|
],
|
||
|
deps = [
|
||
|
":sos_basis_generator",
|
||
|
"//math:matrix_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "mathematical_program_result",
|
||
|
srcs = ["mathematical_program_result.cc"],
|
||
|
hdrs = ["mathematical_program_result.h"],
|
||
|
interface_deps = [
|
||
|
":binding",
|
||
|
":constraint",
|
||
|
":mathematical_program",
|
||
|
":solution_result",
|
||
|
":solver_id",
|
||
|
"//common:value",
|
||
|
"//common/symbolic:expression",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "solver_interface",
|
||
|
srcs = ["solver_interface.cc"],
|
||
|
hdrs = ["solver_interface.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_result",
|
||
|
":solution_result",
|
||
|
":solver_id",
|
||
|
":solver_options",
|
||
|
"//common:essential",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "aggregate_costs_constraints",
|
||
|
srcs = ["aggregate_costs_constraints.cc"],
|
||
|
hdrs = ["aggregate_costs_constraints.h"],
|
||
|
interface_deps = [
|
||
|
":binding",
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "branch_and_bound",
|
||
|
srcs = ["branch_and_bound.cc"],
|
||
|
hdrs = ["branch_and_bound.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_result",
|
||
|
],
|
||
|
deps = [
|
||
|
":choose_best_solver",
|
||
|
":gurobi_solver",
|
||
|
":scs_solver",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "non_convex_optimization_util",
|
||
|
srcs = ["non_convex_optimization_util.cc"],
|
||
|
hdrs = ["non_convex_optimization_util.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps = [
|
||
|
":solve",
|
||
|
"//math:quadratic_form",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "integer_optimization_util",
|
||
|
srcs = ["integer_optimization_util.cc"],
|
||
|
hdrs = ["integer_optimization_util.h"],
|
||
|
interface_deps = [
|
||
|
":binding",
|
||
|
":constraint",
|
||
|
],
|
||
|
deps = [
|
||
|
":create_constraint",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "rotation_constraint",
|
||
|
srcs = ["rotation_constraint.cc"],
|
||
|
hdrs = ["rotation_constraint.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "mixed_integer_rotation_constraint",
|
||
|
srcs = [
|
||
|
"mixed_integer_rotation_constraint.cc",
|
||
|
"mixed_integer_rotation_constraint_internal.cc",
|
||
|
],
|
||
|
hdrs = [
|
||
|
"mixed_integer_rotation_constraint.h",
|
||
|
"mixed_integer_rotation_constraint_internal.h",
|
||
|
],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
":mixed_integer_optimization_util",
|
||
|
],
|
||
|
deps = [
|
||
|
":integer_optimization_util",
|
||
|
":solve",
|
||
|
"//common/symbolic:replace_bilinear_terms",
|
||
|
"//math:gray_code",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "program_attribute",
|
||
|
srcs = ["program_attribute.cc"],
|
||
|
hdrs = ["program_attribute.h"],
|
||
|
interface_deps = [
|
||
|
"//common:hash",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "sparse_and_dense_matrix",
|
||
|
srcs = ["sparse_and_dense_matrix.cc"],
|
||
|
hdrs = ["sparse_and_dense_matrix.h"],
|
||
|
interface_deps = [
|
||
|
"//common:essential",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "rotation_constraint_visualization",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/rotation_constraint_visualization.cc"],
|
||
|
hdrs = ["test/rotation_constraint_visualization.h"],
|
||
|
deps = [
|
||
|
":mixed_integer_rotation_constraint",
|
||
|
":rotation_constraint",
|
||
|
"//common/proto:call_python",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "add_solver_util",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/add_solver_util.cc"],
|
||
|
hdrs = ["test/add_solver_util.h"],
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":solver_interface",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "generic_trivial_cost",
|
||
|
testonly = 1,
|
||
|
srcs = [],
|
||
|
hdrs = ["test/generic_trivial_costs.h"],
|
||
|
deps = [
|
||
|
":constraint",
|
||
|
":cost",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "generic_trivial_constraint",
|
||
|
testonly = 1,
|
||
|
srcs = [],
|
||
|
hdrs = ["test/generic_trivial_constraints.h"],
|
||
|
deps = [
|
||
|
":constraint",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "indeterminate_test",
|
||
|
deps = [
|
||
|
":indeterminate",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "mathematical_program_test_util",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/mathematical_program_test_util.cc"],
|
||
|
hdrs = ["test/mathematical_program_test_util.h"],
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":solver_interface",
|
||
|
"@gtest//:without_main",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "optimization_examples",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/optimization_examples.cc"],
|
||
|
hdrs = ["test/optimization_examples.h"],
|
||
|
deps = [
|
||
|
":clp_solver",
|
||
|
":gurobi_solver",
|
||
|
":ipopt_solver",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":mosek_solver",
|
||
|
":nlopt_solver",
|
||
|
":osqp_solver",
|
||
|
":scs_solver",
|
||
|
":snopt_solver",
|
||
|
":solver_type_converter",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"@gtest//:without_main",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "linear_program_examples",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/linear_program_examples.cc"],
|
||
|
hdrs = ["test/linear_program_examples.h"],
|
||
|
deps = [
|
||
|
":ipopt_solver",
|
||
|
":mosek_solver",
|
||
|
":optimization_examples",
|
||
|
":solver_interface",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "quadratic_program_examples",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/quadratic_program_examples.cc"],
|
||
|
hdrs = ["test/quadratic_program_examples.h"],
|
||
|
deps = [
|
||
|
":gurobi_solver",
|
||
|
":mosek_solver",
|
||
|
":optimization_examples",
|
||
|
":scs_solver",
|
||
|
":snopt_solver",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "second_order_cone_program_examples",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/second_order_cone_program_examples.cc"],
|
||
|
hdrs = ["test/second_order_cone_program_examples.h"],
|
||
|
deps = [
|
||
|
":mathematical_program_test_util",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "semidefinite_program_examples",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/semidefinite_program_examples.cc"],
|
||
|
hdrs = ["test/semidefinite_program_examples.h"],
|
||
|
deps = [
|
||
|
":mathematical_program_test_util",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//math:matrix_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "sos_examples",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/sos_examples.cc"],
|
||
|
hdrs = ["test/sos_examples.h"],
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_result",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
"@gtest//:without_main",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "exponential_cone_program_examples",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/exponential_cone_program_examples.cc"],
|
||
|
hdrs = ["test/exponential_cone_program_examples.h"],
|
||
|
deps = [
|
||
|
":mathematical_program_test_util",
|
||
|
":solver_interface",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "solution_result",
|
||
|
srcs = ["solution_result.cc"],
|
||
|
hdrs = ["solution_result.h"],
|
||
|
deps = [
|
||
|
"//common:essential",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "solver_base",
|
||
|
srcs = ["solver_base.cc"],
|
||
|
hdrs = ["solver_base.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
":solver_interface",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "solve",
|
||
|
srcs = ["solve.cc"],
|
||
|
hdrs = ["solve.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_result",
|
||
|
":solver_base",
|
||
|
],
|
||
|
deps = [
|
||
|
":choose_best_solver",
|
||
|
"//common:nice_type_name",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
# Internal Solvers.
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "equality_constrained_qp_solver",
|
||
|
srcs = ["equality_constrained_qp_solver.cc"],
|
||
|
hdrs = ["equality_constrained_qp_solver.h"],
|
||
|
interface_deps = [
|
||
|
":solver_base",
|
||
|
"//common:essential",
|
||
|
],
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "linear_system_solver",
|
||
|
srcs = ["linear_system_solver.cc"],
|
||
|
hdrs = ["linear_system_solver.h"],
|
||
|
interface_deps = [
|
||
|
":solver_base",
|
||
|
"//common:essential",
|
||
|
],
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "unrevised_lemke_solver",
|
||
|
srcs = ["unrevised_lemke_solver.cc"],
|
||
|
hdrs = ["unrevised_lemke_solver.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
":solver_base",
|
||
|
"//common:essential",
|
||
|
],
|
||
|
deps = [
|
||
|
"//common:default_scalars",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "moby_lcp_solver",
|
||
|
srcs = ["moby_lcp_solver.cc"],
|
||
|
hdrs = ["moby_lcp_solver.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
":solver_base",
|
||
|
"//common:essential",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
# External Solvers.
|
||
|
|
||
|
# If --config gurobi is used, this target builds object code that satisfies
|
||
|
# SolverInterface by calling Gurobi. Otherwise, this target builds dummy object
|
||
|
# code that fails at runtime.
|
||
|
drake_cc_variant_library(
|
||
|
name = "gurobi_solver",
|
||
|
opt_in_condition = "//tools:with_gurobi",
|
||
|
srcs_always = ["gurobi_solver_common.cc"],
|
||
|
srcs_enabled = ["gurobi_solver.cc"],
|
||
|
srcs_disabled = ["no_gurobi.cc"],
|
||
|
hdrs = ["gurobi_solver.h"],
|
||
|
interface_deps = [
|
||
|
":solver_base",
|
||
|
],
|
||
|
deps_always = [
|
||
|
":aggregate_costs_constraints",
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps_enabled = [
|
||
|
"//math:eigen_sparse_triplet",
|
||
|
"//common:scope_exit",
|
||
|
"//common:scoped_singleton",
|
||
|
"@gurobi//:gurobi_c",
|
||
|
"@fmt",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
# If --config mosek is used, this target builds object code that satisfies
|
||
|
# SolverInterface by calling MOSEK. Otherwise, this target builds dummy object
|
||
|
# code that fails at runtime.
|
||
|
drake_cc_variant_library(
|
||
|
name = "mosek_solver",
|
||
|
opt_in_condition = "//tools:with_mosek",
|
||
|
srcs_always = ["mosek_solver_common.cc"],
|
||
|
srcs_enabled = ["mosek_solver.cc"],
|
||
|
srcs_disabled = ["no_mosek.cc"],
|
||
|
hdrs = ["mosek_solver.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program_result",
|
||
|
":solver_base",
|
||
|
],
|
||
|
deps_always = [
|
||
|
":aggregate_costs_constraints",
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps_enabled = [
|
||
|
":mosek_solver_internal",
|
||
|
"//common:scoped_singleton",
|
||
|
"//common:scope_exit",
|
||
|
"@mosek",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_optional_library(
|
||
|
name = "mosek_solver_internal",
|
||
|
opt_in_condition = "//tools:with_mosek",
|
||
|
srcs = ["mosek_solver_internal.cc"],
|
||
|
hdrs = ["mosek_solver_internal.h"],
|
||
|
interface_deps = [":mathematical_program_result"],
|
||
|
deps = [
|
||
|
":aggregate_costs_constraints",
|
||
|
":mathematical_program",
|
||
|
"//math:quadratic_form",
|
||
|
"@mosek",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
# If --config snopt is used, this target builds object code that satisfies
|
||
|
# SolverInterface by calling SNOPT. Otherwise, this target builds dummy object
|
||
|
# code that fails at runtime.
|
||
|
drake_cc_variant_library(
|
||
|
name = "snopt_solver",
|
||
|
opt_in_condition = "//tools:with_snopt",
|
||
|
srcs_always = ["snopt_solver_common.cc"],
|
||
|
srcs_enabled = ["snopt_solver.cc"],
|
||
|
srcs_disabled = ["no_snopt.cc"],
|
||
|
hdrs = ["snopt_solver.h"],
|
||
|
interface_deps = [
|
||
|
":solver_base",
|
||
|
],
|
||
|
deps_always = [
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps_enabled = [
|
||
|
"//common:scope_exit",
|
||
|
"//math:autodiff",
|
||
|
"@snopt//:snopt_cwrap",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_variant_library(
|
||
|
name = "clp_solver",
|
||
|
opt_out_condition = "//tools:no_clp",
|
||
|
srcs_always = ["clp_solver_common.cc"],
|
||
|
srcs_enabled = ["clp_solver.cc"],
|
||
|
srcs_disabled = ["no_clp.cc"],
|
||
|
hdrs = ["clp_solver.h"],
|
||
|
interface_deps = [
|
||
|
":solver_base",
|
||
|
],
|
||
|
deps_always = [
|
||
|
":aggregate_costs_constraints",
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps_enabled = [
|
||
|
"@clp",
|
||
|
"//common:unused",
|
||
|
"//math:autodiff",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_variant_library(
|
||
|
name = "ipopt_solver",
|
||
|
opt_out_condition = "//tools:no_ipopt",
|
||
|
srcs_always = ["ipopt_solver_common.cc"],
|
||
|
srcs_enabled = ["ipopt_solver.cc"],
|
||
|
srcs_disabled = ["no_ipopt.cc"],
|
||
|
hdrs = ["ipopt_solver.h"],
|
||
|
interface_deps = [
|
||
|
":solver_base",
|
||
|
],
|
||
|
deps_always = [
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps_enabled = [
|
||
|
"@ipopt",
|
||
|
"//common:unused",
|
||
|
"//math:autodiff",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_variant_library(
|
||
|
name = "nlopt_solver",
|
||
|
opt_out_condition = "//tools:no_nlopt",
|
||
|
srcs_always = ["nlopt_solver_common.cc"],
|
||
|
srcs_enabled = ["nlopt_solver.cc"],
|
||
|
srcs_disabled = ["no_nlopt.cc"],
|
||
|
hdrs = ["nlopt_solver.h"],
|
||
|
interface_deps = [
|
||
|
":solver_base",
|
||
|
],
|
||
|
deps_always = [
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps_enabled = [
|
||
|
"//math:autodiff",
|
||
|
"@nlopt_internal//:nlopt",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_variant_library(
|
||
|
name = "osqp_solver",
|
||
|
opt_out_condition = "//tools:no_osqp",
|
||
|
srcs_always = ["osqp_solver_common.cc"],
|
||
|
srcs_enabled = ["osqp_solver.cc"],
|
||
|
srcs_disabled = ["no_osqp.cc"],
|
||
|
hdrs = ["osqp_solver.h"],
|
||
|
interface_deps = [
|
||
|
":solver_base",
|
||
|
],
|
||
|
deps_always = [
|
||
|
":aggregate_costs_constraints",
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps_enabled = [
|
||
|
"//math:eigen_sparse_triplet",
|
||
|
"@osqp_internal//:osqp",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_variant_library(
|
||
|
name = "scs_solver",
|
||
|
opt_out_condition = "//tools:no_scs",
|
||
|
srcs_always = ["scs_solver_common.cc"],
|
||
|
srcs_enabled = ["scs_solver.cc"],
|
||
|
srcs_disabled = ["no_scs.cc"],
|
||
|
hdrs = ["scs_solver.h"],
|
||
|
interface_deps = [
|
||
|
":solver_base",
|
||
|
"//common:essential",
|
||
|
],
|
||
|
deps_always = [
|
||
|
":aggregate_costs_constraints",
|
||
|
":mathematical_program",
|
||
|
"//math:quadratic_form",
|
||
|
],
|
||
|
deps_enabled = [
|
||
|
"//common:scope_exit",
|
||
|
"//math:eigen_sparse_triplet",
|
||
|
"@scs_internal//:scsdir",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "sdpa_free_format",
|
||
|
srcs = ["sdpa_free_format.cc"],
|
||
|
hdrs = ["sdpa_free_format.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
"//common:type_safe_index",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_optional_library(
|
||
|
name = "csdp_solver_error_handling",
|
||
|
opt_out_condition = "//tools:no_csdp",
|
||
|
srcs = ["csdp_solver_error_handling.cc"],
|
||
|
hdrs = ["csdp_solver_error_handling.h"],
|
||
|
copts = ["-fvisibility=hidden"],
|
||
|
visibility = ["@csdp//:__pkg__"],
|
||
|
)
|
||
|
|
||
|
drake_cc_optional_library(
|
||
|
name = "csdp_cpp_wrapper",
|
||
|
opt_out_condition = "//tools:no_csdp",
|
||
|
srcs = ["csdp_cpp_wrapper.cc"],
|
||
|
hdrs = ["csdp_cpp_wrapper.h"],
|
||
|
interface_deps = [
|
||
|
"@csdp",
|
||
|
],
|
||
|
deps = [
|
||
|
":csdp_solver_error_handling",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_optional_library(
|
||
|
name = "csdp_solver_internal",
|
||
|
opt_out_condition = "//tools:no_csdp",
|
||
|
srcs = ["csdp_solver_internal.cc"],
|
||
|
hdrs = ["csdp_solver_internal.h"],
|
||
|
interface_deps = [
|
||
|
":csdp_cpp_wrapper",
|
||
|
":sdpa_free_format",
|
||
|
],
|
||
|
deps = [],
|
||
|
)
|
||
|
|
||
|
drake_cc_variant_library(
|
||
|
name = "csdp_solver",
|
||
|
opt_out_condition = "//tools:no_csdp",
|
||
|
srcs_always = ["csdp_solver_common.cc"],
|
||
|
srcs_enabled = ["csdp_solver.cc"],
|
||
|
srcs_disabled = ["no_csdp.cc"],
|
||
|
hdrs = ["csdp_solver.h"],
|
||
|
interface_deps = [
|
||
|
":solver_base",
|
||
|
":sdpa_free_format",
|
||
|
],
|
||
|
deps_always = [
|
||
|
":mathematical_program",
|
||
|
"//common:scope_exit",
|
||
|
],
|
||
|
deps_enabled = [
|
||
|
":csdp_solver_internal",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "mixed_integer_optimization_util",
|
||
|
srcs = ["mixed_integer_optimization_util.cc"],
|
||
|
hdrs = ["mixed_integer_optimization_util.h"],
|
||
|
interface_deps = [
|
||
|
":mathematical_program",
|
||
|
],
|
||
|
deps = [
|
||
|
":integer_optimization_util",
|
||
|
"//math:gray_code",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
# === test/ ===
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "binding_test",
|
||
|
deps = [
|
||
|
":binding",
|
||
|
":constraint",
|
||
|
":cost",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "branch_and_bound_test",
|
||
|
tags = gurobi_test_tags(),
|
||
|
deps = [
|
||
|
":branch_and_bound",
|
||
|
":gurobi_solver",
|
||
|
":mathematical_program_test_util",
|
||
|
":mixed_integer_optimization_util",
|
||
|
":scs_solver",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "evaluator_base_test",
|
||
|
deps = [
|
||
|
":evaluator_base",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:is_dynamic_castable",
|
||
|
"//math:gradient",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "constraint_test",
|
||
|
deps = [
|
||
|
":constraint",
|
||
|
"//common/symbolic:expression",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
"//math:gradient",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "minimum_value_constraint_test",
|
||
|
deps = [
|
||
|
":minimum_value_constraint",
|
||
|
"//solvers/test_utilities",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
# TODO(eric.cousineau): Remove dependence on create_cost
|
||
|
drake_cc_googletest(
|
||
|
name = "cost_test",
|
||
|
deps = [
|
||
|
":cost",
|
||
|
":create_cost",
|
||
|
":generic_trivial_cost",
|
||
|
"//common/symbolic:expression",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:is_dynamic_castable",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
"//math:gradient",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "complementary_problem_test",
|
||
|
tags = ["snopt"],
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":snopt_solver",
|
||
|
":solve",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "create_constraint_test",
|
||
|
deps = [
|
||
|
":create_constraint",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_library(
|
||
|
name = "csdp_test_examples",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/csdp_test_examples.cc"],
|
||
|
hdrs = ["test/csdp_test_examples.h"],
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
"@gtest//:without_main",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "sdpa_free_format_test",
|
||
|
deps = [
|
||
|
":csdp_solver_internal",
|
||
|
":csdp_test_examples",
|
||
|
":sdpa_free_format",
|
||
|
"//common:temp_directory",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "clp_solver_test",
|
||
|
deps = [
|
||
|
":clp_solver",
|
||
|
":linear_program_examples",
|
||
|
":quadratic_program_examples",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_optional_googletest(
|
||
|
name = "csdp_solver_internal_test",
|
||
|
opt_out_condition = "//tools:no_csdp",
|
||
|
deps = [
|
||
|
":csdp_solver_internal",
|
||
|
":csdp_test_examples",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_optional_googletest(
|
||
|
name = "csdp_cpp_wrapper_test",
|
||
|
opt_out_condition = "//tools:no_csdp",
|
||
|
tags = [
|
||
|
# The longjmp handling definitely leaks memory, and we've decided to
|
||
|
# just live with that. If we see the longjmp handler triggering when
|
||
|
# called by CsdpSolver, we should fix MathematicalProgram or CsdpSolver
|
||
|
# to do more sanity checking before calling into CSDP. The longjmp
|
||
|
# handler should only serve as a last resort.
|
||
|
"no_lsan",
|
||
|
"no_memcheck",
|
||
|
],
|
||
|
deps = [
|
||
|
":csdp_cpp_wrapper",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "csdp_solver_test",
|
||
|
deps = [
|
||
|
":csdp_solver",
|
||
|
":csdp_test_examples",
|
||
|
":linear_program_examples",
|
||
|
":second_order_cone_program_examples",
|
||
|
":semidefinite_program_examples",
|
||
|
":sos_examples",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "decision_variable_test",
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "equality_constrained_qp_solver_test",
|
||
|
deps = [
|
||
|
":equality_constrained_qp_solver",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":quadratic_program_examples",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "get_program_type_test",
|
||
|
deps = [
|
||
|
":get_program_type",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "gurobi_solver_test",
|
||
|
tags = gurobi_test_tags(),
|
||
|
use_default_main = False,
|
||
|
deps = [
|
||
|
":gurobi_solver",
|
||
|
":linear_program_examples",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":mixed_integer_optimization_util",
|
||
|
":quadratic_program_examples",
|
||
|
":second_order_cone_program_examples",
|
||
|
"//common:temp_directory",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "gurobi_solver_grb_license_file_test",
|
||
|
tags = gurobi_test_tags(),
|
||
|
deps = [
|
||
|
":gurobi_solver",
|
||
|
":mathematical_program",
|
||
|
"//common/test_utilities:expect_no_throw",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "integer_optimization_util_test",
|
||
|
deps = [
|
||
|
":integer_optimization_util",
|
||
|
":mathematical_program",
|
||
|
":osqp_solver",
|
||
|
":solve",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "ipopt_solver_test",
|
||
|
copts = select({
|
||
|
"//conditions:default": [
|
||
|
"-DDRAKE_IPOPT_SOLVER_TEST_HAS_IPOPT=1",
|
||
|
],
|
||
|
"//tools:no_ipopt": [
|
||
|
],
|
||
|
}),
|
||
|
deps = [
|
||
|
":linear_program_examples",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":optimization_examples",
|
||
|
":quadratic_program_examples",
|
||
|
":second_order_cone_program_examples",
|
||
|
"//common:temp_directory",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
] + select({
|
||
|
"//conditions:default": [
|
||
|
"@ipopt",
|
||
|
],
|
||
|
"//tools:no_ipopt": [
|
||
|
],
|
||
|
}),
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "linear_complementary_problem_test",
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:expect_no_throw",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "linear_system_solver_test",
|
||
|
deps = [
|
||
|
":linear_system_solver",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":optimization_examples",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "mathematical_program_test",
|
||
|
deps = [
|
||
|
":generic_trivial_constraint",
|
||
|
":generic_trivial_cost",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":snopt_solver",
|
||
|
":solve",
|
||
|
"//common/symbolic:expression",
|
||
|
"//common/test_utilities",
|
||
|
"//math:matrix_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
# TODO(hongkai-dai): Separate this test into a test that uses Gurobi, and a
|
||
|
# test that doesn't.
|
||
|
drake_cc_googletest(
|
||
|
name = "mixed_integer_optimization_test",
|
||
|
# This test uses Gurobi if present, but does not require it.
|
||
|
tags = gurobi_test_tags(),
|
||
|
deps = [
|
||
|
":add_solver_util",
|
||
|
":gurobi_solver",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":mosek_solver",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "moby_lcp_solver_test",
|
||
|
deps = [
|
||
|
":moby_lcp_solver",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "unrevised_lemke_solver_test",
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":unrevised_lemke_solver",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_optional_googletest(
|
||
|
name = "mosek_solver_internal_test",
|
||
|
opt_in_condition = "//tools:with_mosek",
|
||
|
use_default_main = False,
|
||
|
deps = [
|
||
|
":mosek_solver",
|
||
|
":mosek_solver_internal",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
"//math:quadratic_form",
|
||
|
"@mosek",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "mosek_solver_test",
|
||
|
tags = mosek_test_tags(),
|
||
|
use_default_main = False,
|
||
|
deps = [
|
||
|
":exponential_cone_program_examples",
|
||
|
":linear_program_examples",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":mixed_integer_optimization_util",
|
||
|
":mosek_solver",
|
||
|
":quadratic_program_examples",
|
||
|
":second_order_cone_program_examples",
|
||
|
":semidefinite_program_examples",
|
||
|
":sos_examples",
|
||
|
"//common:temp_directory",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "mosek_solver_moseklm_license_file_test",
|
||
|
tags = mosek_test_tags(),
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":mosek_solver",
|
||
|
"//common/test_utilities:expect_no_throw",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "nlopt_solver_test",
|
||
|
deps = [
|
||
|
":linear_program_examples",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":nlopt_solver",
|
||
|
":optimization_examples",
|
||
|
":quadratic_program_examples",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "non_convex_optimization_util_test",
|
||
|
# This test is quite long, so split it into 4 processes for better latency.
|
||
|
shard_count = 4,
|
||
|
tags = mosek_test_tags(),
|
||
|
deps = [
|
||
|
":decision_variable",
|
||
|
":non_convex_optimization_util",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "nonlinear_program_test",
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":optimization_examples",
|
||
|
"//common/test_utilities",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "mixed_integer_rotation_constraint_test",
|
||
|
timeout = "long",
|
||
|
# This test is quite long, so split it into 4 processes for better latency.
|
||
|
shard_count = 4,
|
||
|
tags = gurobi_test_tags() + mosek_test_tags() + [
|
||
|
# Excluding asan and memcheck because it is unreasonably slow
|
||
|
# (> 30 minutes).
|
||
|
"no_asan",
|
||
|
"no_memcheck",
|
||
|
# Excluding tsan because an assertion fails in LLVM code. Issue #6179.
|
||
|
"no_tsan",
|
||
|
],
|
||
|
use_default_main = False,
|
||
|
deps = [
|
||
|
":gurobi_solver",
|
||
|
":integer_optimization_util",
|
||
|
":mathematical_program",
|
||
|
":mixed_integer_rotation_constraint",
|
||
|
":mosek_solver",
|
||
|
":rotation_constraint",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//math:geometric_transform",
|
||
|
"//math:gray_code",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "mixed_integer_rotation_constraint_corner_test",
|
||
|
timeout = "long",
|
||
|
# This test is quite long, so split it into 4 processes for better latency.
|
||
|
shard_count = 4,
|
||
|
tags = gurobi_test_tags() + mosek_test_tags() + [
|
||
|
# Excluding asan because it is unreasonably slow (> 30 minutes).
|
||
|
"no_asan",
|
||
|
# Excluding tsan because an assertion fails in LLVM code. Issue #6179.
|
||
|
"no_tsan",
|
||
|
],
|
||
|
use_default_main = False,
|
||
|
deps = [
|
||
|
":integer_optimization_util",
|
||
|
":mathematical_program",
|
||
|
":mixed_integer_rotation_constraint",
|
||
|
":mosek_solver",
|
||
|
":rotation_constraint",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//math:gray_code",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "rotation_constraint_test",
|
||
|
timeout = "long",
|
||
|
# This test is quite long, so split it into 4 processes for better latency.
|
||
|
shard_count = 4,
|
||
|
tags = gurobi_test_tags() + mosek_test_tags() + [
|
||
|
# Excluding asan because it is unreasonably slow (> 30 minutes).
|
||
|
"no_asan",
|
||
|
# Excluding tsan because an assertion fails in LLVM code. Issue #6179.
|
||
|
"no_tsan",
|
||
|
],
|
||
|
use_default_main = False,
|
||
|
deps = [
|
||
|
":gurobi_solver",
|
||
|
":mathematical_program",
|
||
|
":mosek_solver",
|
||
|
":rotation_constraint",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//math:geometric_transform",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "osqp_solver_test",
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":osqp_solver",
|
||
|
":quadratic_program_examples",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_binary(
|
||
|
name = "plot_feasible_rotation_matrices",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/plot_feasible_rotation_matrices.cc"],
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":mixed_integer_rotation_constraint",
|
||
|
":rotation_constraint",
|
||
|
":solve",
|
||
|
"//common/proto:call_python",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "program_attribute_test",
|
||
|
deps = [
|
||
|
":program_attribute",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "mixed_integer_rotation_constraint_limit_test",
|
||
|
timeout = "long",
|
||
|
num_threads = 4,
|
||
|
tags = gurobi_test_tags() + [
|
||
|
# Times out with Valgrind
|
||
|
"no_memcheck",
|
||
|
# Excluding tsan because an assertion fails in LLVM code. Issue #6179.
|
||
|
"no_tsan",
|
||
|
],
|
||
|
deps = [
|
||
|
":gurobi_solver",
|
||
|
":mathematical_program",
|
||
|
":mixed_integer_rotation_constraint",
|
||
|
":rotation_constraint",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "scs_solver_test",
|
||
|
deps = [
|
||
|
":exponential_cone_program_examples",
|
||
|
":linear_program_examples",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":quadratic_program_examples",
|
||
|
":scs_solver",
|
||
|
":second_order_cone_program_examples",
|
||
|
":semidefinite_program_examples",
|
||
|
":sos_examples",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "snopt_solver_test",
|
||
|
tags = [
|
||
|
# ThreadSanitizer: lock-order-inversion (potential deadlock) with
|
||
|
# snopt_fortran (#11657).
|
||
|
"no_tsan",
|
||
|
"snopt",
|
||
|
],
|
||
|
deps = [
|
||
|
":linear_program_examples",
|
||
|
":mathematical_program",
|
||
|
":mathematical_program_test_util",
|
||
|
":optimization_examples",
|
||
|
":quadratic_program_examples",
|
||
|
":second_order_cone_program_examples",
|
||
|
":snopt_solver",
|
||
|
"//common:temp_directory",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
"//math:geometric_transform",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "solver_base_test",
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":solver_base",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "solver_id_test",
|
||
|
deps = [
|
||
|
":solver_id",
|
||
|
"//common/test_utilities:limit_malloc",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "solver_type_converter_test",
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":solver_type_converter",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "sos_constraint_test",
|
||
|
tags = mosek_test_tags(),
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":solve",
|
||
|
":sos_basis_generator",
|
||
|
"//common/test_utilities",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "sos_basis_generator_test",
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":sos_basis_generator",
|
||
|
"//common/symbolic:monomial_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "integer_inequality_solver_test",
|
||
|
deps = [
|
||
|
":integer_inequality_solver",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_binary(
|
||
|
name = "plot_rotation_mccormick_envelope",
|
||
|
testonly = 1,
|
||
|
srcs = ["test/plot_rotation_mccormick_envelope.cc"],
|
||
|
deps = [
|
||
|
":rotation_constraint_visualization",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "mixed_integer_optimization_util_test",
|
||
|
tags = gurobi_test_tags(gurobi_required = False),
|
||
|
deps = [
|
||
|
":gurobi_solver",
|
||
|
":mixed_integer_optimization_util",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//math:gray_code",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "mixed_integer_rotation_constraint_internal_test",
|
||
|
tags = mosek_test_tags() + gurobi_test_tags() + ["no_tsan"],
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":mixed_integer_rotation_constraint",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//math:geometric_transform",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "diagonally_dominant_matrix_test",
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":snopt_solver",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "scaled_diagonally_dominant_matrix_test",
|
||
|
tags = gurobi_test_tags() + mosek_test_tags(),
|
||
|
deps = [
|
||
|
":mathematical_program",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "mathematical_program_result_test",
|
||
|
deps = [
|
||
|
":cost",
|
||
|
":mathematical_program_result",
|
||
|
":osqp_solver",
|
||
|
":snopt_solver",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "choose_best_solver_test",
|
||
|
deps = [
|
||
|
":choose_best_solver",
|
||
|
":clp_solver",
|
||
|
":csdp_solver",
|
||
|
":equality_constrained_qp_solver",
|
||
|
":get_program_type",
|
||
|
":gurobi_solver",
|
||
|
":ipopt_solver",
|
||
|
":linear_system_solver",
|
||
|
":moby_lcp_solver",
|
||
|
":mosek_solver",
|
||
|
":nlopt_solver",
|
||
|
":osqp_solver",
|
||
|
":scs_solver",
|
||
|
":snopt_solver",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "solve_test",
|
||
|
deps = [
|
||
|
":choose_best_solver",
|
||
|
":gurobi_solver",
|
||
|
":linear_system_solver",
|
||
|
":scs_solver",
|
||
|
":snopt_solver",
|
||
|
":solve",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "aggregate_costs_constraints_test",
|
||
|
deps = [
|
||
|
":aggregate_costs_constraints",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//common/test_utilities:symbolic_test_util",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "solver_options_test",
|
||
|
deps = [
|
||
|
":solver_options",
|
||
|
"//common/test_utilities:expect_no_throw",
|
||
|
"//common/test_utilities:expect_throws_message",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "augmented_lagrangian_test",
|
||
|
deps = [
|
||
|
":aggregate_costs_constraints",
|
||
|
":augmented_lagrangian",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
"//math:gradient",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
drake_cc_googletest(
|
||
|
name = "sparse_and_dense_matrix_test",
|
||
|
tags = ["cpu:4"],
|
||
|
deps = [
|
||
|
":sparse_and_dense_matrix",
|
||
|
"//common/test_utilities:eigen_matrix_compare",
|
||
|
],
|
||
|
)
|
||
|
|
||
|
add_lint_tests()
|