❇️ توضیح بسیار کامل و جامع در خصوص بهینهسازی و مبحث تجزیه و تحلیل داده (Optimization & Data Analytics)
تجزیه و تحلیل داده موضوع جدیدی نیست. یک مهارت میان رشتهای خوب است برگرفته از ترکیب مهارتهای ریاضی، آمار، تصمیمگیری، کامپیوتر (بخصوص AI)، الگوریتمها و غیره (که اخیرا مهارتهای مربوط به اون بیشتر مورد استفاده قرار میگیره). ما میتونیم در تمام این مهارتها متخصص باشیم و یا بخش خاصی از اون؛ و به صورت teamwork در یک بیزینس فعالیت کنیم)
اما چند نکتهای رو در مورد الگوریتمها به طور کلی Solution Method ها گفتید که جا داره اون رو کمی تکمیل/اصلاح کنم. در واقع شما این موضوعات رو صرفا برای تحقیق/آکادمیک خوندید که گاها نیازه و یا فروکش میکنه که با احترام به شما بنده مخالف هستم (البته ممکنه منظور دیگری داشتید ولی ظاهرش اینه). در واقع ما اگر داریم میگیم کاربرد هوش مصنوعی و یادگیری ماشین و تحلیل داده بیشتر شده، پس قطعا نیاز به این مهارت (توسعه Solution Method) بیشتر از پیش هم احساس میشه. در ادامه سوالاتی مطرح میکنم که خطاب به شما نیست و برای روش کردن اهمیت روشهای حل و الگوریتمهای بهینهسازی است.
موضوع علم داده (بخصوص شاخصه اصلی اون که یادگیری ماشین هست) مگر چیزی بجز بهینهسازی هست؟ الگوریتمهای AI و بخصوص ML برای اجرا آیا به روش حل نیاز ندارند؟ مدلهای تحلیل رفتار انتخابی مشتری (Customer Choice Behavior) که عمدتا بر اساس تابع Logit و Logistic Regression هست مگر بدون توسعه روشهای حل مدلهای بهینهسازی غیرخطی میتونن قابل استفاده شن؟ اصلا الگوریتمی در ML وجود دارد که مبتنی بر بهینهسازی نباشد؟ چطوری میتونیم یک خوشهبندی کارا از دادهها انجام بدیم در حالی که الگوریتمهای فراابتکاری تکاملی (Evolutionary) مورد استفاده قرار نگیره؟ آیا معماری شبکههای عصبی مصنوعی (Neural Network) برای یک Train درست و برآورد پارامترهاش نیاز به توسعه یک روش حل مناسب نداره؟ چطوری میتونیم یک مسئله Online Pricing یا Online Routing رو حل کنیم وقتی مدلهایی مثل (Stochastic Dynamic Programming) و Solution Method کارا مبتنی بر Decomposition و ... ندونیم؟
سوالات بالا رو بیان کردم که به این فکر فرو بریم که آیا یک نفر میتونه بگه من متخصص توسعه الگوریتمهای ML برای Prescriptive Analytics ( و یا حتی Predictive Analytics) هستم ولی Solution Method نمیدونم؟!؟🤔
امروزه مقالات و کتابهای بسیار زیادی هستن که فقط دارن به Solution Method ها و الگوریتمها بهینهسازی میپردازن که از اون طریق بشه همین ابزار مرتبط با علم داده رو بهبود داد. از جمله موارد زیر
[1]
[2]
[3]
پیشتر در یک پست مفصل (اینجا) به طور کامل گفتم که ما اگر میخوایم در کسبوکارها امروزی چه به عنوان کارآفرین و چه به عنوان تحلیلگیر و مشاور فعالیت داشتهباشیم و از ابزارهای علم داده استفاده کنیم بهتره که،
1- پایه ریاضیات و تحلیل خودمون رو قوی کنیم (بعضی وقتا ی مشتقگیری و یا یک انتگرالگیری یا حتی حل یک معادله غیرخطی مهمترین قسمت یک الگوریتم هوش مصنوعی میشه [4])
2- از تکنیکهای علم آمار (بخصوص Infrential Statistics) تا جایی که میتونیم خوب و حرفهای یاد بگیریم
3- مدلسازی ریاضی، الگوریتمهای بهینهسازی و بخصوص روشهای حل کارا و ترکیبی رو خوب بدونیم (این رو ندونیم صرفا داریم Black Box کار میکنیم که ممکنه روی مسئله خاص شما کارایی نداشته باشه)
4- رویکردهای مدرن تصمیمگیری مبتنی بر علم داده و برنامهریزی ریاضی (که معمولا با DDRO مطرح میشه) را تا جایی برای مسئله نیاز هست دنبال کنیم عنوان مقاله زیر خیلی جالبه:
Optimization under uncertainty in the era of big data and deep learning: When machine learning meets mathematical programming
[5]
[6]
[7]
5- تا جایی که میتونیم دانش برنامهنویسی (Programming) خودمون (بخصوص با زبانهایی مثل C++ و Python) رو بهبود بدیم و با برخی از نرمافزهای تخصصی حوزههای BA ، Optimization و ... تسلط/شناخت خوبی داشته باشیم.
در پایان این رو اضافه کنم که ما نیاز نیست همه موارد بالا رو بدونیم ولی بهتره در یک یا چند مهارت خیلی خوب متخصص باشیم و نسبت به سایر موارد شناخت داشته باشیم (باز هم این پست رو یادآوری میکنم).
@Ali_Papi_Optimization
For all 🌷
تجزیه و تحلیل داده موضوع جدیدی نیست. یک مهارت میان رشتهای خوب است برگرفته از ترکیب مهارتهای ریاضی، آمار، تصمیمگیری، کامپیوتر (بخصوص AI)، الگوریتمها و غیره (که اخیرا مهارتهای مربوط به اون بیشتر مورد استفاده قرار میگیره). ما میتونیم در تمام این مهارتها متخصص باشیم و یا بخش خاصی از اون؛ و به صورت teamwork در یک بیزینس فعالیت کنیم)
اما چند نکتهای رو در مورد الگوریتمها به طور کلی Solution Method ها گفتید که جا داره اون رو کمی تکمیل/اصلاح کنم. در واقع شما این موضوعات رو صرفا برای تحقیق/آکادمیک خوندید که گاها نیازه و یا فروکش میکنه که با احترام به شما بنده مخالف هستم (البته ممکنه منظور دیگری داشتید ولی ظاهرش اینه). در واقع ما اگر داریم میگیم کاربرد هوش مصنوعی و یادگیری ماشین و تحلیل داده بیشتر شده، پس قطعا نیاز به این مهارت (توسعه Solution Method) بیشتر از پیش هم احساس میشه. در ادامه سوالاتی مطرح میکنم که خطاب به شما نیست و برای روش کردن اهمیت روشهای حل و الگوریتمهای بهینهسازی است.
موضوع علم داده (بخصوص شاخصه اصلی اون که یادگیری ماشین هست) مگر چیزی بجز بهینهسازی هست؟ الگوریتمهای AI و بخصوص ML برای اجرا آیا به روش حل نیاز ندارند؟ مدلهای تحلیل رفتار انتخابی مشتری (Customer Choice Behavior) که عمدتا بر اساس تابع Logit و Logistic Regression هست مگر بدون توسعه روشهای حل مدلهای بهینهسازی غیرخطی میتونن قابل استفاده شن؟ اصلا الگوریتمی در ML وجود دارد که مبتنی بر بهینهسازی نباشد؟ چطوری میتونیم یک خوشهبندی کارا از دادهها انجام بدیم در حالی که الگوریتمهای فراابتکاری تکاملی (Evolutionary) مورد استفاده قرار نگیره؟ آیا معماری شبکههای عصبی مصنوعی (Neural Network) برای یک Train درست و برآورد پارامترهاش نیاز به توسعه یک روش حل مناسب نداره؟ چطوری میتونیم یک مسئله Online Pricing یا Online Routing رو حل کنیم وقتی مدلهایی مثل (Stochastic Dynamic Programming) و Solution Method کارا مبتنی بر Decomposition و ... ندونیم؟
سوالات بالا رو بیان کردم که به این فکر فرو بریم که آیا یک نفر میتونه بگه من متخصص توسعه الگوریتمهای ML برای Prescriptive Analytics ( و یا حتی Predictive Analytics) هستم ولی Solution Method نمیدونم؟!؟🤔
امروزه مقالات و کتابهای بسیار زیادی هستن که فقط دارن به Solution Method ها و الگوریتمها بهینهسازی میپردازن که از اون طریق بشه همین ابزار مرتبط با علم داده رو بهبود داد. از جمله موارد زیر
[1]
[2]
[3]
پیشتر در یک پست مفصل (اینجا) به طور کامل گفتم که ما اگر میخوایم در کسبوکارها امروزی چه به عنوان کارآفرین و چه به عنوان تحلیلگیر و مشاور فعالیت داشتهباشیم و از ابزارهای علم داده استفاده کنیم بهتره که،
1- پایه ریاضیات و تحلیل خودمون رو قوی کنیم (بعضی وقتا ی مشتقگیری و یا یک انتگرالگیری یا حتی حل یک معادله غیرخطی مهمترین قسمت یک الگوریتم هوش مصنوعی میشه [4])
2- از تکنیکهای علم آمار (بخصوص Infrential Statistics) تا جایی که میتونیم خوب و حرفهای یاد بگیریم
3- مدلسازی ریاضی، الگوریتمهای بهینهسازی و بخصوص روشهای حل کارا و ترکیبی رو خوب بدونیم (این رو ندونیم صرفا داریم Black Box کار میکنیم که ممکنه روی مسئله خاص شما کارایی نداشته باشه)
4- رویکردهای مدرن تصمیمگیری مبتنی بر علم داده و برنامهریزی ریاضی (که معمولا با DDRO مطرح میشه) را تا جایی برای مسئله نیاز هست دنبال کنیم عنوان مقاله زیر خیلی جالبه:
Optimization under uncertainty in the era of big data and deep learning: When machine learning meets mathematical programming
[5]
[6]
[7]
5- تا جایی که میتونیم دانش برنامهنویسی (Programming) خودمون (بخصوص با زبانهایی مثل C++ و Python) رو بهبود بدیم و با برخی از نرمافزهای تخصصی حوزههای BA ، Optimization و ... تسلط/شناخت خوبی داشته باشیم.
در پایان این رو اضافه کنم که ما نیاز نیست همه موارد بالا رو بدونیم ولی بهتره در یک یا چند مهارت خیلی خوب متخصص باشیم و نسبت به سایر موارد شناخت داشته باشیم (باز هم این پست رو یادآوری میکنم).
@Ali_Papi_Optimization
For all 🌷
Google Books
Optimization for Machine Learning
An up-to-date account of the interplay between optimization and machine learning, accessible to students and researchers in both communities. The interplay between optimization and machine learning is one of the most important developments in modern computational…
👍1
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
❇️ فرمولاسیون فشرده مسئله طراحی شبکه زنجیره تامین (Supply Chain Network Design Problem)
#لینکدین پست (کلیک کنید)
#لینکدین پست (کلیک کنید)
Linkedin
Ali Papi on LinkedIn: #supplychain #optimization #modeling #operationsmanagement…
❇️ Compact Optimization Model for Supply Chain Network Design Problem
In this post, I try to formulate the supply chain network design problem in a compact…
In this post, I try to formulate the supply chain network design problem in a compact…
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
Media is too big
VIEW IN TELEGRAM
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
✅ خطیسازی ضرب دو متغیر پیوسته در مسائل بهینهسازی
خیلیها براشون این سوال پیش میاد که اگر توی مدلشون ضرب دو متغیر رخ بده چیکار باید کنن که مدل نهایی خطی باشه.
اگر #Linearization رو سرچ کنید تقریبا تمام حالتهای خطیسازی رو توی گروه گفتیم جز حالتی که هر دو متغیر پیوسته باشند.
در این پست، با استفاده از تکنیک PLA سعی کردم بهترین شیوه برای خطیسازی ضرب دو متغیر پیوسته رو هم براتون قرار بدم.
لینک پست در لینکدین (کلیک کنید)
#Linearization #Multiplication #ضرب
ویس زیر رو هم گوش بدید 👇🏻
خیلیها براشون این سوال پیش میاد که اگر توی مدلشون ضرب دو متغیر رخ بده چیکار باید کنن که مدل نهایی خطی باشه.
اگر #Linearization رو سرچ کنید تقریبا تمام حالتهای خطیسازی رو توی گروه گفتیم جز حالتی که هر دو متغیر پیوسته باشند.
در این پست، با استفاده از تکنیک PLA سعی کردم بهترین شیوه برای خطیسازی ضرب دو متغیر پیوسته رو هم براتون قرار بدم.
لینک پست در لینکدین (کلیک کنید)
#Linearization #Multiplication #ضرب
ویس زیر رو هم گوش بدید 👇🏻
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
کتاب تحقیق در عملیات (Operations Research) پوروفسر Hiller و همکارشون جزء یکی از بهترین منابع هست که بیان بسیار مهندسی و خوبی دارند (کتاب ایشون 👇🏻)
Forwarded from 𝙰𝚕𝚒 𝙿𝚊𝚙𝚒
Introduction to operations research _ Hiller.pdf
20.7 MB
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