55 std::vector<c_int>* P_indices,
56 std::vector<c_int>* P_indptr) {
58 const int kNumParam = 3 * n;
59 const int kNumValue = 4 * n - 1;
60 std::vector<std::vector<std::pair<c_int, c_float>>> columns;
61 columns.resize(kNumParam);
65 for (
int i = 0; i < n - 1; ++i) {
66 columns[i].emplace_back(
76 for (
int i = 0; i < n - 1; ++i) {
77 columns[n + i].emplace_back(n + i,
83 columns[2 * n - 1].emplace_back(
91 columns[2 * n].emplace_back(2 * n,
96 for (
int i = 1; i < n - 1; ++i) {
97 columns[2 * n + i].emplace_back(
103 columns[3 * n - 1].emplace_back(
110 for (
int i = 0; i < n - 1; ++i) {
111 columns[2 * n + i].emplace_back(2 * n + i + 1,
117 CHECK_EQ(value_index, kNumValue);
120 for (
int i = 0; i < kNumParam; ++i) {
121 P_indptr->push_back(ind_p);
122 for (
const auto& row_data_pair : columns[i]) {
123 P_data->push_back(row_data_pair.second * 2.0);
124 P_indices->push_back(row_data_pair.first);
128 P_indptr->push_back(ind_p);
157 OSQPSettings* settings =
158 reinterpret_cast<OSQPSettings*
>(c_malloc(
sizeof(OSQPSettings)));
159 osqp_set_default_settings(settings);
160 settings->eps_abs = 1e-2;
161 settings->eps_rel = 1e-2;
162 settings->eps_prim_inf = 1e-5;
163 settings->eps_dual_inf = 1e-5;
164 settings->polish =
true;
165 settings->verbose = FLAGS_enable_osqp_debug;
166 settings->scaled_termination =
true;
167 settings->time_limit = FLAGS_path_speed_osqp_setting_time_limit;