26#include <adolc/adolc.h>
27#include <adolc/adolc_sparse.h>
28#include <coin/IpTNLP.hpp>
29#include <coin/IpTypes.hpp>
33#include "modules/common_msgs/config_msgs/vehicle_config.pb.h"
34#include "modules/planning/planning_open_space/proto/planner_open_space_config.pb.h"
51 const Eigen::MatrixXd& ego,
52 const Eigen::MatrixXi& obstacles_edges_num,
53 const size_t obstacles_num,
54 const Eigen::MatrixXd& obstacles_A,
55 const Eigen::MatrixXd& obstacles_b,
56 const Eigen::MatrixXd& xWS,
64 bool get_nlp_info(
int& n,
int& m,
int& nnz_jac_g,
int& nnz_h_lag, IndexStyleEnum& index_style)
override;
67 bool get_bounds_info(
int n,
double* x_l,
double* x_u,
int m,
double* g_l,
double* g_u)
override;
79 double* lambda)
override;
82 bool eval_f(
int n,
const double* x,
bool new_x,
double& obj_value)
override;
85 bool eval_grad_f(
int n,
const double* x,
bool new_x,
double* grad_f)
override;
88 bool eval_g(
int n,
const double* x,
bool new_x,
int m,
double* g)
override;
94 bool eval_jac_g(
int n,
const double* x,
bool new_x,
int m,
int nele_jac,
int* iRow,
int* jCol,
double* values)
108 const double* lambda,
113 double* values)
override;
119 Ipopt::SolverReturn status,
126 const double* lambda,
128 const Ipopt::IpoptData* ip_data,
129 Ipopt::IpoptCalculatedQuantities* ip_cq)
override;
134 bool eval_obj(
int n,
const T* x, T* obj_value);
145 int num_of_variables_;
146 int num_of_constraints_;
149 Eigen::MatrixXd ego_;
150 int lambda_horizon_ = 0;
151 int miu_horizon_ = 0;
152 int dual_formulation_horizon_ = 0;
154 Eigen::MatrixXd l_warm_up_;
155 Eigen::MatrixXd n_warm_up_;
160 std::vector<double> g_;
162 Eigen::MatrixXi obstacles_edges_num_;
164 int obstacles_edges_sum_;
167 int l_start_index_ = 0;
170 int n_start_index_ = 0;
173 int d_start_index_ = 0;
176 Eigen::MatrixXd obstacles_A_;
179 Eigen::MatrixXd obstacles_b_;
182 Eigen::MatrixXd xWS_;
188 unsigned int* rind_L;
189 unsigned int* cind_L;
200 const Eigen::MatrixXd& ego,
201 const Eigen::MatrixXi& obstacles_edges_num,
202 const size_t obstacles_num,
203 const Eigen::MatrixXd& obstacles_A,
204 const Eigen::MatrixXd& obstacles_b,
205 const Eigen::MatrixXd& xWS,
bool get_starting_point(int n, bool init_x, double *x, bool init_z, double *z_L, double *z_U, int m, bool init_lambda, double *lambda) override
Method to return the starting point for the algorithm
bool eval_f(int n, const double *x, bool new_x, double &obj_value) override
Method to return the objective value
bool eval_constraints(int n, const T *x, int m, T *g)
Template to compute constraints
void get_optimization_results(Eigen::MatrixXd *l_warm_up, Eigen::MatrixXd *n_warm_up) const
void finalize_solution(Ipopt::SolverReturn status, int n, const double *x, const double *z_L, const double *z_U, int m, const double *g, const double *lambda, double obj_value, const Ipopt::IpoptData *ip_data, Ipopt::IpoptCalculatedQuantities *ip_cq) override
This method is called when the algorithm is complete so the TNLP can store/write the solution
bool get_nlp_info(int &n, int &m, int &nnz_jac_g, int &nnz_h_lag, IndexStyleEnum &index_style) override
Method to return some info about the nlp
bool get_bounds_info(int n, double *x_l, double *x_u, int m, double *g_l, double *g_u) override
Method to return the bounds for my problem
bool eval_jac_g(int n, const double *x, bool new_x, int m, int nele_jac, int *iRow, int *jCol, double *values) override
Method to return: 1) The structure of the jacobian (if "values" is nullptr) 2) The values of the jaco...
virtual ~DualVariableWarmStartIPOPTInterface()=default
bool eval_grad_f(int n, const double *x, bool new_x, double *grad_f) override
Method to return the gradient of the objective
bool eval_obj(int n, const T *x, T *obj_value)
Template to return the objective value
bool eval_h(int n, const double *x, bool new_x, double obj_factor, int m, const double *lambda, bool new_lambda, int nele_hess, int *iRow, int *jCol, double *values) override
Method to return: 1) The structure of the hessian of the lagrangian (if "values" is nullptr) 2) The v...
void generate_tapes(int n, int m, int *nnz_h_lag)
Method to generate the required tapes
bool eval_g(int n, const double *x, bool new_x, int m, double *g) override
Method to return the constraint residuals
Planning module main class.