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 | |
---|