Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
👍2❤1🔥1👏1
Optimyar | آپتیمیار
GAMSSetup.zip
این نسخه 24.1.2 نرمافزار GAMS هست که در حال حاضر License کرکشده مناسب داره
🎯 نکته 1. نرمافزار رو بعد از اینکه نصب کردید، لایسنس GAMS_Best_LICENSE را فراخوانی میکنید (هیچ نیازی به برگرداندن زمان سیستم نیست ولی در بعضی از سالورها از جمله BARON برای مدلهای غیرخطی محدودیت دارید).
🎯 نکته 2. اگر سالوری رو خواستید که در لایسنس اول فعال نبود، لایسنس GAMS_License_TimeBack2000 را فراخوانی میکنید (این بار نیاز هست تایم سیستم رو تا حدود سال 2000 عقب برگردانید)
❇️ پیشنهاد بنده، لایسنس اول هست مگر اینکه واقعا یک سالور غیرخطی مثل BARON نیاز داشته باشید و سالورهای غیرخطی لایسنس اول کار شما رو راه ننداخته باشند.
آکادمی تخصصی آپتیمیار (Optimyar):
optimyar.com
📊✈️
#GAMS
#گمز
🎯 نکته 1. نرمافزار رو بعد از اینکه نصب کردید، لایسنس GAMS_Best_LICENSE را فراخوانی میکنید (هیچ نیازی به برگرداندن زمان سیستم نیست ولی در بعضی از سالورها از جمله BARON برای مدلهای غیرخطی محدودیت دارید).
🎯 نکته 2. اگر سالوری رو خواستید که در لایسنس اول فعال نبود، لایسنس GAMS_License_TimeBack2000 را فراخوانی میکنید (این بار نیاز هست تایم سیستم رو تا حدود سال 2000 عقب برگردانید)
❇️ پیشنهاد بنده، لایسنس اول هست مگر اینکه واقعا یک سالور غیرخطی مثل BARON نیاز داشته باشید و سالورهای غیرخطی لایسنس اول کار شما رو راه ننداخته باشند.
آکادمی تخصصی آپتیمیار (Optimyar):
optimyar.com
📊✈️
#GAMS
#گمز
❤1🔥1
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
مهمترین نکات در رابطه با مدل های دوسطحی (Bi-Level programming) که در در سطح دوم (پیرو/Follower) غیرخطی بودن داره به صورت زیر هست:
1- اول برای اینکه این اطلاعات مفید باشه به طور کلی یاداوری میکنم که این مدل ها معمولا در شرایطی رقابتی یا گیم بین دو سازمان یا واحد تصمیم گیری رخ میده که واحد اصلی (یا اصطلاحا Leader ) باید بهینگی واحد پیرو (یا واحدی که تحت تاثیر تصمیمات اون هست یا همون Follower ) رو در نظر بگیره. این مسائل در ادبیات معمولا به بازی استکلبرگ (Stackelberg Game) هم معروف هست.
2- نکته اول اینه که حتی اگر مدل پیرو خطی هم باشه باز هم شرایط KKT تضمین نمیکنه حتما به جواب بهینه برسید. در واقع یکی از خاصیت های این مدل ها اینا که لزوما جواب بهینه ندارن. در واقع اگر پیرو پاسخ بهینه چندگانه داشته باشه در این صورت هیچ لزومی نداره که لیدر بتونه در شرایط بهینه قرار بگیره.
این رو گفتم که اشتباه نکنیم و فکر کنیم اگر سطح دوم / پیرو خطی هست دیگه راحت یک KKT بزنیم و تمام. البته با فرض اینکه پیرو به هر تصمیم لیدر فقط یک واکنش بهینه داره استفاد از KKT درست هست در حالت خطی. در حالت کلی چه خطی و چه غیرخطی ما فرض مذکور رو داریم(البته این فرض در برخی از مسائل واقعا غیرمنطقی هست ولی در مقالات معمولا این فرض هست)
3- در مدلهای غیرخطی که مدل قابل خطی سازی هست (مثل ضرب باینری در پیوسته و امثالهم) بهتره مدل خطی شه. یا از تقریب های خطی ساز استفاده شه که حتی این تقریب به نفع پیرو هم باشه. مثلا اگر کمینه سازی هزینه پیرو رو در نظر گرفتیم، تقریب خطی موجب کران پایین هزینه برای اون بشه نه کران بالا)
4- دقت داشته باشیم که ضرب متغیر تصمیم گیری لیدر در متغیر تصمیم گیری پیرو باعث نمیشه مدل پیرو غیرخطی باشه. چراکه تصمیم لیدر برای پیرو ثابت در نظر گرفته میشه. یعنی شما در این شرایط هم راحت KKT رو بزنید (البته اون فرض فراموش نشه). لازم به توضیح است در این شرایط مطمئنا مدل تک سطحی نهایی بعد از اعمال KKT غیرخطی میشه
5- در مدلهای غیرخطی، در صورتی که مدل پیرو کاملا پیوسته است (متغیر باینری و عددصحیح) نداشته باشه. اولین کاری که بهتره انجام شود، بررسی تحدب است. حالا نه لزوما با ماتریس هسین(Hessian) بلکه هر تکنیک که میتونید اعمال کنید. (مثلا جمع محدب ها محدب هست و توان 2 ها محدب هستن و ...) اگر تحدب برقرار هست با خیال راحت قیود KKT رو جایگزین کنید. باز هم میگم در این حالت هم هنوز اون فرض که عرض کردم رو باید قبول کرده باشیم. پر واضح است که اینجا هم مدل نهایی غیرخطی هست. نکته جالب اینجاست که حتی اگر مدل پیرو تحدب رو داشته باشه و KKT بزنید، باز هم هیچ تضمینی نیست مدل نهایی محدب باشه و اتفاقا معمولا عدم تحدب داره و خود این هم چالش است. حالا اگر مدل عددصحیح و غیره هم داشته باشه که چالش دو چندان هم میشه. البته در این شرایط معمولا خیلی راحت مدل نهایی رو یک Solver مثل BARON و ... داده میشه که حل کنه!!! که مطمئنا این حرکت چندان درست نیست و امکان داره لیدر بشدت در بهینگی محلی قرار بگیره (تازه اگر BARON یا BONMIN و امثالهم حل کنن مدل نهایی رو)
6- حالا اگر 5 مورد بالا را برای شما صدق نمیکنه و یا دنبال راه کارهای دیگری هستید؛ روش پیشنهادی بنده به صورت زیر هست که در کارهای مختلفی با تعامل GAMS و MATLAB و یا CPLEX و یا JAVA و CPLEX قابل پیاده سازی هست.
گام 1) جواب اولیه X برای متغیرهای تصمیم گیری لیدر در نظر گرفته شود.
گام 2) مسئله بهینه سازی پیرو (که یک مدل غیر خطی هست حل شود) با توجه به غیرخطی بودن این مدل موارد زیر پیشنهاد میشه:
* با رویکردهای حل ابتکاری و یا فراابتکاری حل شود و پاسخ نزدیک به بهینه Y (که امکان داره بهینه هم باشه) برای پیرو بدست آورده شود.
* با روش های برنامه ریزی عیرحطی (از جمله روش SQP و یا Trust Region ) پاسخ نزدیک به بهینه Y (که امکان داره بهینه هم باشه) برای پیرو بدست آورده شود.
گام 3) مدل بهینه سازی لیدر، با ثابت کردن تصمیم Y برای پیرو، حل می شود. حالا امکان داره این مدل خطی یاشه که از solverهایی مثل CPLEX و امثالهم استفاده میکنید و سریع X جدید رو برای لیدر بدست میاد. یا امکان داره خود این مدل هم غیرخطی باشه که باز هم دو روش * گام 2 پیشنهاد میشه و یا حتی solver غیرخطی موجود در GAMS و ... .
گام 4) تصمیم لیدر در گام 3 آپدیت میشه و مجددا به گام 2 برمیگردیم و این رویه تاجایی پیدا میکنه که بهبود قابل توجه ای در تابع هدف لیدر رخ نده.
در رویه فوق اگرچه تضمینی برای بهینه سراسری نیست، ولی با تغییر در پاسخ اولیه A میتونه به جواب های مختلفی همگرا شه و اگر N مرتبه در مقدار اولیه X تغییر ایجاد شود مطمئنا بهترین پاسخ آن بسیار نزدیک به بهینه است (مطمئنا هرچی N بیشتر و جواب های اولیه متمایزتر باشه، کیفیت پاسخ نهایی بهتر میشه ).
1- اول برای اینکه این اطلاعات مفید باشه به طور کلی یاداوری میکنم که این مدل ها معمولا در شرایطی رقابتی یا گیم بین دو سازمان یا واحد تصمیم گیری رخ میده که واحد اصلی (یا اصطلاحا Leader ) باید بهینگی واحد پیرو (یا واحدی که تحت تاثیر تصمیمات اون هست یا همون Follower ) رو در نظر بگیره. این مسائل در ادبیات معمولا به بازی استکلبرگ (Stackelberg Game) هم معروف هست.
2- نکته اول اینه که حتی اگر مدل پیرو خطی هم باشه باز هم شرایط KKT تضمین نمیکنه حتما به جواب بهینه برسید. در واقع یکی از خاصیت های این مدل ها اینا که لزوما جواب بهینه ندارن. در واقع اگر پیرو پاسخ بهینه چندگانه داشته باشه در این صورت هیچ لزومی نداره که لیدر بتونه در شرایط بهینه قرار بگیره.
این رو گفتم که اشتباه نکنیم و فکر کنیم اگر سطح دوم / پیرو خطی هست دیگه راحت یک KKT بزنیم و تمام. البته با فرض اینکه پیرو به هر تصمیم لیدر فقط یک واکنش بهینه داره استفاد از KKT درست هست در حالت خطی. در حالت کلی چه خطی و چه غیرخطی ما فرض مذکور رو داریم(البته این فرض در برخی از مسائل واقعا غیرمنطقی هست ولی در مقالات معمولا این فرض هست)
3- در مدلهای غیرخطی که مدل قابل خطی سازی هست (مثل ضرب باینری در پیوسته و امثالهم) بهتره مدل خطی شه. یا از تقریب های خطی ساز استفاده شه که حتی این تقریب به نفع پیرو هم باشه. مثلا اگر کمینه سازی هزینه پیرو رو در نظر گرفتیم، تقریب خطی موجب کران پایین هزینه برای اون بشه نه کران بالا)
4- دقت داشته باشیم که ضرب متغیر تصمیم گیری لیدر در متغیر تصمیم گیری پیرو باعث نمیشه مدل پیرو غیرخطی باشه. چراکه تصمیم لیدر برای پیرو ثابت در نظر گرفته میشه. یعنی شما در این شرایط هم راحت KKT رو بزنید (البته اون فرض فراموش نشه). لازم به توضیح است در این شرایط مطمئنا مدل تک سطحی نهایی بعد از اعمال KKT غیرخطی میشه
5- در مدلهای غیرخطی، در صورتی که مدل پیرو کاملا پیوسته است (متغیر باینری و عددصحیح) نداشته باشه. اولین کاری که بهتره انجام شود، بررسی تحدب است. حالا نه لزوما با ماتریس هسین(Hessian) بلکه هر تکنیک که میتونید اعمال کنید. (مثلا جمع محدب ها محدب هست و توان 2 ها محدب هستن و ...) اگر تحدب برقرار هست با خیال راحت قیود KKT رو جایگزین کنید. باز هم میگم در این حالت هم هنوز اون فرض که عرض کردم رو باید قبول کرده باشیم. پر واضح است که اینجا هم مدل نهایی غیرخطی هست. نکته جالب اینجاست که حتی اگر مدل پیرو تحدب رو داشته باشه و KKT بزنید، باز هم هیچ تضمینی نیست مدل نهایی محدب باشه و اتفاقا معمولا عدم تحدب داره و خود این هم چالش است. حالا اگر مدل عددصحیح و غیره هم داشته باشه که چالش دو چندان هم میشه. البته در این شرایط معمولا خیلی راحت مدل نهایی رو یک Solver مثل BARON و ... داده میشه که حل کنه!!! که مطمئنا این حرکت چندان درست نیست و امکان داره لیدر بشدت در بهینگی محلی قرار بگیره (تازه اگر BARON یا BONMIN و امثالهم حل کنن مدل نهایی رو)
6- حالا اگر 5 مورد بالا را برای شما صدق نمیکنه و یا دنبال راه کارهای دیگری هستید؛ روش پیشنهادی بنده به صورت زیر هست که در کارهای مختلفی با تعامل GAMS و MATLAB و یا CPLEX و یا JAVA و CPLEX قابل پیاده سازی هست.
گام 1) جواب اولیه X برای متغیرهای تصمیم گیری لیدر در نظر گرفته شود.
گام 2) مسئله بهینه سازی پیرو (که یک مدل غیر خطی هست حل شود) با توجه به غیرخطی بودن این مدل موارد زیر پیشنهاد میشه:
* با رویکردهای حل ابتکاری و یا فراابتکاری حل شود و پاسخ نزدیک به بهینه Y (که امکان داره بهینه هم باشه) برای پیرو بدست آورده شود.
* با روش های برنامه ریزی عیرحطی (از جمله روش SQP و یا Trust Region ) پاسخ نزدیک به بهینه Y (که امکان داره بهینه هم باشه) برای پیرو بدست آورده شود.
گام 3) مدل بهینه سازی لیدر، با ثابت کردن تصمیم Y برای پیرو، حل می شود. حالا امکان داره این مدل خطی یاشه که از solverهایی مثل CPLEX و امثالهم استفاده میکنید و سریع X جدید رو برای لیدر بدست میاد. یا امکان داره خود این مدل هم غیرخطی باشه که باز هم دو روش * گام 2 پیشنهاد میشه و یا حتی solver غیرخطی موجود در GAMS و ... .
گام 4) تصمیم لیدر در گام 3 آپدیت میشه و مجددا به گام 2 برمیگردیم و این رویه تاجایی پیدا میکنه که بهبود قابل توجه ای در تابع هدف لیدر رخ نده.
در رویه فوق اگرچه تضمینی برای بهینه سراسری نیست، ولی با تغییر در پاسخ اولیه A میتونه به جواب های مختلفی همگرا شه و اگر N مرتبه در مقدار اولیه X تغییر ایجاد شود مطمئنا بهترین پاسخ آن بسیار نزدیک به بهینه است (مطمئنا هرچی N بیشتر و جواب های اولیه متمایزتر باشه، کیفیت پاسخ نهایی بهتر میشه ).
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
Media is too big
VIEW IN TELEGRAM
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
✅ خاصیت بسیار مهم ثبات یا #Stability در الگوریتمهای فراابتکاری #metaheuristic
خاصیت Stability موجب میشه که یک الگوریتم فراابتکاری در اجرهای مختلف، نوسان کمتری داشته باشه. مثلا اگر مقدار تابع هدف در اجرای اول 100 میشه، در اجرای بعدی هم با اختلاف کمی نزدیک به همین 100 باشه (خیلی خوب میشه که باز هم همون 100 بشه)
خاصیت Stability موجب میشه که یک الگوریتم فراابتکاری در اجرهای مختلف، نوسان کمتری داشته باشه. مثلا اگر مقدار تابع هدف در اجرای اول 100 میشه، در اجرای بعدی هم با اختلاف کمی نزدیک به همین 100 باشه (خیلی خوب میشه که باز هم همون 100 بشه)
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
Optimyar | آپتیمیار
anylogic-7-in-3-days.pdf
#anyLogic
یک نرمافزار افزار تخصصی و نسبتا ساده در زمینه شبیهسازی #simulation سیستمها و به طور خاص discrete events
این نرمافزار یک آلترنایتو خوب برای Arena میتونه باشه ولی جایگزین نرمافزار های شبیهسازی سیستم های علی معلولی مثل vensim نیست.
یک نرمافزار افزار تخصصی و نسبتا ساده در زمینه شبیهسازی #simulation سیستمها و به طور خاص discrete events
این نرمافزار یک آلترنایتو خوب برای Arena میتونه باشه ولی جایگزین نرمافزار های شبیهسازی سیستم های علی معلولی مثل vensim نیست.
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
کتاب Convex Optimization پروفسور Stephen Boyd از دانشگاه استنفورد
معرفی کتاب
اینجا
دانلود کتاب کامل Convex Optimization
اینجا
#Convex_Optimization #Boyd #بهینهسازی_محدب
معرفی کتاب
اینجا
دانلود کتاب کامل Convex Optimization
اینجا
#Convex_Optimization #Boyd #بهینهسازی_محدب
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
توضیح بسیار مهم در خصوص مقدار تابع هدف مدل غیرخطی در مقایسه با مقدار تابع هدف و حالت خطی سازی آن
#Linearization
#Linearization
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
✅ خطیسازی ضرب دو متغیر پیوسته در مسائل بهینهسازی
خیلیها براشون این سوال پیش میاد که اگر توی مدلشون ضرب دو متغیر رخ بده چیکار باید کنن که مدل نهایی خطی باشه.
اگر #Linearization رو سرچ کنید تقریبا تمام حالتهای خطیسازی رو توی گروه گفتیم جز حالتی که هر دو متغیر پیوسته باشند.
در این پست، با استفاده از تکنیک PLA سعی کردم بهترین شیوه برای خطیسازی ضرب دو متغیر پیوسته رو هم براتون قرار بدم.
لینک پست در لینکدین (کلیک کنید)
#Linearization #Multiplication #ضرب
ویس زیر رو هم گوش بدید 👇🏻
خیلیها براشون این سوال پیش میاد که اگر توی مدلشون ضرب دو متغیر رخ بده چیکار باید کنن که مدل نهایی خطی باشه.
اگر #Linearization رو سرچ کنید تقریبا تمام حالتهای خطیسازی رو توی گروه گفتیم جز حالتی که هر دو متغیر پیوسته باشند.
در این پست، با استفاده از تکنیک PLA سعی کردم بهترین شیوه برای خطیسازی ضرب دو متغیر پیوسته رو هم براتون قرار بدم.
لینک پست در لینکدین (کلیک کنید)
#Linearization #Multiplication #ضرب
ویس زیر رو هم گوش بدید 👇🏻
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
پست های زیر رو بشدت پیشنهاد میکنم 👇🏻
https://t.me/Operations_Research_ir/181045
https://t.me/Operations_Research_ir/180398
https://t.me/Operations_Research_ir/154982
https://t.me/Operations_Research_ir/181045
https://t.me/Operations_Research_ir/180398
https://t.me/Operations_Research_ir/154982
Telegram
𝙰𝚕𝚒 𝙿𝚊𝚙𝚒 in Optimization & Operations Research [Mathematical Models & Softwares]
#BLP
دقت در استفاده از شرایط KKT برای حل مسائل برنامهریزی دوبخشی (Bilevel Programmin)
دقت در استفاده از شرایط KKT برای حل مسائل برنامهریزی دوبخشی (Bilevel Programmin)
😍1
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
Media is too big
VIEW IN TELEGRAM
✅ چه زمانی از تکنیکهای تجزیه (Decomposition) استفاده کنیم؟
✅کدام تکنیک تجزیه را برای مسائل بهینهسازی انتخاب کنیم؟
#تجزیه_ریاضی
#Decomposition
#Lagrangean
#Benders
#Dantzig_Wolf
✅کدام تکنیک تجزیه را برای مسائل بهینهسازی انتخاب کنیم؟
#تجزیه_ریاضی
#Decomposition
#Lagrangean
#Benders
#Dantzig_Wolf
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
This media is not supported in your browser
VIEW IN TELEGRAM
تولید دادههای تصادفی با انواع توزیعهای احتمالی در GAMS
استفاده از کتابخانههای Stochastic در نرمافزار GAMS که با نام StoLib برای تولید داده تصادفی در این ویدئو توضیح داده شده است.
#Random #Data #Distribution
کد مربوطه 👇🏻👇🏻
استفاده از کتابخانههای Stochastic در نرمافزار GAMS که با نام StoLib برای تولید داده تصادفی در این ویدئو توضیح داده شده است.
#Random #Data #Distribution
کد مربوطه 👇🏻👇🏻