[37] | 1 | %YALMIPDEMO Brief tutorial and examples. |
---|
| 2 | % |
---|
| 3 | % See also YALMIPTEST |
---|
| 4 | |
---|
| 5 | % Author Johan Löfberg |
---|
| 6 | % $Id: yalmipdemo.m,v 1.6 2006/01/17 15:49:08 joloef Exp $ |
---|
| 7 | |
---|
| 8 | % Check for paths |
---|
| 9 | if ~(exist('socpex')==2) |
---|
| 10 | disp('You have to set the path to the demo library (...\yalmip\demos\)') |
---|
| 11 | return; |
---|
| 12 | end |
---|
| 13 | |
---|
| 14 | |
---|
| 15 | i = 1; |
---|
| 16 | problems{i}.class = 0; |
---|
| 17 | problems{i}.info = 'Getting started, the basics'; |
---|
| 18 | problems{i}.call = 'basicsex';i = i+1; |
---|
| 19 | |
---|
| 20 | problems{i}.class = 1; |
---|
| 21 | problems{i}.info = 'Linear and quadratic programming'; |
---|
| 22 | problems{i}.call = 'regressex';i = i+1; |
---|
| 23 | |
---|
| 24 | problems{i}.class = 1; |
---|
| 25 | problems{i}.info = 'Second order cone programming'; |
---|
| 26 | problems{i}.call = 'socpex';i = i+1; |
---|
| 27 | |
---|
| 28 | problems{i}.class = 2; |
---|
| 29 | problems{i}.info = 'Lyapunov stability (SDP)'; |
---|
| 30 | problems{i}.call = 'stabilityex';i = i+1; |
---|
| 31 | |
---|
| 32 | problems{i}.class = 0; |
---|
| 33 | problems{i}.info = 'Model predictive control (LP,QP,SDP)'; |
---|
| 34 | problems{i}.call = 'mpcex';i = i+1; |
---|
| 35 | |
---|
| 36 | problems{i}.class = 2; |
---|
| 37 | problems{i}.info = 'Determinant maximization (MAXDET)'; |
---|
| 38 | problems{i}.call = 'maxdetex';i = i+1; |
---|
| 39 | |
---|
| 40 | problems{i}.class = 2; |
---|
| 41 | problems{i}.info = 'Decay-rate estimation (SDP)'; |
---|
| 42 | problems{i}.call = 'decayex';i = i+1; |
---|
| 43 | |
---|
| 44 | problems{i}.class = 0; |
---|
| 45 | problems{i}.info = 'Mixed integer programming (MILP,MIQP,MICP)'; |
---|
| 46 | problems{i}.call = 'milpex';i = i+1; |
---|
| 47 | |
---|
| 48 | problems{i}.class = 3; |
---|
| 49 | problems{i}.info = 'Working with polynomial expressions'; |
---|
| 50 | problems{i}.call = 'nonlinex';i = i+1; |
---|
| 51 | |
---|
| 52 | problems{i}.class = 3; |
---|
| 53 | problems{i}.info = 'Working with nonlinear operators'; |
---|
| 54 | problems{i}.call = 'nonlinopex';i = i+1; |
---|
| 55 | |
---|
| 56 | problems{i}.class = 3; |
---|
| 57 | problems{i}.info = 'Nonlinear semidefinite programming using PENBMI (BMI)'; |
---|
| 58 | problems{i}.call = 'bmiex1';i = i+1; |
---|
| 59 | |
---|
| 60 | problems{i}.class = 3; |
---|
| 61 | problems{i}.info = 'Decay-rate estimation revisited with PENBMI (BMI)'; |
---|
| 62 | problems{i}.call = 'decaybmiex';i = i+1; |
---|
| 63 | |
---|
| 64 | problems{i}.class = 3; |
---|
| 65 | problems{i}.info = 'Simultaneous stabilization with PENBMI (BMI)'; |
---|
| 66 | problems{i}.call = 'simstabex';i = i+1; |
---|
| 67 | |
---|
| 68 | problems{i}.class = 4; |
---|
| 69 | problems{i}.info = 'Sum-of-squares decompositions'; |
---|
| 70 | problems{i}.call = 'sosex';i = i+1; |
---|
| 71 | |
---|
| 72 | problems{i}.class = 4; |
---|
| 73 | problems{i}.info = 'Polynomial programming using moment-relaxations'; |
---|
| 74 | problems{i}.call = 'momentex';i = i+1; |
---|
| 75 | |
---|
| 76 | problems{i}.class = 4; |
---|
| 77 | problems{i}.info = 'Global nonlinear programming'; |
---|
| 78 | problems{i}.call = 'globalex';i = i+1; |
---|
| 79 | |
---|
| 80 | problems{i}.class = 5; |
---|
| 81 | problems{i}.info = 'Multi-parametric programming'; |
---|
| 82 | problems{i}.call = 'mptex';i = i+1; |
---|
| 83 | |
---|
| 84 | problems{i}.class = 5; |
---|
| 85 | problems{i}.info = 'KYP problems (SDP)'; |
---|
| 86 | problems{i}.call = 'kypdex';i = i+1; |
---|
| 87 | |
---|
| 88 | problems{i}.class = 5; |
---|
| 89 | problems{i}.info = 'Posynomial geometric programming'; |
---|
| 90 | problems{i}.call = 'geometricex';i = i+1; |
---|
| 91 | |
---|
| 92 | problems{i}.class = 5; |
---|
| 93 | problems{i}.info = 'Complex-valued problems'; |
---|
| 94 | problems{i}.call = 'complexex';i = i+1; |
---|
| 95 | |
---|
| 96 | problems{i}.class = 5; |
---|
| 97 | problems{i}.info = 'Dual variables'; |
---|
| 98 | problems{i}.call = 'dualex';i = i+1; |
---|
| 99 | |
---|
| 100 | |
---|
| 101 | while (1) |
---|
| 102 | clc |
---|
| 103 | echo off |
---|
| 104 | |
---|
| 105 | disp(' ') |
---|
| 106 | disp(' ') |
---|
| 107 | disp(' YALMIP DEMO') |
---|
| 108 | disp(' ') |
---|
| 109 | oldclass = 0; |
---|
| 110 | for i = 1:length(problems) |
---|
| 111 | % if problems{i}.class == oldclass |
---|
| 112 | % fprintf('\n'); |
---|
| 113 | % end |
---|
| 114 | |
---|
| 115 | fprintf([' %1.2d) ' problems{i}.info '\n'],i); |
---|
| 116 | % oldclass = problems{i}.class; |
---|
| 117 | end |
---|
| 118 | |
---|
| 119 | disp(' '); |
---|
| 120 | disp(' 0) quit') |
---|
| 121 | inp = input('Select demo: '); |
---|
| 122 | try |
---|
| 123 | if ~isempty(inp) |
---|
| 124 | switch(inp) |
---|
| 125 | case 0 |
---|
| 126 | return |
---|
| 127 | otherwise |
---|
| 128 | if inp<=length(problems) |
---|
| 129 | feval(problems{inp}.call); |
---|
| 130 | end |
---|
| 131 | end |
---|
| 132 | end |
---|
| 133 | catch |
---|
| 134 | disp(lasterr) |
---|
| 135 | pause |
---|
| 136 | end |
---|
| 137 | end |
---|
| 138 | |
---|