Giter Site home page Giter Site logo

data_driven_pos's Introduction

data_driven_pos

Data-driven stabilization of positive linear systems. A collection of state-input-transition data is collected from a continuous-time or discrete-time LTI dynamical system, under a known L-infinity noise bound. A full-state feedback control u=Kx is computed in order to stabilize all systems that are consistent with the observed data.

Stabilization is certified by the Extended Farkas Lemma (polytope inclusion): the polytope of systems that can be stabilized by the solved controller contains the polytope of plants that are consistent with the data.

Additional features include sign-patterns/structured control and peak-to-peak gain minimization.

Dependencies

All code is written and tested on Matlab R2021a.

Instructions

Sampling

The simulation classes are possim (discrete-time) and possim_cont (continuous-time). These methods will optionally generate a random system (rand_sys), and will simulate a trajectory (sim for discrete-time) or a set of transitions (sample_slope for continuous-time) as corrupted by the given L-infinity noise bound.

Stabilization

The stabilization classes using the Extended Farkas Lemma are posstab_f (discrete-time) and posstab_cont_f (continuous-time).

The resultant trajectory/collection of data is passed to the stabilization classes. An additional argument to the stabilization classes is the data_opts class, with the following options:

  • nontrivial: eliminate trivial faces from the data-consistency polytope
  • pos_A: impose prior knowledge that A is a positive system (A Metzler/Nonnegative)
  • pos_B: impose prior knowledge that B is an internally positive system (B Nonnegative)
  • gez: A 0/1 matrix where 1-entries of the controller are greater than or equal to zero
  • lez: A 0/1 matrix where 1-entries of the controller are less than or equal to zero

Peak-to-Peak Gain Minimization

An extended positive system with external input d controlled output z is

xdot = A x + B u + E d, z = C x + D u + F d

(with a similar formula for discrete-time).

The code pos_p2p_f and pos_p2p_cont_f create controllers u=Kx that minimize the worst-case peak-to-peak gain between d and z. The matrices C, D, E, F must be given in the param argument to the p2p classes.

Robust Optimization

The classes (posstab, posstab_cont, pos_p2p, pos_p2p_cont) use the Yalmip robust optimization package https://yalmip.github.io/tutorial/robustoptimization/ to eliminate the plant parameters (A, B) and derive the robust counterpart (utilizing the duality option). The derived programs are equivalent, but utilizing the robustoptimization package adds a preprocessing cost.

The README in the experiments folder describes all test scripts. The folder `experiments_switching' performs experiments with arbitrary/graph-constrained switching, linear parameter-varying systems, and controlled switching.

Reference

J. Miller, T. Dai, M. Sznaier and B. Shafai, "Data-Driven Control of Positive Linear Systems using Linear Programming," 2023 62nd IEEE Conference on Decision and Control (CDC), Singapore, Singapore, 2023, pp. 1588-1594, doi: 10.1109/CDC49753.2023.10383859. (https://ieeexplore.ieee.org/document/10383859)

Contact

For comments and questions please email Jared Miller.

data_driven_pos's People

Contributors

jarmill avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

solabankole

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.