کلیدستان

نسخه‌ی کامل: سیمپلکس
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام ببخشید مسائل از این دست چگونه حل میشوند
به عنوان مثال
فایل ضمیمه
سلام .
کدهای متلب زیر ، ماکزیمم مقدار Z و همچنین x1 و X2 مربوط به این ماکزیمم را پیدا می کند :

کد:
clear all
close all
clc

x1=0:0.1:1000;
x1_length=length(x1);
x2=0:0.1:4;
x2_length=length(x2);

Z=0;
x1_max=0;
x2_max=0;
Z_max=0;
for nn=1:x1_length
    for mm=1:x2_length
        if (x1(nn)+x2(mm)<=10 && x1(nn)-x2(mm)<=8)
            Z=4*x1(nn)-x2(mm);
            if (Z>Z_max)
                Z_max=Z;
                x1_max=x1(nn);
                x2_max=x2(mm);
            end
        end
    end
end
x1_max
x2_max
Z_max

در واقع برای x1 و x2 بازه تعریف کردیم و سپس در این بازه ها ، نمونه هایی رو برای عبارتی که باید ماکزیمم شود به کار برده ایم تا ببینیم مقدار حاصل چقدر می شود . در هر تکرار حلقه ، اگر مقدار z بزرگتر از مقدار ماکزیمم قبلی باشد آنگاه آن را در متغیر z_max ذخیره می کنیم تا در انتهای برنامه نمایش داده شود .
دستور length برای محاسبه طول یک بردار به کار می رود . فاصله بین نمونه ها را برابر 0.1 تعیین کرده ایم که می توانید آن را تغییر دهید .
بازه ها برای x1 و x2 از روی شرایط ذکر شده تعریف می شود ، فقط حد بالای بازه x1 را نداریم که به دلخواه عدد بزرگ 1000 را انتخاب کرده ایم .
نتیجه اجرای کد متلب به صورت زیر می باشد :

کد:
x1_max =

     9


x2_max =

     1


Z_max =

    35

که در آن ، Z_max نشان دهنده مقدار ماکزیمم Z است و x1_max و x2_max ، مقادیری از x1 و x2 می باشند که Z ماکزیمم را به وجود می آورند . coffee
ممنون که جواب سوالات میدیدSmile
به نظر شما کلیه مسائل سیمپلکس با این روش حل میشوند یا متلب تابع های تعریف شده داره؟؟Blush
ببخشید میشه لطف کنیداین فایل متلب که ضمیمه کردم نگاه بندازید و نظرتونا بگید,Blush
البته سایت اجازه نداد که فایل m. بفرستمHuh و به صورت word فرستادم
mfile ها رو می تونید ابتدا zip کنید و بعد بفرستید .
دستور linprog میتونه برای حل اینگونه مسائل به کار بره . البته این دستور ، مینیمم یک عبارت (مقدار متغیر که عبارت رو مینیمم میکنه) رو پیدا میکنه و اگر قصد داشتید که از ماکزیمم استفاده کنید ، تنها کافی است که عبارت مورد نظرتان را وارونه کنید (صورت را به مخرج و مخرج را به صورت ببرید) و سپس از دستور linprog استفاده کنید ، پاسخ آن برابر مقداری از متغیر است که عبارت اصلی (وارونه نشده) را ماکزیمم میکنه . Smile
همین دستور کارتون رو راه میندازه و نیازی به اون فایل ضمیمه نیست .
ممنون
در ضمن zip هم قبل نکرد