MCPcopy Create free account
hub / github.com/TinyMPC/TinyMPC / tiny_set_linear_constraints

Function tiny_set_linear_constraints

src/tinympc/tiny_api.cpp:210–252  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

208}
209
210int tiny_set_linear_constraints(TinySolver* solver,
211 tinyMatrix Alin_x, tinyVector blin_x,
212 tinyMatrix Alin_u, tinyVector blin_u) {
213 if (!solver) {
214 std::cout << "Error in tiny_set_linear_constraints: solver is nullptr" << std::endl;
215 return 1;
216 }
217
218 // Make sure all linear constraint matrix sizes are self-consistent
219 int num_state_linear = Alin_x.rows();
220 int num_input_linear = Alin_u.rows();
221 int status = 0;
222
223 // Check state constraint dimensions
224 if (num_state_linear > 0) {
225 status |= check_dimension("State linear constraint matrix (Alin_x)", "rows", Alin_x.rows(), num_state_linear);
226 status |= check_dimension("State linear constraint matrix (Alin_x)", "columns", Alin_x.cols(), solver->work->nx);
227 status |= check_dimension("State linear constraint vector (blin_x)", "rows", blin_x.rows(), num_state_linear);
228 status |= check_dimension("State linear constraint vector (blin_x)", "columns", blin_x.cols(), 1);
229 }
230
231 // Check input constraint dimensions
232 if (num_input_linear > 0) {
233 status |= check_dimension("Input linear constraint matrix (Alin_u)", "rows", Alin_u.rows(), num_input_linear);
234 status |= check_dimension("Input linear constraint matrix (Alin_u)", "columns", Alin_u.cols(), solver->work->nu);
235 status |= check_dimension("Input linear constraint vector (blin_u)", "rows", blin_u.rows(), num_input_linear);
236 status |= check_dimension("Input linear constraint vector (blin_u)", "columns", blin_u.cols(), 1);
237 }
238
239 if (status) {
240 return status;
241 }
242
243 solver->work->numStateLinear = num_state_linear;
244 solver->work->numInputLinear = num_input_linear;
245
246 solver->work->Alin_x = Alin_x;
247 solver->work->blin_x = blin_x;
248 solver->work->Alin_u = Alin_u;
249 solver->work->blin_u = blin_u;
250
251 return 0;
252}
253
254int tiny_set_tv_linear_constraints(TinySolver* solver,
255 tinyMatrix tv_Alin_x, tinyMatrix tv_blin_x,

Callers 1

mainFunction · 0.85

Calls 3

check_dimensionFunction · 0.85
rowsMethod · 0.45
colsMethod · 0.45

Tested by

no test coverage detected