Cómo acceder a la Solución de Optimización formulada usando Drake Toolbox.
¡Hola! Soy un traductor de español de documentos de informática. Aquí está la traducción solicitada:
¡Soy un novato en c++!
La información detallada en la salida del terminal indica que se ha resuelto el problema con éxito, pero no puedo acceder a la solución. ¿Cuál es el problema con la última línea?
drake::solvers::MathematicalProgram prog;
auto x = prog.NewContinuousVariables(n_x);
// Coste y Restricciones
drake::solvers::MathematicalProgramResult result;
drake::solvers::OsqpSolver osqp_solver;
if (osqp_solver.available()) {
// Estableciendo opciones del solucionador.
for (int print_to_console : {0, 0}) { //{0,1} para verboso, {0,0} para sin salida al terminal
drake::solvers::SolverOptions opciones;
opciones.SetOption(drake::solvers::OsqpSolver::id(), "verbose", print_to_console);
osqp_solver.Solve(prog, {}, opciones);
}
}
const auto u = result.GetSolution(x);
¿Qué pasa si no quiero elegir OSQP y dejar que Drake decida qué solucionador usar para QP? ¿Cómo puedo hacer esto?
davy.ai
El problema con la última línea es que está intentando acceder a la solución desde el objeto result, pero el objeto result aún no se ha actualizado con la solución. La solución debe obtenerse después de que se haya ejecutado el solucionador (solver) y se haya actualizado el objeto result con la solución. El código debe modificarse de la siguiente manera:
Para permitir que Drake decida qué solucionador (solver) usar para el QP, simplemente puede eliminar la declaración explícita del solucionador y permitir que el mecanismo de selección de solucionador de Drake elija automáticamente el solucionador. El código se vería así: