در این مطلب، ویدئو Python II: مدلسازی جبری پیشرفته با پایتون و گوروبی با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,170 –> 00:00:04,680
به همه به وبینار ما در مورد پایتون خوش آمدید
2
00:00:04,680 –> 00:00:07,799
تا مدلسازی جبری پیشرفته
3
00:00:07,799 –> 00:00:12,090
با استفاده از groovy و Python کمی
4
00:00:12,090 –> 00:00:14,099
اطلاعات پسزمینه
5
00:00:14,099 –> 00:00:16,529
این وبینار ما در سری و
6
00:00:16,529 –> 00:00:19,410
مدلسازی بهینهسازی و Python است.
7
00:00:19,410 –> 00:00:22,199
8
00:00:22,199 –> 00:00:24,150
9
00:00:24,150 –> 00:00:26,580
زبانها این
10
00:00:26,580 –> 00:00:29,130
مجموعه بر روی ویژگیهای
11
00:00:29,130 –> 00:00:31,529
ویژه پایتون تمرکز دارد که
12
00:00:31,529 –> 00:00:34,440
اکنون برای ساخت مدلهای بهینهسازی مفید و مفید هستند،
13
00:00:34,440 –> 00:00:37,020
زیرا این یک ارائه پیشرفته است،
14
00:00:37,020 –> 00:00:39,090
ما فرض میکنیم که شما با پایتون
15
00:00:39,090 –> 00:00:42,420
و مدلسازی بهینهسازی آشنا هستید، اما
16
00:00:42,420 –> 00:00:44,489
اگر این برای شما جدید است، لطفاً
17
00:00:44,489 –> 00:00:48,840
بخش منابع را بررسی کنید. آرام باشید و
18
00:00:48,840 –> 00:00:51,090
به خصوص ارائه ضبط شده
19
00:00:51,090 –> 00:00:53,670
را مشاهده کنید، اولین ارائه از این سری
20
00:00:53,670 –> 00:00:56,789
پایتون یک مقدمه برای مدل سازی با
21
00:00:56,789 –> 00:01:02,520
پایتون است، بنابراین دستور کار ما برای وبینار
22
00:01:02,520 –> 00:01:05,159
امروز سه قسمت است، ابتدا می
23
00:01:05,159 –> 00:01:07,979
خواهیم با استفاده از یک مثال ساده از
24
00:01:07,979 –> 00:01:10,020
زمان بندی نیروی کار شروع کنیم. این به شما معرفی
25
00:01:10,020 –> 00:01:12,060
می کند. به برخی از مفاهیم در
26
00:01:12,060 –> 00:01:15,390
مدل سازی بهینه سازی و پایتون سپس
27
00:01:15,390 –> 00:01:17,159
ما قصد داریم در مورد
28
00:01:17,159 –> 00:01:19,820
مفاهیم کلی در مدل سازی بهینه سازی صحبت کنیم و
29
00:01:19,820 –> 00:01:22,380
در نهایت می خواهیم آن
30
00:01:22,380 –> 00:01:26,189
مفاهیم کلی را به پایتون و رابط گروب ترجمه کنیم
31
00:01:26,189 –> 00:01:27,869
و ببینیم که چگونه
32
00:01:27,869 –> 00:01:30,390
می توان اصول کلی مدل سازی را با استفاده از
33
00:01:30,390 –> 00:01:33,540
پایتون و استفاده از رابط گرووی در
34
00:01:33,540 –> 00:01:38,579
پایتون اعمال کرد. با یک
35
00:01:38,579 –> 00:01:43,610
مثال ساده از زمانبندی نیروی کار شروع
36
00:01:49,100 –> 00:01:53,009
کنید، بنابراین در اینجا مدلی به نام نیروی کار وجود دارد و
37
00:01:53,009 –> 00:01:55,200
ما میخواهیم یک مدل کلاسیک را برای
38
00:01:55,200 –> 00:01:58,020
تعیین تکلیف کارگران به کشتیها حل کنیم، اکنون این
39
00:01:58,020 –> 00:02:00,149
مدل غیرممکن است، بنابراین
40
00:02:00,149 –> 00:02:02,369
در پایان آزمایشهایی را انجام میدهیم تا مشخص کنیم که چرا
41
00:02:02,369 –> 00:02:04,920
غیرممکن است. ما می خواهیم با داده ها شروع کنیم.
42
00:02:04,920 –> 00:02:07,590
در این مدل دو نوع داده لیست
43
00:02:07,590 –> 00:02:10,098
وجود دارد، اول کشتی ها و
44
00:02:10,098 –> 00:02:12,569
دومی کارگران وجود دارد، بنابراین ما
45
00:02:12,569 –> 00:02:13,540
لیستی از کشتی داریم
46
00:02:13,540 –> 00:02:15,939
که دو هفته است، این یک
47
00:02:15,939 –> 00:02:18,040
مدل ساده است که در آن یک شیفت در روز وجود دارد.
48
00:02:18,040 –> 00:02:20,859
و بنابراین ما دو هفته فرصت داریم دوشنبه
49
00:02:20,859 –> 00:02:22,900
اول ماه سه شنبه
50
00:02:22,900 –> 00:02:24,310
دوم ماه از سوم
51
00:02:24,310 –> 00:02:26,680
ماه
52
00:02:26,680 –> 00:02:28,719
گذشته است و هفته اول را ادامه می دهیم و خود را برای M تکرار می کنیم.
53
00:02:28,719 –> 00:02:30,579
یک روز هشتم سه شنبه نهم برای
54
00:02:30,579 –> 00:02:31,390
هفته دوم،
55
00:02:31,390 –> 00:02:35,260
بنابراین 14 شیفت و ما هفت کارگر
56
00:02:35,260 –> 00:02:39,760
ایمی باب کتی دان ادی فردی
57
00:02:39,760 –> 00:02:43,650
گو تا جی داریم که لیست های ساده ای هستند و
58
00:02:43,650 –> 00:02:49,090
سپس داده های شاخص داریم اکنون این داده
59
00:02:49,090 –> 00:02:51,549
ها توسط آن دو لیست نمایه می شوند قبل از اینکه
60
00:02:51,549 –> 00:02:54,159
اول ما دارای شرایط شیفتی است که
61
00:02:54,159 –> 00:02:56,409
توسط لیست کشتی ها نمایه می شود و
62
00:02:56,409 –> 00:02:58,780
این تعداد کارگر برای هر شیفت مورد نیاز است
63
00:02:58,780 –> 00:03:01,810
، به عنوان مثال در روز دوشنبه
64
00:03:01,810 –> 00:03:04,720
اولین مورد نیاز به سه کارگر برای کار در
65
00:03:04,720 –> 00:03:07,389
روز دوم سه شنبه، دوم
66
00:03:07,389 –> 00:03:10,150
به دو کارگر و غیره نیز
67
00:03:10,150 –> 00:03:13,569
داریم. داده های شاخص برای دستمزد کارگر که
68
00:03:13,569 –> 00:03:15,669
چقدر به هر یک از این کارگران می پردازیم
69
00:03:15,669 –> 00:03:18,430
تا لیست کارگران برای نمایه
70
00:03:18,430 –> 00:03:22,090
سازی دستمزد کارگر استفاده شود تا به امی پرداخت شود 1012
71
00:03:22,090 –> 00:03:27,060
باب دوازده دستمزد کتی 10 و غیره پرداخت می شود
72
00:03:30,170 –> 00:03:33,120
ما ادامه می دهیم و اولین لیست
73
00:03:33,120 –> 00:03:36,420
داده ها را می خوانیم. و لیست دادههای شاخص
74
00:03:36,420 –> 00:03:40,140
را در مدل بهینهسازی من در
75
00:03:40,140 –> 00:03:42,270
سیستم فعال بافندگی که برای
76
00:03:42,270 –> 00:03:45,630
این نمایش استفاده میکنم بخوانید، اکنون
77
00:03:45,630 –> 00:03:47,820
چیزی پیچیدهتر
78
00:03:47,820 –> 00:03:50,220
داریم، لیستهای کارگران موجود را داریم. ty و
79
00:03:50,220 –> 00:03:52,230
این لیست شیفتهایی است که کارگران
80
00:03:52,230 –> 00:03:55,530
در دسترس هستند، بنابراین در هر روز
81
00:03:55,530 –> 00:03:58,590
یا شیفت خاصی در اینجا کارگر ممکن است در دسترس نباشد یا ممکن است
82
00:03:58,590 –> 00:04:00,180
به روشی که ما میخواهیم
83
00:04:00,180 –> 00:04:02,670
نشان دهیم که از لیستی از تاپل
84
00:04:02,670 –> 00:04:05,790
یا جفت استفاده میکند، در دسترس نباشد و این باعث میشود مدل بسیار
85
00:04:05,790 –> 00:04:07,410
کارآمدتر است، ما فقط میخواهیم
86
00:04:07,410 –> 00:04:09,780
شیفتهای ممکن را فهرست کنیم،
87
00:04:09,780 –> 00:04:11,700
زیرا نمیتوانیم برای
88
00:04:11,700 –> 00:04:14,340
شیفتها و کارگرانی که در دسترس نیستند بهینهسازی
89
00:04:14,340 –> 00:04:16,620
کنیم، بنابراین اجازه دهید به برخی از این نمونهها نگاه
90
00:04:16,620 –> 00:04:19,380
کنیم.
91
00:04:19,380 –> 00:04:21,690
دومی با این
92
00:04:21,690 –> 00:04:24,690
حال او دوشنبه اول در دسترس نیست و نه پنجشنبه چهارم در دسترس است
93
00:04:24,690 –> 00:04:26,580
، بنابراین ما یک ورودی
94
00:04:26,580 –> 00:04:28,590
برای سه شنبه دوم 80 برای
95
00:04:28,590 –> 00:04:30,990
چهارشنبه سوم داریم و سپس به امی در
96
00:04:30,990 –> 00:04:34,410
روز جمعه 5 می رویم، شنبه را نیز رد
97
00:04:34,410 –> 00:04:36,780
می کنیم و می رویم. دوباره در یکشنبه هفتم امی، بنابراین
98
00:04:36,780 –> 00:04:38,190
زمانی که امی در دسترس است، تغییراتی وجود دارد، برخی دیگر از زمانی که امی
99
00:04:38,190 –> 00:04:40,020
در دسترس نیست،
100
00:04:40,020 –> 00:04:42,510
ما می خواهیم مواردی را که امی در دسترس است لیست کنیم،
101
00:04:42,510 –> 00:04:44,690
مثلاً برای سایر کارگران باب
102
00:04:44,690 –> 00:04:49,800
کتی دان و غیره بیایید این را بخوانیم.
103
00:04:49,800 –> 00:04:54,000
دارای th دادهها
104
00:04:54,000 –> 00:04:55,590
کامل میشوند تا بتوانیم
105
00:04:55,590 –> 00:04:57,330
متغیرهای تصمیم را در مدل بهینهسازی خود نشان
106
00:04:57,330 –> 00:05:00,200
دهیم، از متغیر X
107
00:05:00,200 –> 00:05:04,919
WS برابر با 1 استفاده میکنیم، اگر کارگر W
108
00:05:04,919 –> 00:05:06,990
دوباره به Shift s اختصاص داده شود، ما از آن
109
00:05:06,990 –> 00:05:09,690
لیستی از موجودیها استفاده میکنیم که فقط نشاندهنده است.
110
00:05:09,690 –> 00:05:11,550
ترکیبات احتمالی را
111
00:05:11,550 –> 00:05:13,560
که ما هر ترکیبی از
112
00:05:13,560 –> 00:05:15,300
کارگر را در هر ترکیب شیفتی
113
00:05:15,300 –> 00:05:16,979
لیست نمی کنیم، از لیست خاصی استفاده می کنیم که همین
114
00:05:16,979 –> 00:05:19,229
الان دیدیم که نشان دهنده زمانی است که کارگران
115
00:05:19,229 –> 00:05:21,030
در دسترس هستند و ما
116
00:05:21,030 –> 00:05:23,669
فقط یک متغیر تصمیم X برای موارد
117
00:05:23,669 –> 00:05:26,100
ممکن داریم. این ترکیبات، اندازه مدل را کاهش میدهد و
118
00:05:26,100 –> 00:05:29,190
کد ما را بسیار
119
00:05:29,190 –> 00:05:31,700
کارآمدتر میکند،
120
00:05:33,970 –> 00:05:36,950
اکنون هدف ما به حداقل رساندن
121
00:05:36,950 –> 00:05:45,070
کل هزینه حقوق و دستمزد است و
122
00:05:45,070 –> 00:05:48,640
ما میخواهیم که مجموع
123
00:05:48,640 –> 00:05:52,820
ترکیبی از دستمزد و xws برای هر کار
124
00:05:52,820 –> 00:05:55,580
WS و در دسترس بودن یا x باشد. WS یکی از
125
00:05:55,580 –> 00:05:57,370
مواردی است که ما برای آن شیفت به کارگر پول می
126
00:05:57,370 –> 00:06:01,790
پردازیم و اگر نه،
127
00:06:01,790 –> 00:06:05,110
این هزینه عینی را به حداقل می رسانیم
128
00:06:05,110 –> 00:06:10,370
و اکنون محدودیت های ما باید
129
00:06:10,370 –> 00:06:12,200
محدودیت الزامات را تغییر دهیم که برای eac می گوید.
130
00:06:12,200 –> 00:06:17,360
h s و shifts مجموع X برای
131
00:06:17,360 –> 00:06:19,910
هر کارگر باید برابر با
132
00:06:19,910 –> 00:06:21,680
نیازهای شیفت باشد، بنابراین
133
00:06:21,680 –> 00:06:24,020
تمام کارگرانی که در دسترس هستند جمع آوری می شود،
134
00:06:24,020 –> 00:06:26,390
بنابراین بسیار کارآمد است و
135
00:06:26,390 –> 00:06:28,580
فقط با کارگرانی که
136
00:06:28,580 –> 00:06:30,770
برای یک شیفت خاص در دسترس
137
00:06:30,770 –> 00:06:33,590
هستند، مطابقت دارد. کمی خنده دار است، بنابراین
138
00:06:33,590 –> 00:06:36,230
من در نظرات درست زیر
139
00:06:36,230 –> 00:06:38,870
نسخه دیگری از این نوشتم که در آن می توانم آن
140
00:06:38,870 –> 00:06:40,930
را به صراحت از نظر
141
00:06:40,930 –> 00:06:43,490
مجموعه در دسترس بودن بنویسم، بنابراین می توانم بگویم
142
00:06:43,490 –> 00:06:45,290
این یک نحو جایگزین است، همان کاری را انجام می دهد
143
00:06:45,290 –> 00:06:47,930
که اگر من گفت: برای هر s و
144
00:06:47,930 –> 00:06:51,230
شیفت، می توانم محدودیت را
145
00:06:51,230 –> 00:06:54,890
با مجموع x WS برای W و کارگران اضافه کنم، اگر یک
146
00:06:54,890 –> 00:06:57,620
جفت WS در دسترس نباشد که
147
00:06:57,620 –> 00:06:59,900
همان کار را انجام دهد، اما
148
00:06:59,900 –> 00:07:02,090
این کار بیشتر از نسخه I کارآمدتر است.
149
00:07:02,090 –> 00:07:04,730
درست بالاتر از آن است، بنابراین ما
150
00:07:04,730 –> 00:07:06,410
در یک لحظه بیشتر در مورد کارایی صحبت
151
00:07:06,410 –> 00:07:09,800
خواهیم کرد و اکنون می خواهیم مدل را حل کنیم
152
00:07:09,800 –> 00:07:11,810
و به یاد داشته باشید که در ابتدا
153
00:07:11,810 –> 00:07:13,610
گفتم که این مدل
154
00:07:13,610 –> 00:07:16,940
برای بهینه سازی مدل غیر ممکن طراحی شده است
155
00:07:16,940 –> 00:07:19,070
و در خروجی مشاهده می کنید. این مدل است
156
00:07:19,070 –> 00:07:21,880
غیرممکن است این فقط یک مثال ساده است،
157
00:07:21,880 –> 00:07:24,500
بنابراین اگر
158
00:07:24,500 –> 00:07:26,120
غیر ممکن است میخواهیم چه کار کنیم، ما چند تکنیک داریم
159
00:07:26,120 –> 00:07:29,120
و از آنجایی که این رابط کامل پایتون
160
00:07:29,120 –> 00:07:32,630
است و حلکنندههای کامل Grobe پشت
161
00:07:32,630 –> 00:07:35,690
آن است، میتوانیم تابع relax fees را صدا کنیم
162
00:07:35,690 –> 00:07:38,780
تا محدودیتها را کاهش دهیم. یک راه حل
163
00:07:38,780 –> 00:07:41,630
تقریبا امکان پذیر است، بنابراین من این مدل را حل کرده ام
164
00:07:41,630 –> 00:07:43,980
165
00:07:43,980 –> 00:07:47,610
و در اینجا یک حداقل آرامش از این
166
00:07:47,610 –> 00:07:49,950
مدل وجود دارد و ما متوجه شدیم که چهار شیفتی وجود دارد
167
00:07:49,950 –> 00:07:52,320
که باید در روز پنجشنبه
168
00:07:52,320 –> 00:07:54,960
چهارم و شنبه ششم
169
00:07:54,960 –> 00:07:57,300
آرام شوند، ما باید محدودیت ها را با دو واحد کاهش دهیم.
170
00:07:57,300 –> 00:07:59,490
ما دو
171
00:07:59,490 –> 00:08:02,100
کارگر کمتر از درخواستی داریم و یکشنبه
172
00:08:02,100 –> 00:08:03,930
هفتم جمعه دوازدهم
173
00:08:03,930 –> 00:08:06,000
محدودیت ها را با یک
174
00:08:06,000 –> 00:08:07,770
واحد کاهش می دهیم، یک کار یا
175
00:08:07,770 –> 00:08:10,680
کمتر از درخواست داریم و دوباره می گوید
176
00:08:10,680 –> 00:08:12,540
پایتون یک زبان برنامه نویسی کامل است که ما
177
00:08:12,540 –> 00:08:14,130
میتوانیم انواع کارهای جالب را
178
00:08:14,130 –> 00:08:16,950
در پایان انجام دهیم، به عنوان مثال میتوانم
179
00:08:16,950 –> 00:08:21,540
طرح کوچکی را نشان دهم که کشتیهایی را نشان میدهد که
180
00:08:21,540 –> 00:08:24,840
نمیتوان آنها را برآورده کرد، بنابراین اگر اینجا را ببینید،
181
00:08:24,840 –> 00:08:27,720
مستطیلهای سایهدار تیرهتر نشاندهنده
182
00:08:27,720 –> 00:08:30,500
جابجایی هایی که کمبود وجود داشت
183
00:08:30,500 –> 00:08:33,530
و تاریک ترین ها
184
00:08:33,530 –> 00:08:36,690
کسری دارند تا تیره های متوسط
185
00:08:36,690 –> 00:08:39,900
سری دارند و این یک طر
186
00:08:39,900 –> 00:08:44,450
کوچک زیباست که خروجی ما را نشان می دهد، بن
187
00:08:44,690 –> 00:08:47,490
براین بیایید به سراغ اصول مدل بهینه سازی کلی برویم او
188
00:08:47,490 –> 00:08:50,850
ین و مه
189
00:08:50,850 –> 00:08:52,980
ترین بخشی از مدلهای بهینهسازی
190
00:08:52,980 –> 00:08:54,990
تصمیمهایی که قرار است
191
00:08:54,990 –> 00:08:57,870
در یک مدل بهینهسازی چه کاری انجام دهید، اینها
192
00:08:57,870 –> 00:09:00,600
متغیرهای بهینهسازی هستند و در
193
00:09:00,600 –> 00:09:03,090
مثال نیروی کار ما یک
194
00:09:03,090 –> 00:09:05,280
تصمیم ساده داشتیم که آیا یک کارگر را به یک شیفت اختصاص میدهیم،
195
00:09:05,280 –> 00:09:08,040
بنابراین فهرستی از کارگران
196
00:09:08,040 –> 00:09:11,070
و فهرستی را داشتیم. از کشتیها ما آن لیست ویژه را داشتیم
197
00:09:11,070 –> 00:09:14,340
که ترکیبی بود که تصمیم میگرفتیم
198
00:09:14,340 –> 00:09:16,020
آیا آن کارگر در شیفت کار میکند یا نه،
199
00:09:16,020 –> 00:09:18,360
اما به طور کلی
200
00:09:18,360 –> 00:09:20,070
انواع مختلفی از
201
00:09:20,070 –> 00:09:22,140
تصمیمگیریها و مدلهای بهینهسازی داریم که
202
00:09:22,140 –> 00:09:24,300
ممکن است در تلاش باشیم چیزی را انتخاب کنیم یا
203
00:09:24,300 –> 00:09:27,390
اختصاص دهیم. برخی از تجهیزات یا برخی افراد به
204
00:09:27,390 –> 00:09:30,090
چیزی اگر یک مدل تولیدی
205
00:09:30,090 –> 00:09:32,280
است، ممکن است برخی از آنها تصمیم گیری کنیم آیا
206
00:09:32,280 –> 00:09:35,640
چیزی می گیریم که چقدر باید انجام
207
00:09:35,640 –> 00:09:37,080
دهیم که اگر این یک مدل باشد. مدل حمل و نقل
208
00:09:37,080 –> 00:09:40,050
و همچنین خرید یا فروش آیا می خواهیم
209
00:09:40,050 –> 00:09:43,950
تجهیزاتی را بخریم یا بفروشیم
210
00:09:43,950 –> 00:09:46,080
که این نوع تصمیمات می تواند تصمیمات
211
00:09:46,080 –> 00:09:48,570
بله/خیر باشد یا می تواند
212
00:09:48,570 –> 00:09:50,700
مقادیری باشد که چقدر قرار است انجام
213
00:09:50,700 –> 00:09:52,830
دهیم چقدر قرار است چگونه بسازیم
214
00:09:52,830 –> 00:09:55,670
ما الان خیلی قصد خرید
215
00:09:56,540 –> 00:09:59,090
داریم مقادیری هم در
216
00:09:59,090 –> 00:10:01,650
مدل های بهینه سازی وجود دارد و این
217
00:10:01,650 –> 00:10:03,720
مقادیر عددی هستند که در
218
00:10:03,720 –> 00:10:05,520
روابط استفاده می شوند آنها تبدیل به
219
00:10:05,520 –> 00:10:08,090
ضرایب و عبارات عبارت های خطی می شوند
220
00:10:08,090 –> 00:10:10,560
عبارات درجه دوم
221
00:10:10,560 –> 00:10:12,330
عبارات منطقی هر نوع
222
00:10:12,330 –> 00:10:14,610
عبارتی در مدل بهینه سازی ما در
223
00:10:14,610 –> 00:10:18,930
نمونه نیروی کار ما استفاده از هزینه برای
224
00:10:18,930 –> 00:10:20,970
کارگر در کشتی ما همچنین
225
00:10:20,970 –> 00:10:23,130
مقادیر تعداد کارگران
226
00:10:23,130 –> 00:10:25,760
درخواست شده برای هر شیفت را داریم
227
00:10:25,760 –> 00:10:27,960
اما مقادیر دیگری نیز
228
00:10:27,960 –> 00:10:30,270
فراتر از مدل نیروی کار وجود دارد که
229
00:10:30,270 –> 00:10:32,700
میتوانستیم هزینه داشته باشیم میتوانیم قیمت داشته باشیم ما
230
00:10:32,700 –> 00:10:35,730
فاصله داریم چقدر فاصله است چیزی فضای
231
00:10:35,730 –> 00:10:37,800
چقدر است. فضا کاری انجام داد
232
00:10:37,800 –> 00:10:40,380
ما زمانی را داریم که چیزی نیاز به
233
00:10:40,380 –> 00:10:42,210
مواد لازم برای استفاده دارد که
234
00:10:42,210 –> 00:10:44,400
ممکن است در یک ساخت و ساز ببینید با توجه به
235
00:10:44,400 –> 00:10:46,620
عرضه یا تقاضای برنامه، اگر چیزی را میخرید یا
236
00:10:46,620 –> 00:10:48,540
میفروشید یا اگر مواد خام
237
00:10:48,540 –> 00:10:51,240
با ظرفیتی دارید که ممکن است
238
00:10:51,240 –> 00:10:55,140
شامل کارگران یا تجهیزات یا مواد خام باشد
239
00:10:55,140 –> 00:11:01,200
، اکنون محدودیتهای یک
240
00:11:01,200 –> 00:11:02,940
مدل بهینهسازی نیازمندیها
241
00:11:02,940 –> 00:11:04,710
محدودیتهایی هستند، اینها روابط برابری یا
242
00:11:04,710 –> 00:11:07,170
نابرابری در ما هستند.
243
00:11:07,170 –> 00:11:09,210
به عنوان مثال نیروی کار، ما باید
244
00:11:09,210 –> 00:11:11,580
کارگران کافی را برای برآورده کردن الزامات
245
00:11:11,580 –> 00:11:14,510
برای هر شیفت کاری اختصاص دهیم، بنابراین
246
00:11:14,510 –> 00:11:17,240
مدلهای بهینهسازی دیگر ممکن است شامل تقاضا باشد
247
00:11:17,240 –> 00:11:20,220
که باید برآورده شود، ممکن است تجهیزاتی داشته باشیم
248
00:11:20,220 –> 00:11:21,960
که محدودیتهایی
249
00:11:21,960 –> 00:11:24,300
دارند، در صورت عرضه محدود، منابع
250
00:11:24,300 –> 00:11:27,540
را از دست بدهیم، با محدودیتهای فضایی خارج شویم.
251
00:11:27,540 –> 00:11:30,180
طرح بندی بدون محدودیت در تعداد
252
00:11:30,180 –> 00:11:31,650
کارگران و در دسترس بودن آن
253
00:11:31,650 –> 00:11:33,870
کارگران ما پول داریم من یک
254
00:11:33,870 –> 00:11:35,850
محدودیت بودجه داریم که باید رعایت کنیم،
255
00:11:35,850 –> 00:11:37,920
همچنین زمان خواهیم داشت که ممکن است
256
00:11:37,920 –> 00:11:39,740
به دلیل چند مثال زمان محدودی برای انجام کاری داشته باشیم
257
00:11:39,740 –> 00:11:43,290
و سپس
258
00:11:43,290 –> 00:11:46,500
هدف، هدف ما برای دستیابی به این است
259
00:11:46,500 –> 00:11:47,910
، تابع ریاضی است که ما در حال
260
00:11:47,910 –> 00:11:50,670
تلاش برای بهینه سازی آن در نمونه نیروی کار خود
261
00:11:50,670 –> 00:11:53,430
هستیم. g برای به حداقل رساندن
262
00:11:53,430 –> 00:11:55,530
هزینه نیروی کار، اما زمانی که آن مدل
263
00:11:55,530 –> 00:11:58,230
غیرممکن است، مدل دومی را با
264
00:11:58,230 –> 00:12:00,090
یک هدف متفاوت حل کردیم که در آن
265
00:12:00,090 –> 00:12:03,240
متغیرهای سستی و مقادیر اضافی را
266
00:12:03,240 –> 00:12:05,460
به مدل اضافه کردیم و میخواستیم
267
00:12:05,460 –> 00:12:07,980
کمبود در کشتیها
268
00:12:07,980 –> 00:12:10,139
و سایر مدلهای بهینهسازی
269
00:12:10,139 –> 00:12:13,649
را به حداقل برسانیم. به حداکثر رساندن سود یا به حداکثر رساندن
270
00:12:13,649 –> 00:12:15,810
استفاده یا تعادلی که میتوانستیم
271
00:12:15,810 –> 00:12:19,470
از تعادل در نیروی کار استفاده کنیم،
272
00:12:19,470 –> 00:12:21,389
ممکن است بخواهیم برنامهای بسازیم
273
00:12:21,389 –> 00:12:24,209
که از کارگران تا
274
00:12:24,209 –> 00:12:27,180
حد امکان به طور مساوی با تعادل زمانبندیها استفاده
275
00:12:27,180 –> 00:12:29,100
کند، همچنین میتوانیم اهداف حداقلی
276
00:12:29,100 –> 00:12:30,779
داشته باشیم که ممکن است بخواهیم هزینهها را به حداقل برسانیم یا
277
00:12:30,779 –> 00:12:32,970
به حداقل رساندن زمان انجام کاری یا به
278
00:12:32,970 –> 00:12:36,209
حداقل رساندن اتلاف با استفاده از فرآیند تولید
279
00:12:36,209 –> 00:12:42,240
در نهایت مدلهای بهینهسازی
280
00:12:42,240 –> 00:12:45,300
شامل شاخصهایی هستند که یک مقدار کلیدی
281
00:12:45,300 –> 00:12:48,149
را مشخص میکنند و عنصری از یک
282
00:12:48,149 –> 00:12:51,449
آرایه را در نیروی
283
00:12:51,449 –> 00:12:53,699
284
00:12:53,699 –> 00:12:58,380
کار ما شناسایی میکنند.
285
00:12:58,380 –> 00:13:00,570
تغییرات در نمونه نیروی کار
286
00:13:00,570 –> 00:13:03,089
ما روزهایی بود، اما نمونه پیچیدهتر نیروی
287
00:13:03,089 –> 00:13:05,519
کار ما میتوانستیم شی را داشته باشیم فوت در عرض
288
00:13:05,519 –> 00:13:08,670
چند روز و سپس در دسترس بودن در
289
00:13:08,670 –> 00:13:10,800
نمونه نیروی کار ما با لیستی که
290
00:13:10,800 –> 00:13:13,170
یک شیفت را مشخص می کند زمانی که یک کارگر در
291
00:13:13,170 –> 00:13:15,449
دسترس است، بنابراین ترکیبی از یک
292
00:13:15,449 –> 00:13:17,970
کارگر و یک شیفت
293
00:13:17,970 –> 00:13:19,350
294
00:13:19,350 –> 00:13:21,779
295
00:13:21,779 –> 00:13:23,490
است. در حال تولید یا
296
00:13:23,490 –> 00:13:27,120
نیاز به کارگرانی بدون آن
297
00:13:27,120 –> 00:13:28,680
تجهیزات داشته باشیم که ممکن است
298
00:13:28,680 –> 00:13:32,040
ماشینها یا کامیونهای مورد نیاز
299
00:13:32,040 –> 00:13:34,589
باشد، مکانهایی داریم که ممکن است مکانهایی باشند که میتوانیم به آنها سفر کنیم
300
00:13:34,589 –> 00:13:37,110
یا مکانهایی که ممکن است در حال تولید
301
00:13:37,110 –> 00:13:39,720
محصولات با مشتریان یا
302
00:13:39,720 –> 00:13:42,300
تامینکنندگان کافی باشیم، همچنین منابع فردی داریم
303
00:13:42,300 –> 00:13:44,880
که ممکن است مورد نیاز باشد یا استفاده شده
304
00:13:44,880 –> 00:13:48,720
و زمان، شاخص مشترک ما است و حتی
305
00:13:48,720 –> 00:13:50,519
در طول زمان، راههای مختلفی برای
306
00:13:50,519 –> 00:13:52,860
نمایش آن وجود دارد سطوح مختلف
307
00:13:52,860 –> 00:13:54,569
دانهبندی ممکن است یک
308
00:13:54,569 –> 00:13:57,240
مدل ریزدانه با دقیقه یا ساعت داشته باشد که میتوانید
309
00:13:57,240 –> 00:13:59,399
دو روز یا هفته بگذرانید و
310
00:13:59,399 –> 00:14:01,740
سپس به بزرگتر یا طولانیتر میشوید. مدلهای مدت دار
311
00:14:01,740 –> 00:14:06,810
با ماههای سه ماهه یا سال، بنابراین این
312
00:14:06,810 –> 00:14:09,630
شاخصها کلید مدل بهینهسازی
313
00:14:09,630 –> 00:14:11,459
هستند و متغیرهای فردی را توصیف میکنند
314
00:14:11,459 –> 00:14:14,160
آنها همچنین مقادیر عددی
315
00:14:14,160 –> 00:14:16,910
را توصیف میکنند و محدودیتها را توصیف میکنند.
316
00:14:16,910 –> 00:14:19,529
شاخصهای محدودیتها را میتوان به چند
317
00:14:19,529 –> 00:14:21,329
روش مختلف برای تکرار
318
00:14:21,329 –> 00:14:22,200
بر روی محدودیتهای متغیر استفاده
319
00:14:22,200 –> 00:14:24,480
کرد که مانند یک
320
00:14:24,480 –> 00:14:27,000
ریاضی برای همه گزارهها است.
321
00:14:27,000 –> 00:14:29,460
322
00:14:29,460 –> 00:14:32,040
مقادیر در حال حاضر هنگامی که شما در حال
323
00:14:32,040 –> 00:14:34,050
ساخت یک مدل بهینه سازی برای
324
00:14:34,050 –> 00:14:35,940
کارآمد کردن آن مدل هستید، بستگی به
325
00:14:35,940 –> 00:14:39,210
مدیریت صحیح این شاخص ها برای یک
326
00:14:39,210 –> 00:14:41,580
مدل کارآمد دارد، تنظیم باید
327
00:14:41,580 –> 00:14:43,770
زمان بسیار کمتری در حافظه نسبت به حل نیاز داشته باشد
328
00:14:43,770 –> 00:14:46,170
و این صرع هایی که امروز نشان داده می شوند
329
00:14:46,170 –> 00:14:48,480
به عنوان مدل های کارآمد نوشته شده اند.
330
00:14:48,480 –> 00:14:50,640
نوشتن برخی از مدلهایی که
331
00:14:50,640 –> 00:14:52,290
ناکارآمد هستند امکانپذیر است،
332
00:14:52,290 –> 00:14:54,420
من آن سبک را نشان نمیدهم، میخواهم سبک
333
00:14:54,420 –> 00:14:56,370
نوشتن برخی از مدلهای کارآمد را نشان
334
00:14:56,370 –> 00:14:58,440
دهم که به خوبی مقیاسپذیر میشوند، زیرا مجموعه دادههای
335
00:14:58,440 –> 00:15:00,750
شما بزرگتر میشوند که نمونه نیروی کار
336
00:15:00,750 –> 00:15:02,430
در مثال نشان داده شده در نزدیکی نمونه های پایانی یا بسیار
337
00:15:02,430 –> 00:15:04,320
کوچک، اما آنها این سبک را دارند
338
00:15:04,320 –> 00:15:06,540
که اگر مجموعه داده های بسیار بزرگتری داشتم،
339
00:15:06,540 –> 00:15:08,760
آنها هنوز هم بسیار کارآمد حل می کنند و
340
00:15:08,760 –> 00:15:12,720
اگرچه من از پایتون استفاده میکنم، ایده این است
341
00:15:12,720 –> 00:15:14,640
که زمان راهاندازی زمان ساخت
342
00:15:14,640 –> 00:15:17,220
مدل بهینهسازی بسیار کمتر
343
00:15:17,220 –> 00:15:19,740
از زمانی است که
344
00:15:19,740 –> 00:15:21,660
الگوریتمهای گورووا برای محاسبه
345
00:15:21,660 –> 00:15:27,150
راهحل بهینه این مدلها نیاز دارند، بنابراین اجازه دهید
346
00:15:27,150 –> 00:15:29,160
برخی از اصول کلی را در این مورد صحبت کنیم.
347
00:15:29,160 –> 00:15:32,220
برنامه نویسی پایتون و گورو و رابط گروب،
348
00:15:32,220 –> 00:15:34,470
اما قبل از اینکه به رابط گروب برسم،
349
00:15:34,470 –> 00:15:35,940
باید در مورد چند
350
00:15:35,940 –> 00:15:39,960
ایده کلی از پایتون صحبت کنم، بنابراین ابتدا
351
00:15:39,960 –> 00:15:41,670
در مورد لیست های پایتون صحبت می کنیم و
352
00:15:41,670 –> 00:15:43,830
اینها را در مثال نیروی کار در
353
00:15:43,830 –> 00:15:46,710
پایتون یک لیست دیدیم. یک نوع داده داخلی است
354
00:15:46,710 –> 00:15:48,810
که می تواند موارد دیگر را ذخیره کند. آنها می
355
00:15:48,810 –> 00:15:50,640
توانند اقلام با اعداد صحیح را ذخیره کنند.
356
00:15:50,640 –> 00:15:53,010
می توانند مقادیر ممیز شناور را مرتب کنند.
357
00:15:53,010 –> 00:15:55,260
358
00:15:55,260 –> 00:15:57,360
359
00:15:57,360 –> 00:15:59,040
360
00:15:59,040 –> 00:16:01,650
ترکیبی از یک کارگر و یک
361
00:16:01,650 –> 00:16:04,800
شیفت آنها همچنین اشیاء دیگری را دیدند که
362
00:16:04,800 –> 00:16:07,400
پایتون ما یک لیست مرتب شده است به این معنی که
363
00:16:07,400 –> 00:16:10,200
ترتیب زمانی حفظ می شود که
364
00:16:10,200 –> 00:16:13,940
لیست شیفت ها را داشتیم دوشنبه قبل از سه شنبه
365
00:16:13,940 –> 00:16:16,290
لیست های پایتون به طور موثر پشتیبانی می کند
366
00:16:16,290 –> 00:16:19,950
تراسیون و دسترسی تصادفی و
367
00:16:19,950 –> 00:16:22,110
لیست های پایتون را می توان تغییر داد.
368
00:16:22,110 –> 00:16:24,330
369
00:16:24,330 –> 00:16:26,550
370
00:16:26,550 –> 00:16:29,100
371
00:16:29,100 –> 00:16:31,560
372
00:16:31,560 –> 00:16:34,740
373
00:16:34,740 –> 00:16:36,390
کمی متفاوت از یک مجموعه ریاضی هستند
374
00:16:36,390 –> 00:16:39,870
، زیرا لیست ها می توانند حاوی عناصر تکرار شونده
375
00:16:39,870 –> 00:16:42,960
باشند، اما روش های بسیار
376
00:16:42,960 –> 00:16:44,940
کارآمدی برای ساخت این شاخص ها
377
00:16:44,940 –> 00:16:47,520
وجود دارد، انواع داده های دیگری در پایتون وجود
378
00:16:47,520 –> 00:16:49,740
دارد.
379
00:16:49,740 –> 00:16:52,380
380
00:16:52,380 –> 00:16:55,380
پس از یک لیست،
381
00:16:55,380 –> 00:17:00,180
اما اگر به آن نیاز داشتید، اکنون
382
00:17:00,180 –> 00:17:02,130
وجود دارد، یک ویژگی خاص در پایتون
383
00:17:02,130 –> 00:17:04,410
به نام درک لیست وجود دارد، اگر
384
00:17:04,410 –> 00:17:06,930
متخصص پایتون نیستید اما
385
00:17:06,930 –> 00:17:08,640
تجربه ای در بهینه سازی دارید و
386
00:17:08,640 –> 00:17:10,740
با ایده نمادگذاری مجموعه ساز آشنا هستید
387
00:17:10,740 –> 00:17:12,660
و این واقعاً همان
388
00:17:12,660 –> 00:17:16,290
ایده در درک لیست است، بنابراین بیایید
389
00:17:16,290 –> 00:17:18,270
به چند مثال ساده نگاهی بیندازیم تا بتوانم
390
00:17:18,270 –> 00:17:21,630
فهرستی از مربع ها را با استفاده از تکرار کننده دیگر بسازم،
391
00:17:21,630 –> 00:17:22,500
392
00:17:22,500 –> 00:17:24,810
بنابراین در اینجا من g برای تکرار در
393
00:17:24,810 –> 00:17:27,599
محدودهای که من شش عنصر دارم و در
394
00:17:27,599 –> 00:17:29,640
پایتون وقتی از یک محدوده استفاده میکنید،
395
00:17:29,640 –> 00:17:32,430
معمولاً از صفر شروع میشود،
396
00:17:32,430 –> 00:17:34,890
اگرچه راههایی برای فراخوانی تابع محدوده و
397
00:17:34,890 –> 00:17:36,840
شروع از یک یا شروع از
398
00:17:36,840 –> 00:17:39,150
یک مقدار دیگر وجود دارد، اما در اینجا ما میخواهم
399
00:17:39,150 –> 00:17:40,860
شش عنصر
400
00:17:40,860 –> 00:17:43,020
صفر یک دو سه چهار پنج را بشمارم. من
401
00:17:43,020 –> 00:17:45,570
میخواهم فهرستی از مربعها
402
00:17:45,570 –> 00:17:48,480
ایجاد کنم، بنابراین فهرست ما توسط I تا
403
00:17:48,480 –> 00:17:51,720
توان دوم برای I در محدوده شش
404
00:17:51,720 –> 00:17:56,160
ایجاد میشود و این لیست را ایجاد میکند 0 1 4 9 16 و 25
405
00:17:56,160 –> 00:17:59,910
بنابراین آن مقادیر مربع هستند، ما همچنین می توانیم
406
00:17:59,910 –> 00:18:02,250
از تکرار کننده های متعدد استفاده کنیم و در
407
00:18:02,250 –> 00:18:06,270
اینجا لیستی از تاپل های IJ داریم، اکنون
408
00:18:06,270 –> 00:18:08,670
مهم نیست که من چه انتخابی داشته باشم اگر
409
00:18:08,670 –> 00:18:11,160
قبلاً نمی توانستم در اولین یا اول تکرار کنم. در اینجا
410
00:18:11,160 –> 00:18:13,559
من ابتدا می خواهم روی J تکرار کنم، بنابراین می
411
00:18:13,559 –> 00:18:15,419
خواهم برای J به شکل محدوده تکرار
412
00:18:15,419 –> 00:18:19,500
کنم که 0 1 2 3 4 روی J می رود
413
00:18:19,500 –> 00:18:21,030
و اینجا چیزی
414
00:18:21,030 –> 00:18:23,520
جالب است که من قصد ندارم در آن
415
00:18:23,520 –> 00:18:25,620
تکرار کنم یک مقدار ثابت است، اما من
416
00:18:25,620 –> 00:18:28,679
روی مقداری که به J بستگی دارد تکرار می کنم، بنابراین
417
00:18:28,679 –> 00:18:31,830
برای I در محدوده J، پس آن چه به
418
00:18:31,830 –> 00:18:34,260
نظر می رسد e well J 0 است
419
00:18:34,260 –> 00:18:38,070
من هیچ محدوده ای نداشتم، هیچ محدوده ای از 0 تا 0 وجود ندارد
420
00:18:38,070 –> 00:18:41,190
که وقتی J 1 باشد خالی است، می خواهم
421
00:18:41,190 –> 00:18:44,220
از I در محدوده 1 تکرار کنم
422
00:18:44,220 –> 00:18:46,740
که مقدار 0 است که به من جفت 0
423
00:18:46,740 –> 00:18:50,429
کاما 1 را می دهد وقتی J 2 باشد. من
424
00:18:50,429 –> 00:18:52,830
در محدوده 2 که مقدار 0 را به من می دهد
425
00:18:52,830 –> 00:18:56,610
با یکی که 0 2 و 1 را با همان
426
00:18:56,610 –> 00:18:59,580
چیزی مقایسه می کند زمانی که J مساوی 3 باشد تکرار می کنم، من محدوده 3 خواهم بود
427
00:18:59,580 –> 00:19:03,840
که 0 1 2 x 3 6 ارزش
428
00:19:03,840 –> 00:19:07,770
آن 6 جفت در خط است. سپس
429
00:19:07,770 –> 00:19:10,380
میتوانم از فیلتری استفاده کنم که فکر
430
00:19:10,380 –> 00:19:13,830
میکنیم شرط اگر است، بنابراین
431
00:19:13,830 –> 00:19:16,650
میتوانم لیستی به نام مربعهای غیر مربع برای
432
00:19:16,650 –> 00:19:20,760
I ایجاد کنم که فقط مقادیر I برای I در
433
00:19:20,760 –> 00:19:24,080
محدوده 10 به معنای 0 1 2 3 4 5 6 7 8 9 است.
434
00:19:24,080 –> 00:19:26,940
با این حال، شرطی را اضافه میکنم که اگر من
435
00:19:26,940 –> 00:19:29,100
در آن لیست مربعهایی که در ابتدا داشتم نباشم، به
436
00:19:29,100 –> 00:19:31,820
طوری که لیست را به من میدهد که
437
00:19:31,820 –> 00:19:34,860
شامل 0 یا 1 نمیشود، زیرا
438
00:19:34,860 –> 00:19:36,419
آنها در لیست مربعها هستند
439
00:19:36,419 –> 00:19:39,450
، Z 2 و 3 را میدهد، اما برای
440
00:19:39,450 –> 00:19:40,890
پرش با آن به لیست
441
00:19:40,890 –> 00:19:44,340
مربعهای 5 6 7 8 گنجانده شده است، یک 9 حذف شده است
442
00:19:44,340 –> 00:19:47,520
زیرا 9 در لیست
443
00:19:47,520 –> 00:19:50,910
مربعهای من است اکنون این نحو واکنش بالا
444
00:19:50,910 –> 00:19:53,340
شبیه به optimization است. n نماد همانطور
445
00:19:53,340 –> 00:19:54,690
که قبلاً گفتم
446
00:19:54,690 –> 00:19:55,889
و هر کاری را که در
447
00:19:55,889 –> 00:19:57,690
نحو درک لیست انجام می دهید، نمی توانید در
448
00:19:57,690 –> 00:20:00,749
برنامه نویسی استاندارد با استفاده از حلقه های for انجام دهید، اما
449
00:20:00,749 –> 00:20:03,960
به
450
00:20:03,960 –> 00:20:07,139
عنوان مثال در مورد لیست جفت
451
00:20:07,139 –> 00:20:09,059
هایی که قبلاً با استفاده از درک لیست ایجاد کردم فکر کنید.
452
00:20:09,059 –> 00:20:11,369
من می توانم آن را
453
00:20:11,369 –> 00:20:14,309
با استفاده از دو حلقه for مختلف ایجاد کنم که برای
454
00:20:14,309 –> 00:20:17,789
J و محدوده برای I در محدوده J
455
00:20:17,789 –> 00:20:21,720
می گویم و سپس می گویم جفت ها به جفت IJ نقطه اضافه می کنند
456
00:20:21,720 –> 00:20:24,570
و باید در همان ابتدا یک خط دیگر اضافه کنم
457
00:20:24,570 –> 00:20:26,369
تا یک لیست خالی
458
00:20:26,369 –> 00:20:28,919
ایجاد کنم. میتوان این مقادیر را به این اضافه کرد،
459
00:20:28,919 –> 00:20:30,809
بنابراین این معادل خطی است
460
00:20:30,809 –> 00:20:32,489
که قبلاً از نحو درک لیست استفاده کردم،
461
00:20:32,489 –> 00:20:34,710
اما چهار
462
00:20:34,710 –> 00:20:36,929
خط طول میکشد و صادقانه بگویم که من نسخه اول را دوست دارم
463
00:20:36,929 –> 00:20:38,519
زیرا ریاضیتر به نظر میرسد
464
00:20:38,519 –> 00:20:40,679
و فشردهتر
465
00:20:40,679 –> 00:20:42,749
است و خواندن آن بسیار آسان است. آنها هر دو
466
00:20:42,749 –> 00:20:44,429
تجهیزاتی هستند که می توانید از یکی
467
00:20:44,429 –> 00:20:48,169
استفاده کنید، هر دو به خوبی کار می کنند
468
00:20:49,009 –> 00:20:51,330
پایتون یک ویژگی دیگر به نام
469
00:20:51,330 –> 00:20:54,479
عبارات ژنراتور دارد، اکنون ممکن است
470
00:20:54,479 –> 00:20:56,340
نگه ندارید ممکن است همه این
471
00:20:56,340 –> 00:20:58,919
نام های خنده دار را به خاطر بسپارید، اما ایده بیان ژنراتور
472
00:20:58,919 –> 00:21:00,869
بسیار شبیه به درک لیست است،
473
00:21:00,869 –> 00:21:02,970
آن فقط یک لیست از
474
00:21:02,970 –> 00:21:05,249
لیست میانی است، بنابراین به یاد داشته باشید زمانی
475
00:21:05,249 –> 00:21:06,929
که لیست مربع ها را در
476
00:21:06,929 –> 00:21:10,830
اسلاید قبلی داریم، لیست 0 1 4 9
477
00:21:10,830 –> 00:21:14,639
16 و 25 را می خواستم که یک لیست ایجاد می کند که
478
00:21:14,639 –> 00:21:17,759
مقداری اضافی است. ذخیره سازی برای ذخیره آن لیست از
479
00:21:17,759 –> 00:21:21,749
6 مربع اگر می خواستم فقط
480
00:21:21,749 –> 00:21:24,599
مجموع آن مربع ها را محاسبه کنم، می
481
00:21:24,599 –> 00:21:27,210
توانم از فضای ذخیره اضافی و مرحله اضافی
482
00:21:27,210 –> 00:21:30,210
محاسبه آن لیست با استفاده از یک
483
00:21:30,210 –> 00:21:31,799
عبارت مولد صرفنظر کنم، این همان
484
00:21:31,799 –> 00:21:35,729
نحو I به توان دوم را دارد. من
485
00:21:35,729 –> 00:21:38,460
در محدوده 6 هستم اما در دومی
486
00:21:38,460 –> 00:21:41,639
جفت براکت اضافی را در داخل حذف می کنم و به
487
00:21:41,639 –> 00:21:43,169
این ترتیب لیست میانی را محاسبه نمی کند
488
00:21:43,169 –> 00:21:45,749
و اگر نیازی به
489
00:21:45,749 –> 00:21:47,609
ذخیره آن نداشته باشم کمی
490
00:21:47,609 –> 00:21:49,679
کارآمدتر است و محاسبه می شود این
491
00:21:49,679 –> 00:21:54,179
مجموع را 55 کنید که مجموع 0 1 4
492
00:21:54,179 –> 00:21:57,779
9 15 و 25 است، اکنون رابط Grobe
493
00:21:57,779 –> 00:22:00,210
از لیست ها و
494
00:22:00,210 –> 00:22:01,979
نحو درک لیست و عبارات مولد استفاده می
495
00:22:01,979 –> 00:22:04,320
کند و ما این را در
496
00:22:04,320 –> 00:22:06,869
یک لحظه زمانی که وارد groovy می شویم نشان خواهیم داد.
497
00:22:06,869 –> 00:22:07,930
نحو
498
00:22:07,930 –> 00:22:09,790
اما ب قبل از آن من قصد دارم در مورد
499
00:22:09,790 –> 00:22:12,730
دو ساختار داده خاص صحبت کنم که
500
00:22:12,730 –> 00:22:15,370
Grobe اعداد صحیح را با یک رابط کوبنده معرفی
501
00:22:15,370 –> 00:22:17,590
می کند. اولین مورد چیزی است که ما آن
502
00:22:17,590 –> 00:22:20,140
را یک لیست تاپلی می نامیم، مانند یک لیست است،
503
00:22:20,140 –> 00:22:22,480
اما برای ذخیره چند تایی طراحی شده است، به
504
00:22:22,480 –> 00:22:25,090
طور خاص فرض کنید من یک لیست از
505
00:22:25,090 –> 00:22:28,330
شهرها دارم. a b c و d و سپس من یک موش دارم
506
00:22:28,330 –> 00:22:30,670
فهرستی از مسیرهایی که آنها گلابی یا سه
507
00:22:30,670 –> 00:22:33,580
تایی هستند، اما این همه ترکیبی از
508
00:22:33,580 –> 00:22:37,840
شهرها نیست، فقط این لیست از پنج مورد از
509
00:22:37,840 –> 00:22:42,220
آنها a برای دیدن B به C B به D و
510
00:22:42,220 –> 00:22:45,010
C به D است، بنابراین نه هر ترکیبی از
511
00:22:45,010 –> 00:22:47,980
16 جفت شهر، فقط این در
512
00:22:47,980 –> 00:22:50,830
زیر مجموعه 5 شهر است، حالا اگر بخواهم
513
00:22:50,830 –> 00:22:53,140
این لیست مسیرها را تکرار
514
00:22:53,140 –> 00:22:55,270
کنم، فرض کنید میخواستم هر
515
00:22:55,270 –> 00:22:57,850
شهری را که میخواستم لیست مسیرهایی
516
00:22:57,850 –> 00:23:00,490
را که از آن خارج میشوند را جستجو کنم، پیدا کنم. شهر، بنابراین ما یک
517
00:23:00,490 –> 00:23:02,950
تابع خاص در Grove یک
518
00:23:02,950 –> 00:23:04,570
لیست تاپلی به نام دستور Select داریم که
519
00:23:04,570 –> 00:23:07,450
فیلتر کارآمدی را به همراه دارد، بنابراین اگر
520
00:23:07,450 –> 00:23:10,540
برای هر C در شهرها تکرار کنیم، برای
521
00:23:10,540 –> 00:23:14,320
اولین بار زمانی که C برابر با a است، زمانی که
522
00:23:14,320 –> 00:23:16,720
لیست را با مسیرهایی که انتخاب می کنند چاپ می کنیم.
523
00:23:16,720 –> 00:23:19,630
شروع از m a و این به
524
00:23:19,630 –> 00:23:22,180
ما لیست یک کاما B و یک کاما C را می دهد حالا که
525
00:23:22,180 –> 00:23:24,100
نماد نشان می دهد که از مقدار C شروع می کنیم
526
00:23:24,100 –> 00:23:27,790
که برابر است با a و سپس
527
00:23:27,790 –> 00:23:30,700
ستاره به معنی تمام مقادیر منطبق
528
00:23:30,700 –> 00:23:32,740
را که با مقدار اول شروع
529
00:23:32,740 –> 00:23:35,920
می شود به من بدهید تا لیست یک کاما B و
530
00:23:35,920 –> 00:23:39,460
یک کاما C وقتی کوچک در شهر
531
00:23:39,460 –> 00:23:42,520
برابر با B شود، لیست مسیرهایی را به ما می دهد
532
00:23:42,520 –> 00:23:44,590
که از B شروع می شوند که تبدیل به C می شود و
533
00:23:44,590 –> 00:23:48,190
زمانی که شهر برابر با C می شود به d تبدیل می شود،
534
00:23:48,190 –> 00:23:50,890
ما لیست را به سادگی C کمدی داریم و
535
00:23:50,890 –> 00:23:52,750
در آخرین موردی که این
536
00:23:52,750 –> 00:23:55,690
شهر آغازین d است، هیچ مسیری وجود ندارد که
537
00:23:55,690 –> 00:23:58,600
از D شروع شود، بنابراین لیست خالی را برمی گرداند
538
00:23:58,600 –> 00:24:01,060
و آنچه در مورد Medoro
539
00:24:01,060 –> 00:24:04,210
be tipple list کلاس خوب است این است که این شاخص
540
00:24:04,210 –> 00:24:06,430
برای کارآمد کردن این دستور انتخاب بسیار
541
00:24:06,430 –> 00:24:09,340
کارآمد است، پس به چه معناست. این است که
542
00:24:09,340 –> 00:24:12,640
اولین باری که این
543
00:24:12,640 –> 00:24:15,070
دستور Select را محاسبه میکنیم، آن را یک بار محاسبه میکنیم و
544
00:24:15,070 –> 00:24:17,980
سپس موارد بعدی از این شاخص استفاده میکنند
545
00:24:17,980 –> 00:24:20,669
و این باعث میشود که بسیار کارآمد باشد زیرا
546
00:24:20,669 –> 00:24:25,499
مدت زمان بسیار خوب میشود،
547
00:24:25,499 –> 00:24:27,869
کلاس دومی به نام تاپل dict وجود دارد
548
00:24:27,869 –> 00:24:31,200
و این مانند یک tu است. لیست ple اما یک
549
00:24:31,200 –> 00:24:33,059
کلاس فرهنگ لغت است که در آن کلیدها چند تا هستند
550
00:24:33,059 –> 00:24:35,789
، لیست کلیدها در واقع یک
551
00:24:35,789 –> 00:24:38,489
لیست تاپلی است، بنابراین شما باید مجموع را انتخاب کنید
552
00:24:38,489 –> 00:24:41,070
و عملگرهای محصول را روی آن قرار دهید تا پیشبینی
553
00:24:41,070 –> 00:24:43,230
کنید که در سرتاسر رابط groovy
554
00:24:43,230 –> 00:24:45,149
زمانی که متغیرهای تصمیم را ایجاد میکنید
555
00:24:45,149 –> 00:24:47,009
استفاده میشود. محدودیتها و من
556
00:24:47,009 –> 00:24:49,559
چند نمونه در دو اسلاید بعدی خود دارم،
557
00:24:49,559 –> 00:24:56,249
بنابراین در رابط
558
00:24:56,249 –> 00:24:58,739
robing دو تابع داریم که به ما امکان میدهد
559
00:24:58,739 –> 00:25:01,230
متغیرها و محدودیتها را به صورت انبوه ایجاد کنیم
560
00:25:01,230 –> 00:25:04,889
و آنها به صورت دستورات چندگانه برگردانده میشوند،
561
00:25:04,889 –> 00:25:06,690
بنابراین اولین تابع شماست.
562
00:25:06,690 –> 00:25:08,429
قرار است بیشتر از آن استفاده شود در
563
00:25:08,429 –> 00:25:11,070
نوارهای تبلیغاتی مدلسازی میشود که
564
00:25:11,070 –> 00:25:13,289
روشهای مختلفی برای ایجاد متغیرها دارد که
565
00:25:13,289 –> 00:25:15,600
میتوانید از اعداد صحیح در این مثال استفاده کنید.
566
00:25:15,600 –> 00:25:19,169
567
00:25:19,169 –> 00:25:21,269
متغیرهایی که
568
00:25:21,269 –> 00:25:23,909
با دو متفاوت در دو مقدار مختلف نمایه می شوند
569
00:25:23,909 –> 00:25:26,309
، اولی
570
00:25:26,309 –> 00:25:29,759
محدوده 2 به معنای 0 1 و
571
00:25:29,759 –> 00:25:32,190
شاخص دوم محدوده 3
572
00:25:32,190 –> 00:25:35,970
به معنای 0 1 2 خواهد بود و بنابراین این به من 6
573
00:25:35,970 –> 00:25:41,639
متغیر x 0 0 می دهد. x 0 1 x 0 2 و X 1 0 X
574
00:25:41,639 –> 00:25:44,879
1 1 و X 1 2 بنابراین اگر من یک راه بسیار خوب برای
575
00:25:44,879 –> 00:25:47,190
ایجاد 6 متغیر فقط در یک دستور
576
00:25:47,190 –> 00:25:50,460
در پایتون اکنون باشم، جالب تر
577
00:25:50,460 –> 00:25:53,279
این است که از لیست های دیگر استفاده کنیم تا
578
00:25:53,279 –> 00:25:56,399
بتوانیم آن را با استفاده از لیست های اسکالر صدا کنیم، بنابراین در اینجا
579
00:25:56,399 –> 00:25:58,470
به آن باز می گردم. لیستی از شهرهایی که
580
00:25:58,470 –> 00:26:01,379
چند لحظه پیش داشتم که شهرهای ABCD بودند
581
00:26:01,379 –> 00:26:03,509
و این بار میخواهم حاصل ضرب دو شهر مختلف را ایجاد کنم،
582
00:26:03,509 –> 00:26:05,970
بنابراین
583
00:26:05,970 –> 00:26:08,549
16 متغیر به من میدهد که اینها
584
00:26:08,549 –> 00:26:11,340
متغیرهایی به نام Y خواهند بود و بنابراین اکنون
585
00:26:11,340 –> 00:26:16,590
متغیرهایی را دارم yaa. yaa B Y acya D و غیره، بنابراین
586
00:26:16,590 –> 00:26:19,289
من 16 متغیر دارم، اما میتوانم
587
00:26:19,289 –> 00:26:22,320
شاخص متغیر را با لیست تاپلی ایجاد
588
00:26:22,320 –> 00:26:24,779
کنم، به یاد داشته باشید که در لیست معمولی من یک لیست
589
00:26:24,779 –> 00:26:26,609
از مسیرها داشتم که یکی از هر جفت
590
00:26:26,609 –> 00:26:29,340
شهر زیرمجموعه آنها بود و
591
00:26:29,340 –> 00:26:32,519
دیدیم این در مثال نیروی کار در اینجا
592
00:26:32,519 –> 00:26:34,260
من یک لیست از 5
593
00:26:34,260 –> 00:26:37,230
تا از آن دارم و بنابراین اکنون پنج متغیر را دارم که
594
00:26:37,230 –> 00:26:40,470
فقط توسط آن لیست فهرست مسیرها فهرست شده است،
595
00:26:40,470 –> 00:26:42,630
بنابراین این لیست من است متغیرهای من
596
00:26:42,630 –> 00:26:48,900
اکنون za b za c ZB c ZB d و c ایندکس توسط C
597
00:26:48,900 –> 00:26:52,290
D من همچنین میتوانم از هر نوع
598
00:26:52,290 –> 00:26:53,850
فاصله پایتون از جمله
599
00:26:53,850 –> 00:26:55,800
عبارت مولد استفاده کنم. nk این
600
00:26:55,800 –> 00:26:57,420
کاری است که اغلب باید انجام شود، اما این
601
00:26:57,420 –> 00:26:59,610
فقط قدرت
602
00:26:59,610 –> 00:27:01,440
زبان برنامه نویسی پایتون و رابط Grobe را به شما نشان می دهد
603
00:27:01,440 –> 00:27:04,920
در اینجا می توانم متغیرهایی ایجاد
604
00:27:04,920 –> 00:27:07,440
کنم که به نوعی عبارت نیاز دارند
605
00:27:07,440 –> 00:27:09,420
در اینجا برای همه من در یک
606
00:27:09,420 –> 00:27:12,570
محدوده به جز برای مقدار دو، بنابراین
607
00:27:12,570 –> 00:27:15,630
من متغیرهای W 0 W 1 را دارم و زمانی
608
00:27:15,630 –> 00:27:18,420
که برابر با 2 شد از آن گذشتم و سپس W 3 و W 4 را دریافت کردم،
609
00:27:18,420 –> 00:27:20,160
این احتمالاً کاری نیست که شما
610
00:27:20,160 –> 00:27:22,380
اغلب انجام دهید، اما فقط نشان می دهد
611
00:27:22,380 –> 00:27:24,240
شما که این یک چیز بسیار قدرتمند است
612
00:27:24,240 –> 00:27:28,020
این عبارات مولد با
613
00:27:28,020 –> 00:27:33,990
رابط پایتون برای gropey بنابراین این مدل تابع VARs را اضافه می
614
00:27:33,990 –> 00:27:36,360
کند به طور خودکار
615
00:27:36,360 –> 00:27:39,360
حاصل ضرب چند شاخص را می گیرد ما
616
00:27:39,360 –> 00:27:41,880
دیدیم که در اسلاید قبلی ما از اعداد صحیح استفاده کردیم به
617
00:27:41,880 –> 00:27:44,600
طوری که شش متغیر را به ما
618
00:27:44,600 –> 00:27:47,820
شاخص در دو داد. مقادیر مختلف اما ما از
619
00:27:47,820 –> 00:27:50,310
اعداد صحیح استفاده می کنیم، همچنین این کار را انجام دادیم که با استفاده از the
620
00:27:50,310 –> 00:27:52,200
به لیست شهرها، فقط
621
00:27:52,200 –> 00:27:54,810
شهرها را برای ایجاد متغیر Y تکرار کردیم، همچنین
622
00:27:54,810 –> 00:27:56,670
متغیری را که
623
00:27:56,670 –> 00:28:00,240
توسط لیست پراکنده مسیرها نمایه شده بود، اما آنچه
624
00:28:00,240 –> 00:28:02,430
ایجاد کردیم چرا از همه ترکیب ها استفاده می کنیم، تکرار کردیم.
625
00:28:02,430 –> 00:28:05,240
علاوه بر این، بطری افزودن VAR
626
00:28:05,240 –> 00:28:08,370
ها به طور خودکار نام ها را با استفاده از زیرمجموعه ها تولید می کند،
627
00:28:08,370 –> 00:28:10,970
اکنون یک
628
00:28:10,970 –> 00:28:13,770
محدودیت مهم در عملکرد افزودن VARs وجود دارد
629
00:28:13,770 –> 00:28:15,900
که به لیستی از اسکالرها نیاز دارد که لیست
630
00:28:15,900 –> 00:28:18,540
تاپل ها با لیست های دلخواه در پایتون کار نمی کند،
631
00:28:18,540 –> 00:28:21,120
اما این بسیار است که اینطور نیست.
632
00:28:21,120 –> 00:28:22,890
چیزهای بسیار رایجی که در
633
00:28:22,890 –> 00:28:28,980
مدلهای بهینهسازی استفاده میکنید، یک
634
00:28:28,980 –> 00:28:31,140
تابع متناظر برای اضافه کردن
635
00:28:31,140 –> 00:28:33,030
636
00:28:33,030 –> 00:28:35,460
637
00:28:35,460 –> 00:28:38,220
محدودیتها وجود دارد
638
00:28:38,220 –> 00:28:42,330
که مدل بهینهسازی شما به آن تابع
639
00:28:42,330 –> 00:28:43,919
محدودیتهای افزودن میگویند. متغیرها و
640
00:28:43,919 –> 00:28:45,720
فرض کنید من یک محدودیت ظرفیت
641
00:28:45,720 –> 00:28:49,500
دارم، سپس می توانم بگویم که M
642
00:28:49,500 –> 00:28:50,820
محدودیت های اضافه که می خواهم
643
00:28:50,820 –> 00:28:54,870
محدودیت ظرفیت X IJ بعلاوه y IJ را اضافه کنم
644
00:28:54,870 –> 00:28:57,660
کمتر یا مساوی 2 برای هر مسیر اصلی IJ است
645
00:28:57,660 –> 00:29:01,200
و عبارت مولد من این است
646
00:29:01,200 –> 00:29:04,919
این چیزی است که می گوید من برای همه IJ و
647
00:29:04,919 –> 00:29:06,570
مسیرها و من در واقع یک
648
00:29:06,570 –> 00:29:08,040
محدودیت برای هر یک از آن جفت ها ایجاد می کنم و
649
00:29:08,040 –> 00:29:10,290
این بسیار خوب است، بسیار جبری است
650
00:29:10,290 –> 00:29:12,870
و دقیقا همان کاری را که من می کنم انجام می دهد. ht بنویسید اگر
651
00:29:12,870 –> 00:29:14,730
من سعی
652
00:29:14,730 –> 00:29:16,440
میکردم یک نمایش ریاضی از مدل بهینهسازی خود را نصب نکنم بنویسم،
653
00:29:16,440 –> 00:29:18,809
اما به من این امکان
654
00:29:18,809 –> 00:29:20,549
را میدهد که این کار را به طور کامل در
655
00:29:20,549 –> 00:29:25,169
زبان برنامهنویسی پایتون برای
656
00:29:25,169 –> 00:29:26,730
انواع مختلف عملگرهایی که از نظر ریاضی استفاده میکنید انجام دهم
657
00:29:26,730 –> 00:29:28,770
و وقتی شما
658
00:29:28,770 –> 00:29:31,290
در پایتون هستید، توابع مربوطه را در پایتون دارند
659
00:29:31,290 –> 00:29:32,510
. ساخت عبارات خطی و درجه دوم
660
00:29:32,510 –> 00:29:35,070
مانند قیود
661
00:29:35,070 –> 00:29:36,929
و هدف یک دسته از
662
00:29:36,929 –> 00:29:38,460
عملگرهای ریاضی مختلف وجود دارد
663
00:29:38,460 –> 00:29:40,950
که شما دارای
664
00:29:40,950 –> 00:29:43,620
عملگرهای ریاضی پایه یا باینری هستید.
665
00:29:43,620 –> 00:29:45,299
666
00:29:45,299 –> 00:29:47,730
667
00:29:47,730 –> 00:29:51,210
در پایتون و همچنین
668
00:29:51,210 –> 00:29:52,530
چیزی به نام
669
00:29:52,530 –> 00:29:55,370
عملگر مجموع جمع وجود دارد که ما اغلب در
670
00:29:55,370 –> 00:29:58,500
نوشتن آن با استفاده از نماد سیگما نشان
671
00:29:58,500 –> 00:30:00,419
میدهیم و میتوانید از آن به تنهایی استفاده کنید، اما میتوانید
672
00:30:00,419 –> 00:30:02,610
از آن در محصولات یا محصولات نقطهای نیز استفاده کنید.
673
00:30:02,610 –> 00:30:04,410
چند نمونه از آن را در چند مورد نشان خواهم داد
674
00:30:04,410 –> 00:30:06,480
در لحظاتی که از این
675
00:30:06,480 –> 00:30:09,120
عملگر مجموع جمع استفاده می کنید، شاخص ها
676
00:30:09,120 –> 00:30:12,390
برای استفاده از آن در گروه بسیار مهم هستند.
677
00:30:12,390 –> 00:30:13,950
رابط کاربری پایتون دو نسخه متفاوت دارد
678
00:30:13,950 –> 00:30:16,020
یک نسخه کامل از نسخه ساده
679
00:30:16,020 –> 00:30:16,679
680
00:30:16,679 –> 00:30:19,410
چرا دو نسخه وجود دارد خوب
681
00:30:19,410 –> 00:30:21,179
نسخه ساده نوشتن بسیار ساده تر است،
682
00:30:21,179 –> 00:30:23,910
کوتاه تر به نظر می رسد کمی تمیزتر به نظر می رسد اما
683
00:30:23,910 –> 00:30:25,559
برخی چیزها وجود دارد که نمی توانید
684
00:30:25,559 –> 00:30:27,900
با ساده ترین نحو انجام دهید. می
685
00:30:27,900 –> 00:30:29,460
توانید از کامل استفاده کنید که بسیار
686
00:30:29,460 –> 00:30:31,740
دشوارتر است و به شما امکان می دهد
687
00:30:31,740 –> 00:30:35,700
برخی از کارها ر