در این مطلب، ویدئو ابزار طراحی کنترل پیشبینی مدل با پایتون – توضیح کامل کد با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:27:24
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,080 –> 00:00:01,760
سال نو را به همه تبریک می گویم این وینااک
2
00:00:01,760 –> 00:00:04,000
در اینجا این ویدیو را یاد خواهید گرفت که
3
00:00:04,000 –> 00:00:06,399
چگونه یک مدل کنترل کننده پیش بینی در
4
00:00:06,399 –> 00:00:07,520
پایتون طراحی کنید
5
00:00:07,520 –> 00:00:09,519
و حتی آن را
6
00:00:09,519 –> 00:00:12,160
از طریق ابزار بهینه سازی درجه دوم آزمایش کنید و
7
00:00:12,160 –> 00:00:13,679
می توانید تأیید کنید که
8
00:00:13,679 –> 00:00:15,679
کنترلر کار می کند تا بتوانید از آن
9
00:00:15,679 –> 00:00:17,199
در پروژه ها و تکالیف خود استفاده کنید. بیایید
10
00:00:17,199 –> 00:00:19,920
شروع کنیم تا هر پروژه نرمافزاری
11
00:00:19,920 –> 00:00:22,320
چیزی به نام نمودار کلاس داشته باشد
12
00:00:22,320 –> 00:00:24,480
که تمام کلاسهای شما را در
13
00:00:24,480 –> 00:00:25,519
یک
14
00:00:25,519 –> 00:00:27,519
نمودار جمع میکند تا بتوانید نحوه کار آنها با یکدیگر را درک کنید،
15
00:00:27,519 –> 00:00:29,439
16
00:00:29,439 –> 00:00:31,199
بنابراین بیایید با یک کلاس سیستم شروع کنیم.
17
00:00:31,199 –> 00:00:34,640
18
00:00:34,640 –> 00:00:36,800
خروجیهای ورودی و
19
00:00:36,800 –> 00:00:38,160
نقاط مجموعه
20
00:00:38,160 –> 00:00:39,280
شما
21
00:00:39,280 –> 00:00:42,480
ماتریسها را در آنجا دارید ac abc b و به همین ترتیب
22
00:00:42,480 –> 00:00:45,360
ماتریس حالت
23
00:00:45,360 –> 00:00:48,559
24
00:00:48,559 –> 00:00:51,440
25
00:00:51,440 –> 00:00:53,039
26
00:00:53,039 –> 00:00:54,640
27
00:00:54,640 –> 00:00:57,199
28
00:00:57,199 –> 00:01:01,120
شماست. سپس u r خود را e و z pr
29
00:01:01,120 –> 00:01:03,199
را تنظیم کنید تا u ورودی های شما باشد r مجموعه نقاط تنظیم شما است
30
00:01:03,199 –> 00:01:06,320
e خطا است و z pr
31
00:01:06,320 –> 00:01:07,920
خروجی های پیش بینی
32
00:01:07,920 –> 00:01:11,040
شده برای کنترل کننده mpc است.
33
00:01:11,040 –> 00:01:13,520
dt x y و z زمان گسسته
34
00:01:13,520 –> 00:01:16,799
ای هستند که خروجی ها را بیان می کند و نقاط تنظیم
35
00:01:16,799 –> 00:01:19,439
qr ماتریس های انتظار روی
36
00:01:19,439 –> 00:01:22,080
کنترل کننده mpc هستند و محدودیت های ورودی
37
00:01:22,080 –> 00:01:24,080
شی فرهنگ لغت شما
38
00:01:24,080 –> 00:01:25,520
برای
39
00:01:25,520 –> 00:01:28,880
محدودیت های ورودی های محرک شما هستند،
40
00:01:28,880 –> 00:01:31,119
سپس شما دو متغیر عدد صحیح num
41
00:01:31,119 –> 00:01:32,720
abs و num link دارید.
42
00:01:32,720 –> 00:01:34,400
بنابراین این تعداد
43
00:01:34,400 –> 00:01:35,840
محدودیتهای مطلق شما و تعداد
44
00:01:35,840 –> 00:01:37,439
محدودیتهای افزایشی شما است،
45
00:01:37,439 –> 00:01:39,280
من آن را در آنجا قرار
46
00:01:39,280 –> 00:01:43,119
دادهام زیرا در طراحی کنترلر mpc مورد نیاز است،
47
00:01:43,119 –> 00:01:45,040
شما چند روش در اینجا دارید، بنابراین
48
00:01:45,040 –> 00:01:46,880
ابعاد بهروزرسانی مدل حالت پیوسته
49
00:01:46,880 –> 00:01:47,840
50
00:01:47,840 –> 00:01:49,759
شرایط اولیه را بهروزرسانی کنید
51
00:01:49,759 –> 00:01:53,200
زیرا این موارد می توانید توسط خودتان ورودی
52
00:01:53,200 –> 00:01:54,399
گسسته
53
00:01:54,399 –> 00:01:57,680
dt که همچنین توسط نماد گام شما وارد می شود،
54
00:01:57,680 –> 00:02:00,159
شبیه سازی یک مرحله ای را انجام دهید،
55
00:02:00,159 –> 00:02:02,399
سپس پارامترهای mpc را
56
00:02:02,399 –> 00:02:03,759
برای q و r
57
00:02:03,759 –> 00:02:06,880
به روز کنید، بنابراین q و r را وارد کنید و سپس
58
00:02:06,880 –> 00:02:09,038
مدل mpc داخلی را به روز کنید
59
00:02:09,038 –> 00:02:10,720
و سپس محدودیت های به روز رسانی دارید.
60
00:02:10,720 –> 00:02:13,280
بنابراین مدل محدودیت نیز یک
61
00:02:13,280 –> 00:02:14,879
نمایش برداری ماتریسی است
62
00:02:14,879 –> 00:02:16,800
، به همین دلیل است که باید این کار را به
63
00:02:16,800 –> 00:02:17,920
این ترتیب انجام دهید
64
00:02:17,920 –> 00:02:19,680
، زیرا یک بار دیگر ورودی ها وجود دارند
65
00:02:19,680 –> 00:02:22,400
شما می توانید آنها را تعریف کنید تا بتوانید
66
00:02:22,400 –> 00:02:24,720
در واقع هر سیستمی را که می خواهید در
67
00:02:24,720 –> 00:02:26,239
این کد تعریف کنید و سپس
68
00:02:26,239 –> 00:02:29,040
این نوع تجزیه و تحلیل را روی آن انجام دهید، بنابراین
69
00:02:29,040 –> 00:02:30,879
با این گفته بیایید به کلاس طراحی mpc برویم
70
00:02:30,879 –> 00:02:32,800
71
00:02:32,800 –> 00:02:35,599
شما افق پیش بینی را دارید np این
72
00:02:35,599 –> 00:02:37,040
یک متغیر شناور است
73
00:02:37,040 –> 00:02:39,360
که h دارید. معکوس و k، بنابراین این
74
00:02:39,360 –> 00:02:41,040
سود بازخورد شما و
75
00:02:41,040 –> 00:02:43,440
مدل mpc شما
76
00:02:43,440 –> 00:02:44,959
برای ضریب است
77
00:02:44,959 –> 00:02:46,480
، بعد از اینکه کد را به شما نشان میدهم، بیشتر خواهید دید
78
00:02:46,480 –> 00:02:47,360
79
00:02:47,360 –> 00:02:50,000
و سپس مدل محدودیت m
80
00:02:50,000 –> 00:02:51,200
کمتر از g را دارید،
81
00:02:51,200 –> 00:02:53,760
بنابراین m یک ماتریس است و سپس g یک بردار
82
00:02:53,760 –> 00:02:56,160
f است. و g ماتریسهای mpc هستند، آنها
83
00:02:56,160 –> 00:02:58,080
مدل داخلی هستند
84
00:02:58,080 –> 00:03:00,959
و کلاس empc روش mpc کارآمدی است که
85
00:03:00,959 –> 00:03:01,920
86
00:03:01,920 –> 00:03:04,879
این روش از طراحی mpc به ارث برده است.
87
00:03:04,879 –> 00:03:06,480
88
00:03:06,480 –> 00:03:09,440
89
00:03:09,440 –> 00:03:11,200
90
00:03:11,200 –> 00:03:13,280
91
00:03:13,280 –> 00:03:15,200
سیستم شما را ماتریس می کند
92
00:03:15,200 –> 00:03:16,879
و آن را به همراه ابعاد خود
93
00:03:16,879 –> 00:03:18,400
برای تعداد
94
00:03:18,400 –> 00:03:20,800
ورودی های حالت ها و نقاط تنظیم شده در
95
00:03:20,800 –> 00:03:22,959
کنار مدل محدودیت قرار
96
00:03:22,959 –> 00:03:24,400
دهید و می توانید
97
00:03:24,400 –> 00:03:26,959
آن را به این صورت تعریف کنید زیرا فقط می توانید
98
00:03:26,959 –> 00:03:29,200
محدودیت ها را وارد کنید شی دیکشنری و
99
00:03:29,200 –> 00:03:31,200
سپس تعداد ورودی ها به همراه
100
00:03:31,200 –> 00:03:32,959
تعداد محدودیت ها برای مطلق
101
00:03:32,959 –> 00:03:34,799
و افزایشی
102
00:03:34,799 –> 00:03:36,400
و با این اطلاعات که باید
103
00:03:36,400 –> 00:03:38,000
همه چیزهایی باشد که برای ایجاد نمایش محدودیت نیاز دارید،
104
00:03:38,000 –> 00:03:40,400
105
00:03:40,400 –> 00:03:42,080
بنابراین از آن به بعد کلاس برنامه نویسی چهارگانه را خواهید داشت
106
00:03:42,080 –> 00:03:43,519
107
00:03:43,519 –> 00:03:45,440
این یکی ترکیبی
108
00:03:45,440 –> 00:03:47,360
از طراحی mpc است.
109
00:03:47,360 –> 00:03:49,760
چون برای بهینهسازی درجه دوم به پارامترهای mpc نیاز دارید،
110
00:03:49,760 –> 00:03:52,480
111
00:03:52,480 –> 00:03:55,280
بنابراین w و z تعداد تکرار
112
00:03:55,280 –> 00:03:57,519
خطا و
113
00:03:57,519 –> 00:04:00,640
ضریب لاگرانژ لامبدا لامبدا هستند، بنابراین این
114
00:04:00,640 –> 00:04:02,799
پارامترها از فرمولها هستند که
115
00:04:02,799 –> 00:04:04,640
116
00:04:04,640 –> 00:04:06,159
مستقیماً آنها را اینجا قرار میدهم زیرا
117
00:04:06,159 –> 00:04:08,480
برای انجام بهینهسازی به آنها نیاز
118
00:04:08,480 –> 00:04:10,480
خواهید داشت. گزینه هایی
119
00:04:10,480 –> 00:04:12,640
برای بهینه سازی می توانید از روش برنامه نویسی
120
00:04:12,640 –> 00:04:14,080
درجه دوم hqp در مقابل
121
00:04:14,080 –> 00:04:15,360
روش برنامه نویسی درجه دوم
122
00:04:15,360 –> 00:04:17,199
hildretz یا pqp که
123
00:04:17,199 –> 00:04:19,040
برنامه نویسی درجه دوم موازی است استفاده کنید،
124
00:04:19,040 –> 00:04:20,720
بنابراین هر یک از اینها باید همان نتیجه را به شما بدهد
125
00:04:20,720 –> 00:04:21,680
126
00:04:21,680 –> 00:04:23,759
اما کمی متفاوت
127
00:04:23,759 –> 00:04:26,240
128
00:04:26,240 –> 00:04:28,960
هستند. pqp می
129
00:04:28,960 –> 00:04:31,040
تواند مفید باشد زیرا یک عملیات ساده است،
130
00:04:31,040 –> 00:04:32,880
بنابراین
131
00:04:32,880 –> 00:04:35,440
با این آخرین نمودار حرکت می کنیم اکنون
132
00:04:35,440 –> 00:04:37,680
به کد واقعی می پردازم، جایی که من
133
00:04:37,680 –> 00:04:39,520
همه چیز را با جزئیات بررسی می کنم،
134
00:04:39,520 –> 00:04:41,040
بنابراین اکنون می توانیم با
135
00:04:41,040 –> 00:04:44,080
کد شروع کنیم، اجازه دهید با فایل توابع شروع کنیم،
136
00:04:44,080 –> 00:04:45,840
بنابراین در ابتدا فقط
137
00:04:45,840 –> 00:04:47,440
همه چیزهایی
138
00:04:47,440 –> 00:04:50,000
را که برای استفاده از تابع نیاز دارم وارد می کنم.
139
00:04:50,000 –> 00:04:52,320
یکی از مواردی که من دارم پایداری خوب است در حال حاضر
140
00:04:52,320 –> 00:04:54,320
این یکی اساساً
141
00:04:54,320 –> 00:04:56,800
شما می توانید سود بازخورد را از
142
00:04:56,800 –> 00:04:59,120
mpc وارد کنید همانطور که قبلاً در
143
00:04:59,120 –> 00:05:01,360
مورد ماتریس mvpc بحث کردم
144
00:05:01,360 –> 00:05:04,479
زیرا ممکن است منهای bkf باشد
145
00:05:04,479 –> 00:05:07,120
گاهی اوقات اگر دقیقاً مانند یک باشد ممکن است منهای bk نیز
146
00:05:07,120 –> 00:05:09,600
داشته باشید. بازخورد lqr بنابراین
147
00:05:09,600 –> 00:05:11,840
در آن صورت نیازی به f نخواهید داشت،
148
00:05:11,840 –> 00:05:13,280
بنابراین در آن صورت باید
149
00:05:13,280 –> 00:05:14,639
هیچ کدام را برای f
150
00:05:14,639 –> 00:05:16,800
همراه با زمان نمونه برداری پاس نکنید، بنابراین این یکی
151
00:05:16,800 –> 00:05:18,240
فقط قسمت های واقعی
152
00:05:18,240 –> 00:05:19,919
و خیالی
153
00:05:19,919 –> 00:05:21,840
مقادیر ویژه ماتریس a را دریافت می کند
154
00:05:21,840 –> 00:05:24,639
سیستم حلقه باز و
155
00:05:24,639 –> 00:05:26,639
سیستم حلقه بسته در اینجا برای آن شما
156
00:05:26,639 –> 00:05:28,280
فقط باید از جبر scipy.linear استفاده کنید،
157
00:05:28,280 –> 00:05:30,639
بنابراین این
158
00:05:30,639 –> 00:05:33,600
یکی مقادیر ویژه را به تنهایی انجام می دهد
159
00:05:33,600 –> 00:05:35,280
و سپس من فقط یک نمودار روی یک
160
00:05:35,280 –> 00:05:38,720
دایره واحد در اینجا بسیار ساده می سازم
161
00:05:38,720 –> 00:05:40,960
و سپس من فقط افسانه ای ترسیم کرد در آنجا
162
00:05:40,960 –> 00:05:44,000
و محور x و y را برچسب گذاری کنید،
163
00:05:44,000 –> 00:05:46,240
محور دوم مهم تر است،
164
00:05:46,240 –> 00:05:48,000
این یکی محدودیت ها را بررسی می کند تا
165
00:05:48,000 –> 00:05:50,880
مطمئن شود که اگر mu کمتر از g
166
00:05:50,880 –> 00:05:52,720
باشد، ما فقط عنصر را به صورت عاقلانه ضرب می کنیم و
167
00:05:52,720 –> 00:05:55,440
سپس مقداری به e اضافه می کنیم
168
00:05:55,440 –> 00:05:58,000
تا شما می خواهید e صفر باشد، بنابراین
169
00:05:58,000 –> 00:06:01,120
اگر e صفر باشد
170
00:06:01,120 –> 00:06:03,759
، تمام محدودیت ها را برآورده کرده اید
171
00:06:04,080 –> 00:06:05,759
، اما اگر اینطور
172
00:06:05,759 –> 00:06:06,960
173
00:06:06,960 –> 00:06:08,080
174
00:06:08,080 –> 00:06:10,080
نیست، باید بهینه ساز درجه دوم را فعال کنید،
175
00:06:10,080 –> 00:06:11,520
زیرا
176
00:06:11,520 –> 00:06:14,800
در این حالت e یک مقدار غیر صفر است،
177
00:06:14,800 –> 00:06:17,440
بنابراین به کلاس سیستم بروید.
178
00:06:17,440 –> 00:06:19,440
شما می توانید ببینید که چگونه
179
00:06:19,440 –> 00:06:21,199
من numpy و سپس
180
00:06:21,199 –> 00:06:23,520
جعبه ابزار سیستم های کنترل وارد شده است
181
00:06:23,520 –> 00:06:26,160
زیرا برای گسسته کردن سیستم به
182
00:06:26,160 –> 00:06:29,840
همراه فایل های جبر خطی لازم است، بنابراین
183
00:06:29,840 –> 00:06:31,360
بیایید با کلاس سیستمی که
184
00:06:31,360 –> 00:06:32,080
185
00:06:32,080 –> 00:06:33,919
در متد init داریم شروع کنیم وقتی
186
00:06:33,919 –> 00:06:36,880
نمونه ای از کلاس سیستم شما را مقداردهی اولیه می کنید.
187
00:06:36,880 –> 00:06:38,720
در ابتدا دارای پیشفرضهایی خواهد بود که همه
188
00:06:38,720 –> 00:06:40,639
صفر و یک برای حالتها و
189
00:06:40,639 –> 00:06:42,160
ورودیها و همه چیز هستند،
190
00:06:42,160 –> 00:06:43,520
زیرا باید خودتان آنها را تعریف
191
00:06:43,520 –> 00:06:45,520
کنید
192
00:06:45,520 –> 00:06:47,280
193
00:06:47,280 –> 00:06:48,880
194
00:06:48,880 –> 00:06:51,680
195
00:06:51,680 –> 00:06:54,479
. حداکثر دقیقه و سپس افزایشی
196
00:06:54,479 –> 00:06:56,960
و مقادیر وارد می شوند،
197
00:06:56,960 –> 00:06:59,039
بنابراین من باید ابعاد به روز رسانی خود را صدا کنم که
198
00:06:59,039 –> 00:07:01,360
اینها توسط خودتان ورودی هستند و سپس می
199
00:07:01,360 –> 00:07:03,919
توانید آنها را به صورت مشابه زیر
200
00:07:03,919 –> 00:07:05,840
برای به روز رسانی
201
00:07:05,840 –> 00:07:07,759
مدل حالت پیوسته
202
00:07:07,759 –> 00:07:09,919
که در مقادیری که تغذیه می کنید، اختصاص دهید. شما نیاز دارید و
203
00:07:09,919 –> 00:07:12,400
فقط آن را به این صورت به روز می کنید
204
00:07:12,400 –> 00:07:14,000
زیرا در برنامه های کاربردی کنترل پیش بینی مدل،
205
00:07:14,000 –> 00:07:15,280
206
00:07:15,280 –> 00:07:17,440
ماتریس فید فوروارد d ندارید، نیازی نیست که
207
00:07:17,440 –> 00:07:19,199
در اینجا
208
00:07:19,199 –> 00:07:20,319
بعد می توانید شرایط اولیه را
209
00:07:20,319 –> 00:07:22,240
به همان روش به روز کنید
210
00:07:22,240 –> 00:07:24,800
و این به خودی خود انجام می شود. زیرا
211
00:07:24,800 –> 00:07:26,319
در ابتدا شما هیچ خطایی نخواهید داشت
212
00:07:26,319 –> 00:07:27,199
زیرا
213
00:07:27,199 –> 00:07:29,840
هنوز شبیه سازی خود را شروع نکرده اید،
214
00:07:29,840 –> 00:07:31,520
بنابراین شما فقط
215
00:07:31,520 –> 00:07:33,440
مدل خود را خواهید داشت که می توانید با جعبه ابزار کنترل ها آن را فراخوانی کنید،
216
00:07:33,440 –> 00:07:35,199
217
00:07:35,199 –> 00:07:39,440
بنابراین کنترل را به عنوان فضای حالت ct نقطه ای وارد کنید
218
00:07:39,440 –> 00:07:41,680
این یکی باعث می شود فضای حالت ورودی های شما در
219
00:07:41,680 –> 00:07:42,960
220
00:07:42,960 –> 00:07:44,800
آنجا b c باشد. و d
221
00:07:44,800 –> 00:07:46,400
و بعد شما روش گسسته سازی خود را دارید،
222
00:07:46,400 –> 00:07:48,319
بنابراین این روش
223
00:07:48,319 –> 00:07:51,039
در اینجا زمان نمونه برداری شما را dt می گیرد و سپس
224
00:07:51,039 –> 00:07:52,319
225
00:07:52,319 –> 00:07:54,879
آن را با نگه داشتن مرتبه صفر
226
00:07:54,879 –> 00:07:58,240
که معمولاً در صنعت نیز استفاده می شود مونتاژ می کند.
227
00:07:58,240 –> 00:07:59,759
و سپس می
228
00:07:59,759 –> 00:08:02,160
توانید ماتریس های گسسته خود را با فراخوانی
229
00:08:02,160 –> 00:08:04,160
این دستور ss data که مخفف
230
00:08:04,160 –> 00:08:06,240
داده های فضای حالت
231
00:08:06,240 –> 00:08:08,720
از سیستم گسسته شما در اینجا
232
00:08:08,720 –> 00:08:10,840
است به دست آورید، بنابراین باید
233
00:08:10,840 –> 00:08:13,759
مقادیر فردی را از سیستم خود بدست آورید
234
00:08:13,759 –> 00:08:15,280
زیرا نمی توانید آن را فقط
235
00:08:15,280 –> 00:08:18,080
در فضای کاری قرار دهید. نمایش
236
00:08:18,080 –> 00:08:20,960
بعدی شما دستور stepsim خود را دارید،
237
00:08:20,960 –> 00:08:22,639
این یکی شبیه سازی یک
238
00:08:22,639 –> 00:08:24,800
مرحله زمانی را انجام می دهد، بنابراین حالت های خروجی و متغیرهای کنترل را به روز می کند،
239
00:08:24,800 –> 00:08:26,960
بنابراین
240
00:08:26,960 –> 00:08:29,680
این فرمول رایج ax به اضافه bu
241
00:08:29,680 –> 00:08:31,039
و سپس cx
242
00:08:31,039 –> 00:08:33,360
و سپس h ضربدر y
243
00:08:33,360 –> 00:08:35,039
بعدی شما است. به روز رسانی
244
00:08:35,039 –> 00:08:37,200
پارامترهای mpc این یکی خواهد بود،
245
00:08:37,200 –> 00:08:38,958
بنابراین q در
246
00:08:38,958 –> 00:08:41,200
حالات شما است و r در ورودی ها
247
00:08:41,200 –> 00:08:43,120
، شبیه به lqr همان
248
00:08:43,120 –> 00:08:46,399
فرآیند است و شما آن را در اینجا به روز می کنید، در
249
00:08:46,399 –> 00:08:48,720
آخر این یکی به
250
00:08:48,720 –> 00:08:50,160
ارتقای محدودیت ها نگاه می کند
251
00:08:50,160 –> 00:08:52,160
تا حداکثر محدودیت ها را برای آن وارد کنید.
252
00:08:52,160 –> 00:08:53,360
همه
253
00:08:53,360 –> 00:08:55,600
ورودیها حداقل مقدار افزایشی
254
00:08:55,600 –> 00:08:56,959
را دارند،
255
00:08:56,959 –> 00:08:58,640
در غیر این صورت فقط هیچ کدام را
256
00:08:58,640 –> 00:09:00,320
همراه با تعداد ورودیها در اینجا قرار ندهید، بنابراین
257
00:09:00,320 –> 00:09:02,880
مقدار m
258
00:09:02,880 –> 00:09:04,320
شما در ابتدا صفر خواهد بود،
259
00:09:04,320 –> 00:09:05,760
زیرا هنوز تعریف نشده است،
260
00:09:05,760 –> 00:09:07,279
شما آنها را اضافه می کنید و سپس
261
00:09:07,279 –> 00:09:10,320
فقط مقادیر عددی
262
00:09:10,320 –> 00:09:11,680
آنها
263
00:09:11,680 –> 00:09:13,040
را به روز می کنید، بنابراین این یکی و این یکی را
264
00:09:13,040 –> 00:09:14,399
در اینجا به روز می کنید،
265
00:09:14,399 –> 00:09:16,640
خوب حالا بیایید به کلاس طراحی mpc برویم،
266
00:09:16,640 –> 00:09:19,200
بنابراین در اینجا ماتریس های f و g خود را در امتداد مقداردهی اولیه می کنم.
267
00:09:19,200 –> 00:09:21,360
با آرایه
268
00:09:21,360 –> 00:09:23,760
افقهای پیشبینی من، این بر اساس
269
00:09:23,760 –> 00:09:25,519
تعداد ورودیها است، بنابراین اگر دو
270
00:09:25,519 –> 00:09:27,680
ورودی دارید، دو مقدار برای np
271
00:09:27,680 –> 00:09:29,279
خواهید داشت یا میتوانید از یک مقدار برای هر دوی
272
00:09:29,279 –> 00:09:30,880
آنها استفاده
273
00:09:30,880 –> 00:09:33,920
کنید، این کار را بهتر و آسانتر
274
00:09:33,920 –> 00:09:36,320
میکند. کلاس الگوریتم mpc کارآمد من،
275
00:09:36,320 –> 00:09:37,519
276
00:09:37,519 –> 00:09:40,720
بنابراین این یکی از طراحی mpc به ارث میبرد
277
00:09:40,720 –> 00:09:42,399
، من مدل داخلی خود را دارم که
278
00:09:42,399 –> 00:09:44,160
اساساً
279
00:09:44,160 –> 00:09:47,600
f و g و سود بازخورد را به
280
00:09:47,600 –> 00:09:49,839
همراه این عبارت h پیدا میکند که در
281
00:09:49,839 –> 00:09:52,000
بهینهسازی درجه دوم به همراه
282
00:09:52,000 –> 00:09:54,000
معکوس آن مقدار استفاده میشود، بنابراین
283
00:09:54,000 –> 00:09:56,000
برای آن نیاز دارم. برای استفاده از psi pi
284
00:09:56,000 –> 00:09:58,399
و فراخوانی در دستورات جبر خطی
285
00:09:58,399 –> 00:10:00,240
که همه
286
00:10:00,240 –> 00:10:01,920
مقادیر ویژه و
287
00:10:01,920 –> 00:10:03,600
تجزیه بردار ویژه مقادیر ویژه را
288
00:10:03,600 –> 00:10:05,760
همراه با وارونگیها
289
00:10:05,760 –> 00:10:08,160
و همه چیزها انجام میدهند، بنابراین
290
00:10:08,160 –> 00:10:10,399
اول از همه مقادیر ویژه یک
291
00:10:10,399 –> 00:10:12,079
ماتریس حالت من را دریافت میکنم. در آنجا
292
00:10:12,079 –> 00:10:12,880
293
00:10:12,880 –> 00:10:16,640
من یک عبارت خالی می سازم که می تواند از
294
00:10:16,640 –> 00:10:19,040
اعداد مختلط پشتیبانی کند زیرا
295
00:10:19,040 –> 00:10:20,880
مقادیر ویژه و بردارهای ویژه می توانند
296
00:10:20,880 –> 00:10:23,440
مختلط باشند، بنابراین در این مورد به آنها نیاز خواهید داشت
297
00:10:23,440 –> 00:10:24,800
298
00:10:24,800 –> 00:10:25,920
،
299
00:10:25,920 –> 00:10:28,079
بنابراین من از 1 به r می روم زیرا
300
00:10:28,079 –> 00:10:30,399
فقط دو نقطه مجموعه دارم یا منظورم این است که
301
00:10:30,399 –> 00:10:32,720
فقط دارم r نقطه مجموعه و من n
302
00:10:32,720 –> 00:10:33,760
حالت دارم
303
00:10:33,760 –> 00:10:35,680
زیرا a n در n است
304
00:10:35,680 –> 00:10:37,200
، ابتدا باید
305
00:10:37,200 –> 00:10:38,880
این حلقه داخلی را حل کنم،
306
00:10:38,880 –> 00:10:40,320
بنابراین در اینجا کاری که من انجام می دهم این است که
307
00:10:40,320 –> 00:10:42,959
اساساً این مقدار s را
308
00:10:42,959 –> 00:10:44,640
که
309
00:10:44,640 –> 00:10:46,959
عبارت تجزیه مقدار ویژه است
310
00:10:46,959 –> 00:10:49,200
که شما وارد کرده اید، می گیرم. این عنصر اول
311
00:10:49,200 –> 00:10:51,440
یا عنصر سفید را در اینجا در نظر بگیرید زیرا من
312
00:10:51,440 –> 00:10:53,600
y دارم در این مورد برابر با یک به پنج است
313
00:10:53,600 –> 00:10:55,839
و من در این افق پیش بینی در آنجا ضرب کردم
314
00:10:55,839 –> 00:10:58,320
بنابراین ابتدا آن را بدست می آورم
315
00:10:58,320 –> 00:11:01,519
و سپس d برابر انجام می دهم بنابراین d ماتریسی است
316
00:11:01,519 –> 00:11:02,880
که از مقدار
317
00:11:02,880 –> 00:11:04,720
ویژه تجزیه بردار ویژه وجود دارد، بنابراین
318
00:11:04,720 –> 00:11:07,680
این یکی در اینجا است، بنابراین من d بار انجام
319
00:11:07,680 –> 00:11:09,839
میدهم، قطری از مقادیر ویژه ضرب
320
00:11:09,839 –> 00:11:10,959
در np میسازم
321
00:11:10,959 –> 00:11:12,959
و سپس آن را وارونه میکنم، بنابراین
322
00:11:12,959 –> 00:11:15,440
d برابر این عبارت ضربدر معکوس d
323
00:11:15,440 –> 00:11:18,880
این تصویر به شما کمک میکند آن را بهتر دریافت کنید.
324
00:11:18,880 –> 00:11:21,279
وقتی این کار انجام شد استراحت برای f آسان است،
325
00:11:21,279 –> 00:11:23,120
من فقط انجام
326
00:11:23,120 –> 00:11:26,160
می دهم من اکنون به خارج از حلقه خود می روم، بنابراین اکنون اینجا هستم،
327
00:11:26,160 –> 00:11:28,399
بنابراین این با من مطابقت دارد، بنابراین
328
00:11:28,399 –> 00:11:30,240
اگر دو نقطه تنظیم داشته باشم، من برابر با
329
00:11:30,240 –> 00:11:32,480
یک و من برابر با دو خواهد بود،
330
00:11:32,480 –> 00:11:33,680
بنابراین من فقط
331
00:11:33,680 –> 00:11:36,560
هر ردیف را اختصاص می دهم از f بر اساس آن، بنابراین
332
00:11:36,560 –> 00:11:39,839
من h i ضربدر c ضربدر phi c
333
00:11:39,839 –> 00:11:41,920
حالت خروجی شما از آنجا است و ph
334
00:11:41,920 –> 00:11:43,519
قبلاً در اینجا حل شده است
335
00:11:43,519 –> 00:11:45,839
و برای g من کاری مشابه انجام می دهم اما
336
00:11:45,839 –> 00:11:47,839
فرمول کمی شدیدتر است شما باید
337
00:11:47,839 –> 00:11:50,160
معکوس a را بدست آورید و سپس
338
00:11:50,160 –> 00:11:51,040
339
00:11:51,040 –> 00:11:53,040
این عبارت b را نیز بدست آورید و سپس آن را در پنج
340
00:11:53,040 –> 00:11:55,920
منهای ماتریس هویت با اندازه n ضرب کنید، بنابراین
341
00:11:55,920 –> 00:11:58,880
اگر n برابر با 5 باشد، یک بار
342
00:11:58,880 –> 00:12:01,360
در عرض این مورب 5 در 5
343
00:12:01,360 –> 00:12:04,079
344
00:12:04,079 –> 00:12:06,160
می شود. اصطلاحی که
345
00:12:06,160 –> 00:12:08,800
g transpose ضرب در q
346
00:12:08,800 –> 00:12:11,600
ضرب در g به اضافه r است بنابراین
347
00:12:11,600 –> 00:12:13,519
t در اینجا جابهجا میشود،
348
00:12:13,519 –> 00:12:15,600
این فقط نحو پایتون است
349
00:12:15,600 –> 00:12:17,920
و سپس من معکوس h را در آنجا
350
00:12:17,920 –> 00:12:19,760
351
00:12:19,760 –> 00:12:22,800
میگیرم و در آخر میتوانم سود بازخورد را در اینجا دریافت کنم، بنابراین k زیرخط empc را بهطور ساده نشان میدهم
352
00:12:22,800 –> 00:12:26,480
. کل چیز
353
00:12:26,480 –> 00:12:28,160
معکوس h
354
00:12:28,160 –> 00:12:31,200
ضرب در جابجایی g ضرب
355
00:12:31,200 –> 00:12:34,160
در q در اینجا این کار را انجام می دهد
356
00:12:34,160 –> 00:12:36,480
ضرب ماتریس es یک عبارت بی
357
00:12:36,480 –> 00:12:38,800
معنی است، بنابراین فقط این را در نظر داشته باشید که در
358
00:12:38,800 –> 00:12:39,760
مرحله
359
00:12:39,760 –> 00:12:41,680
بعد باید محدودیت های خود را بدست بیاورم زیرا
360
00:12:41,680 –> 00:12:44,240
اینها برای خود فرآیند بهینه سازی مورد نیاز هستند
361
00:12:44,240 –> 00:12:45,680
362
00:12:45,680 –> 00:12:47,200
بنابراین در اینجا کمی پیچیده تر است اما
363
00:12:47,200 –> 00:12:48,639
هنوز خیلی بد نیست
364
00:12:48,639 –> 00:12:50,959
این یکی با مثالی که بهترین درک است.
365
00:12:50,959 –> 00:12:53,040
در مرحله بعد به شما نشان خواهم داد،
366
00:12:53,040 –> 00:12:54,480
اما اکنون فقط کد را مرور
367
00:12:54,480 –> 00:12:57,120
می کنم تا بتوانید ایده اولیه ای از نحوه کارکرد آن
368
00:12:57,120 –> 00:13:00,959
در ابتدا
369
00:13:00,959 –> 00:13:02,959
370
00:13:02,959 –> 00:13:05,200
به دست آورید. همانطور که ستون زیر خط m و زیر خط زیر g را به خاطر می آورید، یک آرایه صفر برای g و یک ماتریس صفر برای m اختصاص می دهم.
371
00:13:05,200 –> 00:13:08,399
فقط m و g هستند من
372
00:13:08,399 –> 00:13:10,240
فقط این را آنجا قرار می دهم تا بتوانم
373
00:13:10,240 –> 00:13:12,079
آنها را در متغیر متمایز کنم
374
00:13:12,079 –> 00:13:13,600
تا آنها را با چیز دیگری اشتباه نگیرم
375
00:13:13,600 –> 00:13:14,959
376
00:13:14,959 –> 00:13:17,519
بنابراین مقدار g تعداد
377
00:13:17,519 –> 00:13:19,440
قیود مطلق ضرب در دو
378
00:13:19,440 –> 00:13:21,440
برابر تعداد قیود افزایشی خواهد بود
379
00:13:21,440 –> 00:13:23,839
و فقط یک آرایه صفر از آن
380
00:13:23,839 –> 00:13:26,639
و m به طول g
381
00:13:26,639 –> 00:13:29,040
ردیف و سپس m ستون در اینجا خواهد بود، بنابراین
382
00:13:29,040 –> 00:13:32,240
اگر دو ورودی داشته باشید مانند دو ستون خواهد بود،
383
00:13:32,240 –> 00:13:33,360
خوب حالا
384
00:13:33,360 –> 00:13:35,200
این یکی کمی مشکل است، اما این یکی
385
00:13:35,200 –> 00:13:36,720
فقط به این معنی است که من از محدودیت های خود استفاده می کنم.
386
00:13:36,720 –> 00:13:39,120
حداکثر ام و حداقل و سپس
387
00:13:39,120 –> 00:13:42,000
چیدن آنها به صورت افقی بنابراین
388
00:13:42,000 –> 00:13:43,519
اساساً کاری که من انجام می دهم این است که من
389
00:13:43,519 –> 00:13:47,120
فقط مقادیر فرهنگ لغت را می گیرم بنابراین
390
00:13:47,120