Drake
Drake C++ Documentation
Loading...
Searching...
No Matches
CsdpSolver Class Referencefinal

Detailed Description

Wrap CSDP solver such that it can solve a drake::solvers::MathematicalProgram.

Note
CSDP doesn't accept free variables, while drake::solvers::MathematicalProgram does. In order to convert MathematicalProgram into CSDP format, we provide several approaches to remove free variables. You can set the approach through
SolverOptions solver_options;
solver_options.SetOption(CsdpSolver::id(),
"drake::RemoveFreeVariableMethod",
CsdpSolver solver;
auto result = solver.Solve(prog, std::nullopt, solver_options);
MathematicalProgramResult Solve(const MathematicalProgram &prog, const std::optional< Eigen::VectorXd > &initial_guess=std::nullopt, const std::optional< SolverOptions > &solver_options=std::nullopt) const
Like SolverInterface::Solve(), but the result is a return value instead of an output argument.
static SolverId id()
CsdpSolver(const CsdpSolver &)=delete
@ kNullspace
Approach 2, reformulate the dual problem by considering the nullspace of the linear constraint in the...
Definition sdpa_free_format.h:472
Stores options for multiple solvers.
Definition solver_options.h:60
void SetOption(const SolverId &solver_id, std::string key, OptionValue value)
Sets a solver option for a specific solver.
For more details, check out RemoveFreeVariableMethod.

#include <drake/solvers/csdp_solver.h>

Public Member Functions

 CsdpSolver ()
 Default constructor.
 ~CsdpSolver () final
Does not allow copy, move, or assignment
 CsdpSolver (const CsdpSolver &)=delete
CsdpSolveroperator= (const CsdpSolver &)=delete
 CsdpSolver (CsdpSolver &&)=delete
CsdpSolveroperator= (CsdpSolver &&)=delete
Public Member Functions inherited from SolverBase
 ~SolverBase () override
MathematicalProgramResult Solve (const MathematicalProgram &prog, const std::optional< Eigen::VectorXd > &initial_guess=std::nullopt, const std::optional< SolverOptions > &solver_options=std::nullopt) const
 Like SolverInterface::Solve(), but the result is a return value instead of an output argument.
void Solve (const MathematicalProgram &, const std::optional< Eigen::VectorXd > &, const std::optional< SolverOptions > &, MathematicalProgramResult *) const override
 Solves an optimization program with optional initial guess and solver options.
bool available () const override
 Returns true iff support for this solver has been compiled into Drake.
bool enabled () const override
 Returns true iff this solver is properly configured for use at runtime.
SolverId solver_id () const final
 Returns the identifier of this solver.
bool AreProgramAttributesSatisfied (const MathematicalProgram &) const override
 Returns true iff the program's attributes are compatible with this solver's capabilities.
std::string ExplainUnsatisfiedProgramAttributes (const MathematicalProgram &) const override
 Describes the reasons (if any) why the program is incompatible with this solver's capabilities.
 SolverBase (const SolverBase &)=delete
SolverBaseoperator= (const SolverBase &)=delete
 SolverBase (SolverBase &&)=delete
SolverBaseoperator= (SolverBase &&)=delete
Public Member Functions inherited from SolverInterface
virtual ~SolverInterface ()
 SolverInterface (const SolverInterface &)=delete
SolverInterfaceoperator= (const SolverInterface &)=delete
 SolverInterface (SolverInterface &&)=delete
SolverInterfaceoperator= (SolverInterface &&)=delete

Static versions of the instance methods with similar names.

using Details = CsdpSolverDetails
MathematicalProgramResult Solve (const MathematicalProgram &prog, const std::optional< Eigen::VectorXd > &initial_guess=std::nullopt, const std::optional< SolverOptions > &solver_options=std::nullopt) const
 Like SolverInterface::Solve(), but the result is a return value instead of an output argument.
void Solve (const MathematicalProgram &, const std::optional< Eigen::VectorXd > &, const std::optional< SolverOptions > &, MathematicalProgramResult *) const override
 Solves an optimization program with optional initial guess and solver options.
static SolverId id ()
static bool is_available ()
static bool is_enabled ()
static bool ProgramAttributesSatisfied (const MathematicalProgram &)

Additional Inherited Members

Protected Member Functions inherited from SolverBase
 SolverBase (const SolverId &id, std::function< bool()> available, std::function< bool()> enabled, std::function< bool(const MathematicalProgram &)> are_satisfied, std::function< std::string(const MathematicalProgram &)> explain_unsatisfied=nullptr)
 Constructs a SolverBase with the given default implementations of the solver_id(), available(), enabled(), AreProgramAttributesSatisfied(), and ExplainUnsatisfiedProgramAttributes() methods.
virtual void DoSolve (const MathematicalProgram &prog, const Eigen::VectorXd &initial_guess, const SolverOptions &merged_options, MathematicalProgramResult *result) const
 Hook for subclasses to implement Solve.
Protected Member Functions inherited from SolverInterface
 SolverInterface ()

Member Typedef Documentation

◆ Details

Constructor & Destructor Documentation

◆ CsdpSolver() [1/3]

CsdpSolver ( const CsdpSolver & )
delete

◆ CsdpSolver() [2/3]

CsdpSolver ( CsdpSolver && )
delete

◆ CsdpSolver() [3/3]

Default constructor.

◆ ~CsdpSolver()

~CsdpSolver ( )
final

Member Function Documentation

◆ id()

SolverId id ( )
static

◆ is_available()

bool is_available ( )
static

◆ is_enabled()

bool is_enabled ( )
static

◆ operator=() [1/2]

CsdpSolver & operator= ( const CsdpSolver & )
delete

◆ operator=() [2/2]

CsdpSolver & operator= ( CsdpSolver && )
delete

◆ ProgramAttributesSatisfied()

bool ProgramAttributesSatisfied ( const MathematicalProgram & )
static

◆ Solve() [1/2]

void Solve ( const MathematicalProgram & prog,
const std::optional< Eigen::VectorXd > & initial_guess,
const std::optional< SolverOptions > & solver_options,
MathematicalProgramResult * result ) const
overridevirtual

Solves an optimization program with optional initial guess and solver options.

Note that these initial guess and solver options are not written to prog. If the prog has set an initial guess, and initial_guess is set, then initial_guess takes priority. If the prog has set an option for a solver, and solver_options contains a different value for the same option on the same solver, then solver_options takes priority. Derived implementations of this interface may elect to throw std::exception for badly formed programs.

Implements SolverInterface.

◆ Solve() [2/2]

MathematicalProgramResult Solve ( const MathematicalProgram & prog,
const std::optional< Eigen::VectorXd > & initial_guess = std::nullopt,
const std::optional< SolverOptions > & solver_options = std::nullopt ) const

Like SolverInterface::Solve(), but the result is a return value instead of an output argument.


The documentation for this class was generated from the following file: