Skip to content

Commit f8ddb43

Browse files
committed
update references
1 parent fe11210 commit f8ddb43

File tree

2 files changed

+280
-28
lines changed

2 files changed

+280
-28
lines changed

DMC.ipynb

Lines changed: 63 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,19 @@
66
"source": [
77
"# Implementing Dynamic Matrix Control in Python\n",
88
"\n",
9-
"- Author: Siang Lim, February 2020\n",
10-
"- Contents are from this book: Hokanson, D. A., & Gerstle, J. G. (1992). Dynamic Matrix Control Multivariable Controllers. Practical Distillation Control, 248–271. doi:10.1007/978-1-4757-0277-4_12 "
9+
"#### Author: Siang Lim, February 2020\n",
10+
"\n",
11+
"** work in progress **\n",
12+
"\n",
13+
"- Contents of this notebook are derived from DMC literature:\n",
14+
" - Hokanson, D. A., & Gerstle, J. G. (1992). **Dynamic Matrix Control Multivariable Controllers.** Practical Distillation Control, 248–271.\n",
15+
" - Sorensen, R. C., & Cutler, C. R. (1998). **LP integrates economics into dynamic matrix control.** Hydrocarbon processing (International ed.), 77(9), 57-65.\n",
16+
" - Morshedi, A. M., Cutler, C. R., & Skrovanek, T. A. (1985, June). **Optimal solution of dynamic matrix control with linear programing techniques (LDMC).** In 1985 American Control Conference (pp. 199-208). IEEE."
1117
]
1218
},
1319
{
1420
"cell_type": "code",
15-
"execution_count": 695,
21+
"execution_count": 1,
1622
"metadata": {
1723
"collapsed": true
1824
},
@@ -22,6 +28,24 @@
2228
"import matplotlib.pyplot as plt"
2329
]
2430
},
31+
{
32+
"cell_type": "markdown",
33+
"metadata": {},
34+
"source": [
35+
"# Definitions\n",
36+
"\n",
37+
"#### Independent Variables\n",
38+
"\n",
39+
"- MV (Manipulated Variables)\n",
40+
" - Variables that we can move directly, valves, feed rate etc.\n",
41+
"\n",
42+
"- FF (Feedforward Variables)\n",
43+
" - Disturbances that we can't control directly - ambient temperature.\n",
44+
"\n",
45+
"#### Dependent Variables\n",
46+
"- Variables that change due to a change in the independent variables, e.g. temperatures, pressures\n"
47+
]
48+
},
2549
{
2650
"cell_type": "markdown",
2751
"metadata": {},
@@ -44,7 +68,7 @@
4468
},
4569
{
4670
"cell_type": "code",
47-
"execution_count": 696,
71+
"execution_count": 2,
4872
"metadata": {
4973
"collapsed": true
5074
},
@@ -55,7 +79,7 @@
5579
},
5680
{
5781
"cell_type": "code",
58-
"execution_count": 697,
82+
"execution_count": 3,
5983
"metadata": {},
6084
"outputs": [
6185
{
@@ -64,7 +88,7 @@
6488
"Text(0,0.5,'Response')"
6589
]
6690
},
67-
"execution_count": 697,
91+
"execution_count": 3,
6892
"metadata": {},
6993
"output_type": "execute_result"
7094
},
@@ -121,7 +145,7 @@
121145
},
122146
{
123147
"cell_type": "code",
124-
"execution_count": 698,
148+
"execution_count": 4,
125149
"metadata": {},
126150
"outputs": [
127151
{
@@ -143,16 +167,16 @@
143167
},
144168
{
145169
"cell_type": "code",
146-
"execution_count": 699,
170+
"execution_count": 5,
147171
"metadata": {},
148172
"outputs": [
149173
{
150174
"data": {
151175
"text/plain": [
152-
"[<matplotlib.lines.Line2D at 0x117eccef0>]"
176+
"[<matplotlib.lines.Line2D at 0x10e2d79e8>]"
153177
]
154178
},
155-
"execution_count": 699,
179+
"execution_count": 5,
156180
"metadata": {},
157181
"output_type": "execute_result"
158182
},
@@ -192,7 +216,7 @@
192216
},
193217
{
194218
"cell_type": "code",
195-
"execution_count": 700,
219+
"execution_count": 6,
196220
"metadata": {},
197221
"outputs": [
198222
{
@@ -226,8 +250,10 @@
226250
},
227251
{
228252
"cell_type": "code",
229-
"execution_count": 701,
230-
"metadata": {},
253+
"execution_count": 7,
254+
"metadata": {
255+
"collapsed": true
256+
},
231257
"outputs": [],
232258
"source": [
233259
"Y = np.multiply(A,U.T)\n",
@@ -237,7 +263,7 @@
237263
},
238264
{
239265
"cell_type": "code",
240-
"execution_count": 702,
266+
"execution_count": 8,
241267
"metadata": {},
242268
"outputs": [
243269
{
@@ -255,7 +281,7 @@
255281
" [-0. , -1.999, -0. , -0. , 1.95 ]])"
256282
]
257283
},
258-
"execution_count": 702,
284+
"execution_count": 8,
259285
"metadata": {},
260286
"output_type": "execute_result"
261287
}
@@ -266,7 +292,7 @@
266292
},
267293
{
268294
"cell_type": "code",
269-
"execution_count": 703,
295+
"execution_count": 9,
270296
"metadata": {},
271297
"outputs": [
272298
{
@@ -276,7 +302,7 @@
276302
" array([1, 1, 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4]))"
277303
]
278304
},
279-
"execution_count": 703,
305+
"execution_count": 9,
280306
"metadata": {},
281307
"output_type": "execute_result"
282308
}
@@ -287,7 +313,7 @@
287313
},
288314
{
289315
"cell_type": "code",
290-
"execution_count": 704,
316+
"execution_count": 10,
291317
"metadata": {},
292318
"outputs": [
293319
{
@@ -296,7 +322,7 @@
296322
"array([1, 4])"
297323
]
298324
},
299-
"execution_count": 704,
325+
"execution_count": 10,
300326
"metadata": {},
301327
"output_type": "execute_result"
302328
}
@@ -307,7 +333,7 @@
307333
},
308334
{
309335
"cell_type": "code",
310-
"execution_count": 705,
336+
"execution_count": 11,
311337
"metadata": {},
312338
"outputs": [
313339
{
@@ -345,7 +371,7 @@
345371
},
346372
{
347373
"cell_type": "code",
348-
"execution_count": 706,
374+
"execution_count": 12,
349375
"metadata": {
350376
"collapsed": true
351377
},
@@ -356,7 +382,7 @@
356382
},
357383
{
358384
"cell_type": "code",
359-
"execution_count": 707,
385+
"execution_count": 13,
360386
"metadata": {},
361387
"outputs": [
362388
{
@@ -383,7 +409,7 @@
383409
},
384410
{
385411
"cell_type": "code",
386-
"execution_count": 708,
412+
"execution_count": 14,
387413
"metadata": {
388414
"collapsed": true
389415
},
@@ -396,7 +422,7 @@
396422
},
397423
{
398424
"cell_type": "code",
399-
"execution_count": 709,
425+
"execution_count": 15,
400426
"metadata": {},
401427
"outputs": [
402428
{
@@ -424,7 +450,7 @@
424450
},
425451
{
426452
"cell_type": "code",
427-
"execution_count": 710,
453+
"execution_count": 16,
428454
"metadata": {
429455
"collapsed": true
430456
},
@@ -435,7 +461,7 @@
435461
},
436462
{
437463
"cell_type": "code",
438-
"execution_count": 711,
464+
"execution_count": 17,
439465
"metadata": {},
440466
"outputs": [
441467
{
@@ -463,7 +489,7 @@
463489
},
464490
{
465491
"cell_type": "code",
466-
"execution_count": 712,
492+
"execution_count": 18,
467493
"metadata": {
468494
"collapsed": true
469495
},
@@ -485,7 +511,7 @@
485511
},
486512
{
487513
"cell_type": "code",
488-
"execution_count": 713,
514+
"execution_count": 19,
489515
"metadata": {
490516
"collapsed": true
491517
},
@@ -543,6 +569,15 @@
543569
"$$ \\min (y^{sp} - y^{pc} + A\\Delta u)^2 $$"
544570
]
545571
},
572+
{
573+
"cell_type": "code",
574+
"execution_count": null,
575+
"metadata": {
576+
"collapsed": true
577+
},
578+
"outputs": [],
579+
"source": []
580+
},
546581
{
547582
"cell_type": "code",
548583
"execution_count": null,

0 commit comments

Comments
 (0)