Skip to content
Relaxed Switched System Optimal Control (RSSOC) solver.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
linear3d
needle
quadrotor
starmac
tank
LICENSE
README
armijo_fctn.m
check_cons_fctn.m
check_gradient.m
check_obj_fctn.m
cost_and_computation_time.m
create_idxs_struct.m
dinput_encode_lin_cons.m
encode_LP_cons.m
encode_QP_cons.m
fwd_euler.m
max_cons_fctn.m
obj_fctn.m
optfctn_cons_f.m
optfctn_cons_g.m
optimality_fctn.m
pwm_fctn.m
read_config.m
resample_fctn.m
rho_fctn.m
run_relax.m
save_result.m
state_decode.m
state_encode.m
state_variation.m
state_variation_precompute.m
update_user.m
wavelet_transform.m

README

This is the implementation of the Relaxed Switched System Optimal Control algorithm described in the following publications:

- R. Vasudevan, H. Gonzalez, R. Bajcsy, S. S. Sastry. “Consistent Approximations for the Optimal Control of Constrained Switched Systems — Part 1: A Conceptual Algorithm.” SIAM Journal on Optimization and Control, 2013.

- R. Vasudevan, H. Gonzalez, R. Bajcsy, S. S. Sastry. “Consistent Approximations for the Optimal Control of Constrained Switched Systems — Part 2: An Implementable Algorithm.” SIAM Journal on Optimization and Control, 2013.

Our algorithm can work with the following numerical optimization solver packages: TOMLAB (any QP solver), CPLEX (cplexqp), Matlab (quadprog), Gurobi, and Mosek (mskqpopt).

Please send us an email if you find any bugs. We know some parts of the code are ugly and innefficient. We welcome any improvement you want to implement.


Usage
-----

In Matlab run:
> res = run_relax( config_file )
where 'config_file' is a properly formatted configuration file readable by the function 'read_config.m'.


Examples
--------

The following examples are included with the code:
1. 'linear3d': Switched third-order linear system with three modes. All modes are unstable and uncontrollable on their own, but the system stable is controllable via switching. The cost is quadratic.
2. 'needle': Flexible needle steering problem with two modes (rotate and push). The needle avoids spherical obstacles. The cost penalizes the distance to the desired final point.
3. 'starmac': Bidimensional model of a quadrotor helicopter with three modes (rotate left, rotate right, up/down). One constraint modeling a minimum altitude (i.e. the floor). The cost penalizes the distance to a desired final point.
4. 'tank': Two water tanks in series with two modes (low input flow and high input flow). The cost regulates the level of one of the tanks to a desired set-point.

Each example contains a configuration file compatible with 'run_relax' (extension .conf).
You can’t perform that action at this time.