{ "cells": [ { "cell_type": "markdown", "source": [ "# Minimal Robust Positively Invariant Set" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "### Introduction" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "In this example, we implement the method presented in [RKKM05] to compute a robust positively invariant polytope of a linear system under a disturbance bounded by a polytopic set.\n", "\n", "We consider the example given in equation (15) of [RKKM05]:\n", "$$\n", "x^+ =\n", "\\begin{bmatrix}\n", " 1 & 1\\\\\n", " 0 & 1\n", "\\end{bmatrix}x +\n", "\\begin{bmatrix}\n", " 1\\\\\n", " 1\n", "\\end{bmatrix} u\n", "+ w\n", "$$\n", "with the state feedback control $u(x) = -\\begin{bmatrix}1.17 & 1.03\\end{bmatrix} x$.\n", "The controlled system is therefore\n", "$$\n", "x^+ =\n", "\\left(\\begin{bmatrix}\n", " 1 & 1\\\\\n", " 0 & 1\n", "\\end{bmatrix} -\n", "\\begin{bmatrix}\n", " 1\\\\\n", " 1\n", "\\end{bmatrix}\n", "\\begin{bmatrix}1.17 & 1.03\\end{bmatrix}\\right)x\n", "+ w =\n", "\\begin{bmatrix}\n", " -0.17 & -0.03\\\\\n", " -1.17 & -0.03\n", "\\end{bmatrix}x\n", "+ w.\n", "$$\n", "\n", "[RKKM05] Sasa V. Rakovic, Eric C. Kerrigan, Konstantinos I. Kouramas, David Q. Mayne *Invariant approximations of the minimal robust positively Invariant set*. IEEE Transactions on Automatic Control 50 (**2005**): 406-410." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "2×2 Array{Float64,2}:\n -0.17 -0.03\n -1.17 -0.03" }, "metadata": {}, "execution_count": 1 } ], "cell_type": "code", "source": [ "A = [1 1; 0 1] - [1; 1] * [1.17 1.03]" ], "metadata": {}, "execution_count": 1 }, { "cell_type": "markdown", "source": [ "The set of disturbance is the unit ball of the infinity norm." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "V-representation Polyhedra.PointsHull{Float64,Array{Float64,1},Int64}:\n4-element iterator of Array{Float64,1}:\n [-1.0, -1.0]\n [-1.0, 1.0]\n [1.0, -1.0]\n [1.0, 1.0]" }, "metadata": {}, "execution_count": 2 } ], "cell_type": "code", "source": [ "using Polyhedra\n", "Wv = vrep([[x, y] for x in [-1.0, 1.0] for y in [-1.0, 1.0]])" ], "metadata": {}, "execution_count": 2 }, { "cell_type": "markdown", "source": [ "We will use the default library for this example but feel free to pick any other library from [this list of available libraries](https://juliapolyhedra.github.io/) such as [CDDLib](https://github.com/JuliaPolyhedra/CDDLib.jl).\n", "The LP solver used to detect redundant points in the V-representation is [GLPK](https://github.com/JuliaOpt/GLPK.jl). Again, you can replace it with any other solver listed [here](http://jump.dev/JuMP.jl/dev/installation/#Getting-Solvers-1) that supports LP." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "Polyhedron DefaultPolyhedron{Float64,Polyhedra.Intersection{Float64,Array{Float64,1},Int64},Polyhedra.Hull{Float64,Array{Float64,1},Int64}}:\n4-element iterator of Array{Float64,1}:\n [-1.0, -1.0]\n [-1.0, 1.0]\n [1.0, -1.0]\n [1.0, 1.0]" }, "metadata": {}, "execution_count": 3 } ], "cell_type": "code", "source": [ "using GLPK\n", "using JuMP\n", "lib = DefaultLibrary{Float64}(GLPK.Optimizer)\n", "W = polyhedron(Wv, lib)" ], "metadata": {}, "execution_count": 3 }, { "cell_type": "markdown", "source": [ "The $F_s$ function of equation (2) of [RKKM05] can be implemented as follows." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "Fs (generic function with 2 methods)" }, "metadata": {}, "execution_count": 4 } ], "cell_type": "code", "source": [ "function Fs(s::Integer, verbose=1)\n", " @assert s ≥ 1\n", " F = W\n", " A_W = W\n", " for i in 1:(s-1)\n", " A_W = A * A_W\n", " F += A_W\n", " if verbose ≥ 1\n", " println(\"Number of points after adding A^$i * W: \", npoints(F))\n", " end\n", " removevredundancy!(F)\n", " if verbose ≥ 1\n", " println(\"Number of points after removing redundant ones: \", npoints(F))\n", " end\n", " end\n", " return F\n", "end" ], "metadata": {}, "execution_count": 4 }, { "cell_type": "markdown", "source": [ "We can see below that only the V-representation is computed. In fact, no H-representation was ever computed during `Fs`. Computing $AW$ is done by multiplying all the points by $A$ and doing the Minkowski sum is done by summing each pair of points. The redundancy removal is carried out by CDD's internal LP solver." ], "metadata": {} }, { "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of points after adding A^1 * W: 16\n", "Number of points after removing redundant ones: 8\n", "Number of points after adding A^2 * W: 32\n", "Number of points after removing redundant ones: 12\n", "Number of points after adding A^3 * W: 48\n", "Number of points after removing redundant ones: 16\n", " 2.717412 seconds (4.73 M allocations: 254.646 MiB, 4.56% gc time)\n" ] }, { "output_type": "execute_result", "data": { "text/plain": "Polyhedron DefaultPolyhedron{Float64,Polyhedra.Intersection{Float64,Array{Float64,1},Int64},Polyhedra.Hull{Float64,Array{Float64,1},Int64}}:\n16-element iterator of Array{Float64,1}:\n [-1.29, -2.56]\n [-1.29, -0.5599999999999999]\n [-0.9500000000000002, 1.7799999999999996]\n [-0.9380000000000002, 1.8519999999999996]\n [-0.9022000000000001, 2.0157999999999996]\n [-0.8980000000000001, 2.0319999999999996]\n [-0.77, 2.4999999999999996]\n [-0.71, 2.56]\n [1.29, 2.56]\n [1.29, 0.5599999999999999]\n [0.9500000000000002, -1.7799999999999996]\n [0.9380000000000002, -1.8519999999999996]\n [0.9022000000000001, -2.0157999999999996]\n [0.8980000000000001, -2.0319999999999996]\n [0.77, -2.4999999999999996]\n [0.71, -2.56]" }, "metadata": {}, "execution_count": 5 } ], "cell_type": "code", "source": [ "@time Fs(4)" ], "metadata": {}, "execution_count": 5 }, { "cell_type": "markdown", "source": [ "The Figure 1 of [RKKM05] can be reproduced as follows:" ], "metadata": {} }, { "outputs": [], "cell_type": "code", "source": [ "using Plots\n", "plot()\n", "for i in 10:-1:1\n", " plot!(Fs(i, 0))\n", "end" ], "metadata": {}, "execution_count": 6 }, { "cell_type": "markdown", "source": [ "The cell needs to return the plot for it to be displayed\n", "but the `for` loop returns `nothing` so we add this dummy `plot!` that returns the plot" ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "Plot{Plots.GRBackend() n=10}", "image/png": "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", "text/html": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "execution_count": 7 } ], "cell_type": "code", "source": [ "plot!()" ], "metadata": {}, "execution_count": 7 }, { "cell_type": "markdown", "source": [ "Now, suppose we want to compute an invariant set by scaling $F_s$ by the appropriate $\\alpha$.\n", "In equation (11) of [RKKM05], we want to check whether $A^s W \\subseteq \\alpha W$ which is equivalent to $W \\subseteq \\alpha A^{-s} W$.\n", "Note that `A^s \\ W` triggers the computation of the H-representation of `W` and `A_W` is H-represented." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "αo (generic function with 1 method)" }, "metadata": {}, "execution_count": 8 } ], "cell_type": "code", "source": [ "function αo(s)\n", " A_W = A^s \\ W\n", " hashyperplanes(A_W) && error(\"HyperPlanes not supported\")\n", " return maximum([Polyhedra.support_function(h.a, W) / h.β for h in halfspaces(A_W)])\n", "end" ], "metadata": {}, "execution_count": 8 }, { "cell_type": "markdown", "source": [ "We obtain $\\alpha \\approx 1.9 \\cdot 10^{-5}$ like in [RKKM05]." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "1.9190700000000013e-5" }, "metadata": {}, "execution_count": 9 } ], "cell_type": "code", "source": [ "α = αo(10)" ], "metadata": {}, "execution_count": 9 }, { "cell_type": "markdown", "source": [ "The scaled set is is the following:" ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "Plot{Plots.GRBackend() n=1}", "image/png": "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", "text/html": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "execution_count": 10 } ], "cell_type": "code", "source": [ "using Plots\n", "plot((1 - α)^(-1) * Fs(10, 0))" ], "metadata": {}, "execution_count": 10 }, { "cell_type": "markdown", "source": [ "---\n", "\n", "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" ], "metadata": {} } ], "nbformat_minor": 3, "metadata": { "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.5.2" }, "kernelspec": { "name": "julia-1.5", "display_name": "Julia 1.5.2", "language": "julia" } }, "nbformat": 4 }