کلیدستان

نسخه‌ی کامل: تعریف متغیر باینری در متلب
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام;
من می خوام یه مدل خیلی ساده توو متلب بنویسم که چند تا محدودیت هم بصورت کلی داره مثلابصورت زیر:
min : f = 2x + 3y
x + 4y <=10
3x + 5y <= 4
x,y >= 0
در حالت کلی وقتی همین مثال ساده با الگوریتم ژنتیک حل شه ، مثلا جواب بهینه سازی شده میشه :
x = 2.3 و  y = 4.1
حالا من میخوام نرم افزار در عین حال که بهینه سازی میکنه فقط مقادیر صفر یا یک رو به متغیر ها نسبت بده یعنی مثلا جواب بشه x= 0 و y = 1
چجوری میتونم اینکار رو بکنم
ممنون
(۱۳۹۴/۰۳/۰۸, ۰۳:۲۱ ب.ظ)'مهران0020' نوشته: [ -> ]حالا من میخوام نرم افزار در عین حال که بهینه سازی میکنه فقط مقادیر صفر یا یک رو به متغیر ها نسبت بده یعنی مثلا جواب بشه x= 0 و y = 1
 

سلام.
خوب اگر تنها مقادیر 0 و 1 قابل انتخاب است، دیگر نیازی به الگوریتم ژنتیک نیست. تمامی حالت ها را تست می کنیم که در شرط ها صدق کنند، تابع f را به ازای مواردی که در شرط ها صدق کرده اند، محاسبه کرده و مینیمم مقدار آنها را به دست می آوریم که مقادیر متغیرها در آن حالت، همان جواب مسئله است.
حداقل بنده این راه حل را انتخاب خواهم کرد. چون ساده و سریع می باشد.

اگر 2 متغیر قابل انتخاب داشته باشیم، تعداد حالت ها برابر 4 است، اگر 3 متغیر باشد، برابر 8 و ...
یعنی اگر n متغیر داشته باشیم، تعداد حالت ها برابر 2 به توان n می باشد.

---------------------------------------------------------------------

در ضمن، دستور ga در متلب برای الگوریتم ژنتیک به کار می رود (برای حل مسائلی مثل مسئله شما، فقط به همان صورت عادی، نه باینری).

سلام مجدد . باید عرض کنم که این مثال رو برای فهم بهتر سوالم مطرح کردم . این مشکلی که مطرح کردم رو برای انجام پایان نامه ام نیاز دارم . تعداد حالت ها اونجا خیلی زیاده و نمیشه این کار رو به سادگی و بدون انجام مدل سازی انجام داد . 
توو نرم افزار Lingo خیلی ساده با قرار دادن متغیر در تابعی بع نام Bin@ این کار انجام میشه . یعنی نرم افزاری به قدرتمندی متلب چنین چیزی رو نداره !!!!!!!!!!!
(۱۳۹۴/۰۳/۱۰, ۰۶:۱۵ ب.ظ)مهران0020 نوشته: [ -> ]سلام مجدد . باید عرض کنم که این مثال رو برای فهم بهتر سوالم مطرح کردم . این مشکلی که مطرح کردم رو برای انجام پایان نامه ام نیاز دارم . تعداد حالت ها اونجا خیلی زیاده و نمیشه این کار رو به سادگی و بدون انجام مدل سازی انجام داد . 
توو نرم افزار Lingo خیلی ساده با قرار دادن متغیر در تابعی بع نام Bin@ این کار انجام میشه . یعنی نرم افزاری به قدرتمندی متلب چنین چیزی رو نداره !!!!!!!!!!!

سلام، منم همین سوال رو دارم، کسی هست که جواب رو بدونه؟