۵۱

Model Statistics

آخرین خروجی GAMS قبل از حل مدل، Model Statistics می باشد. این بخش حجم و بزرگی یک مدل، پیچیدگی آن و میزان غیر خطی بودن آن را مشخص می کند. این بخش برای مثال کاربردی ۱ به شکل زیر می باشد:

model statistics
در این بخش از lst file،
BLOCK تعداد محدودیت ها و متغیرهای به کار رفته در کد ورودی را معین می کند. مثلاً در این مثال ما ۳ معادله (یک تابع هدف و دو محدودیت) و دو متغیر (x,z) داریم.
SINGLE تعداد محدودیت ها و متغیرهای بسط داده شده را نشان می دهد. به عنوان مثال، در مثال مورد بررسی ما، چهار متغیر z,x3,x2,x1 تحت عنوان SINGLE variable محسوب می شوند.
NON ZERO ELEMENTS تعداد ضرایب غیر صفر متغیر ها در تمامی معادلات را مشخص می کند. به عنوان مثال، ضریب x3 در محدودیت cont1(3) صفر می باشد پس جزو اجزای غیر صفر محسوب نمی شود.
طبیعتاً هر چه میزان غیرخطی بودن و پیچیده بودن یک مدل بیشتر باشد، حل آن نیز مشکل تر خواهد بود. بجز معیارهایی که مورد بحث قرار گرفت، چهار معیار دیگر نیز وجود دارند که ترکیب آنها میزان غیر خطی و پیچیدگی یک مدل را نشان می دهد. این معیارها عبارتند از:
NON LINEAR N-Z تعداد ضرایب غیر خطی موجود در معادلات معین می کند. و چون مدل مورد بررس ما یک مدل کاملاً خطی بوده و شامل ضریبی غیر خطی نیز نمی شود، این عدد صفر محاسبه شده است.
CODE LENGTH : معیار بالا تفاوتی بین میزان پیچیدگی xy و ۲^x قائل نیست. برای این منظور، GAMS معیار CODE LENGTH را برای حل این مشکل در نظر می گیرد.
DERIVATIVE POOL و CONSTANT POOL نیز معیارهای جداگانه ی قیاسیِ دیگر، برای اندازه گیری میزان غیر خطی بودن مدل می باشند.

خدمت عزیزانی که آموزش گام به گام را از ابتدا همراه با ما شروع نموده اند توصیه می شود که پس از مطالعه و مرور این صفحه، جهت ادامه مراحل آموزش به بخش Solution Report، در نوار کناری سمت راست (منوی داینامیک دسته بندی) مراجعه نمایند.

با تشکر
مدیریت سایت gamsbook.ir

ایمیل: Support@gamsbook.ir
شماره تماس: ۳۳۲۵-۴۰۵—۰۹۱۹

 

51 دیدگاه در “Model Statistics

  1. یه سوال داشتم.که خیلی تو اینترنت در موردش سرچ کردم ولی چیزی دستگیرم نشد.
    وقتی مدلمو ران میکنم ارور نداره ولی یه هشدار میده که باعث میشه مدل بهم جواب نده.
    نمیدونم چیه و چجوری میشه برطرفش کرد.
    لایسنس هم زدم ولی نشد.جلوی سالورم هم کلمهfull هستش.
    couenne:warning, tightened NLP is infeasible.
    reformolation findes model infeasible.
    برای حل مدلم از minlp استفاده کردم.
    و سالورم هم couenneبود. بقیه سالورها هم یا دمو بودن و یا minlp نداشتن.
    به انگلیسی سرچ کردم اما چیزی دستگیرم نشد.
    ممنون

  2. سلام.من یه برنامه با gams نوشتم که در اون از تابع sign استفاده کردم ولی وقتی run میکنم برنامه nonopt زیادی میده با وجود اینکه میدونم برنامم درست نوشته شده، از چند نفر پرسیدم میگن مشکل از نوع solver هستش که تابعت خوب بهینه نمیشه، همچین چیزی ممکنه؟ اگه این درسته از چه نوع solver ایی برای حل تابع sign استفاده کنم؟
    ممنون

  3. سلام، ببخشید یه سوال داشتم. من وقتی مدلم رو با نرم افزار حل میکنم جواب میده و میزنه جواب هم optimal است. اما یه پیام هم میده solution satisfies tolerances. این یعنی چی؟ یعنی آخر جواب هست یا نه؟ آخه چک میکنم متغیرهامو مثلا بعضی متغیرها باینریم همش یک شده در حالی که در رابطه با سایر متغیرا که بررسی میکنم لزومی نداره یک باشه. بعد یه مثال دیگه حل کردم به جای اون پیام که گفتم نوشته proven optimal solution. میدونین ایراد مدل من دقیقا چیه؟ یا اینکه اصن ایرادی نداره؟

    • در واقع اینا رو برام زده تو قسمت خلاصه جواب:
      MIP status(102): integer optimal, tolerance
      MODEL STATUS 8 Integer Solution
      Fixed MIP status(1): optimal
      خیلی ممنون میشم اگه منو راهنمایی کنید.
      با تشکر

  4. سلام
    من یک برنامه ای نوشتم در گمز برای بهینه سازی توان تولیدی یک ریزشبکه برای پایان نامه ام، ولی وقتی ران میکنم جوابها در کامپیوتر من اشتباه میاد ولی یکی دیگه که ران میکنه جواب را درست میده، علت چیست؟ ممنون میشم اگر جواب من رو لطف کنید و بدید که استفاده کنم.

    • سلام
      به احتمال زیاد، نسخه ای که استفاده می کنید متفاوت است و یا اینکه کانفیگ کامپیوتر شما پایین هست و جواب نهایی صحیح رو بدست نمیاره.
      موفق باشید

        • این دو کد رو به ابتدای نرم افزار اضافه کنید.

          option reslim=100000;
          option optcr=0;

          شرط توقف نرم افزار گمز هستن این دو کد. اولی شرط توقف زمانی و دومی نیز گپ رو صفر در نظر میگیره.
          موفق باشید

        • سلام
          جواب log رو بررسی کنین، شاید اونجا سر نخی داره. مثلا زمان reslim به پایان رسیده باشه که در این صورت نتونسته گمز حلش کنه و زمان بیشتری میخواد. رو یک pc دیگه امتحان کنین. با تعدادی از نسخه های ویندوز و اینا مشکل داره

  5. سلام
    برای نوشتن تابع هزینه از دید یک ریزشبکه که متصل به شبکه سراسری است؛
    باید علامت توان فروخته شده به شبکه سراسری مثبت باشه یا منفی؟ این نکته قابل ذکر است که توان فروخته شده به شبکه سراسری از دید ریزشبکه درآمد محسوب میشه .
    تشکر از نظرهایی که میدهید.

    • سلام
      اول باید ببینین که چرا دارین تابع هدف رو می نویسین؟ اینکه این تابع هدف داره مینیمم میکنه یا ماکسیمم؟ فکر میکنم همین کافی باشه که چه توانی بذارین
      از طرفی شما یه مقدار رو ادبیات موضوع مطالعه کنین. حتما موارد مشابهش رو پیدا میکنین
      موفق باشین

  6. سلام
    ببخشید من مدلم رو که توی سایز بزرگ در گمز مینویسم توی زمان خیلی کم، ۰٫۴ ثانیه حلش میکنه، در صورتی که باید طول بکشه،در سایز کوچک هم جواباش درسته، چون به صورت دستی هم همین در اومده،اما در سایز بزرگ و زمان خیلی کم جواب optimal میده ولی با این پیغام

    ۴ Terminated by solver

    واقعا ممنون میشم اگه بگید ایراد کارم کجاست؟


      • S O L V E S U M M A R Y

        MODEL test80 OBJECTIVE z
        TYPE RMIP DIRECTION MINIMIZE
        SOLVER CPLEX FROM LINE 227

        **** SOLVER STATUS 4 Terminated By Solver
        **** MODEL STATUS 1 Optimal
        **** OBJECTIVE VALUE 7555.1350
        .
        .
        .
        LP status(5): optimal with unscaled infeasibilities
        Optimal solution found, but with infeasibilities after unscaling.

        • سلام
          با همچین شرایطی برخورد نکردم. ولی به احتمال زیاد این پیام به خاطر اینه که cplex نتونسته مدل رو تا اخر حل کنه. با یک سالور دیگه ادامه بدین، تایپ مدلتون رو هم یه بار mip بذارین و یه بار هم minlp و با baron حل کنین. ببینین چی میشه این بار

        • خیلی ممنون از راهنماییتون، به mip تغییرش دادم، جواب optimal شد و پیغامی که به طور کامل یک بار حل شده اومد. ولی بازم خیلی سریع حلش کرد!!!!

  7. به نام خدا. با سلام. من میخواهم با یک محدودیت مشخص کنم که یک متغیر فعال هست یا نه؟ برای این کار از indicator constraint استفاده کردم ولی مساله این است که در این حالت باد مساله حتما MIP باشد. در صورتی که مساله من MINLP است. لطفا اگر میتوانید مرا در این زمینه راهنمایی فرمایید.
    با تشکر بسسسسیار

    • سلام
      indicator ها در gams فقط برای cplex می توانند استفاده شوند. چاره ای ندارید جز اینکه از روش هایی مانند BigM یا تغییر فرمول نویسی یا استفاده از دستوراتی نظیر ifthen و… ندارید

      • منظورتان از روش BIG M چیست؟
        من این روش ها را از کجا بیابم؟ معادله به صورت q-M*z<=0 نوشته ام که M در اینجا یک عدد است و z هم متغیر باینری است، ولی M باید به دقت تعیین شود چرا که جواب ها را تغییر میدهد.
        جایی دیدم که نوشته یود میشود از SOS ها هم استفاده کرد ولی من نفهمیدم که چگونه!؟
        خواهش میکنم اگر میتوانید مرا در این زمینه یاری کنید بسیار کلافه شده ام…
        با تشکر از زحمات شما

        • سلام
          منظورم همین بود. یعنی چی با مقدیر مختلف M تغییر میکنه؟ یه عدد خیلی بزرگ فرضش کنین، احتمالا مشکل حل میشه

        • دقیقا مشکل همینجاست.
          من این مشکل رو توی اینترنت هم سرچ کردم و گفتن که بله نمیشه هر عدد بزرگی فرضش کرد! و من هم موارد مختلفی رو امتحان کردم ولی نشد. مثلا عدد M را ۷۰۰۰ میگیرم حواب میدهد، ۷۰۰۱ میگیرم ناموجه میشود، ۷۰۰۲ میگیرم جواب دوباره تغییر میکند!!!!

        • سلام
          یه چندتا از محدودیتا رو که به هم نزدیکن اینجا بنویس. حرف شما درسته ولی اگه مسئله زمان بر باشه باعث میشه زمان حل واقعی مدل بره بالا

  8. با سلام و احترام
    قبل از هر چیز از سایت و مطالب مفیدتان تشکر می کنم. یک مسئله با روش تجزیه بندرز کدنویسی کردم.می خوام در قسمت مسئله master ، جمع yj هایی (yj متغیر تصمیم باینری است)که مقدار آن ها در این تکرار برابر یک شده است و جمع yj هایی که برابر یک نشده است مثلا مساوی ۱۰ باشد، چطور می توانم این محدودیت را اعمال کنم.
    با سپاس

  9. سلام برای پیدا کردن تعداد تکرار برای همگرایی الگوریتم در مساله بهینه سازی، چطور باید تعداد تکرار برای رسدن به جواب بهینه را در جوابها پیدا کرد. در جواب آمده
    MIP Solution: 2.213271 (372 iterations, 0 nodes)
    Final Solve: 2.213316 (87 iterations
    یعنی در ۸۷ امین تکرار بهینه شده؟ و اینکه برای کشیدن نمودار همگرایی الگوریتم باید به چه صورت رسم کرد؟

  10. با سلام و خسته نباشید و تشکر از سایت خوبتون
    من میخام ورودی یک پارامتر و یک جدول از گمز بگیرم. و خروجی دو تا متغیر نمایش بدم توی متلب … همه ی کارای لازم را انجام دادم که تو فایلای مختلف کفته شده … اما توی متلب هم چنان ارور میده که تابع wgdx رو نمیشناسه
    به نظرتون ایراد از چیه؟
    ممنون

    • سلام
      دایرکتوری گمز و متلب یکیه؟ یعنی فایلای گمز تو path متلب هستن؟ اینا رو چک کنین. و اینکه matlab رو با shortcut باز نکنین. ممکنه مشکل ایجاد کنه تو خوندن تعدادی از فایلها (البته اینو اگه با متلب کار کرده باشین مشکل ساده ای میدونین)

  11. سلام دوستان
    من یه کد نوشتم که در مورد زنجیره تامین و تعداد تامین کنندگان است. اما جوابی که باید بده رو نمیده

    totalCost .. Tcost =e= sum((i,j),(unitCost(i,j)+shipCost(i,j)+invCost(i,j))* x(i,j))+ sum(i,sum(j, F(i)));

    capacityLim(i,j) .. x(i,j) =l= (capAvg(i,j) + (capSV(i,j) * 1.28))* v(i,j);

    sumOne(j) .. sum(i, v(i,j)) =e= 1* y(j);

    supplierGoal .. sum(j,y(j))=l=6;

    باید تعداد تامین کنندگان رو کمتر از ۶ عدد بده اما برای کل ۱۰ تامین کننده بالقوه جواب رو بدست میاره. درواقع انگار دو خط آخر رو درنظر نمیگیره . حل می کنه.

  12. سلام
    با تشکر از سایت مفیدتون. من یک برنامه با گمز نوشتم که minlp هست. خطا نمیده اما جواب هم نمیده و جوابها رو به ازا هر محدودیت یک چیزی می نویسه مثلا:
    balance1(1).. x(1) =G= 2.25 ; (LHS = 0, INFES = 2.25 ****)

    balance1(2).. x(2) =G= 2.5 ; (LHS = 0, INFES = 2.5 ****)

    balance1(3).. x(3) =G= 2.5 ; (LHS = 0, INFES = 2.5 ****)

    REMAINING 5 ENTRIES SKIPPED
    به نظر شما مشکل کجاست؟

      • سلام من مدل رو خطی کردم و با RMIP حل کردم اما باز هم به ازای بعضی از محدودیت ها نا موجهه و دوباره می نویسه
        balance3(1).. y(1) =G= 5 ; (LHS = 0, INFES = 5 ****)

        balance3(2).. y(2) =G= 4 ; (LHS = 0, INFES = 4 ****)

        balance3(3).. y(3) =G= 3 ; (LHS = 0, INFES = 3 ****)
        منظورتون از display کردن چیه؟ جوابها غیر منطقیه

        • دوست عزیز شما با این بخش کاری نداشته باشین تو مرحله اول. اول وضعیت یا status سالور رو نگاه کنید، گفته که نشدنیه؟ شدنی؟ این تو پنجره process window میاد. ببینید چه پیامی داده.
          برا مشاهده کاربرد دستور display به اینجا مراجعه کنید.

  13. با سلام و تشکر از سایت خوبتون. می خواستم ببینم در پایان حل یک مسأله با گمز اگر اون مسأله جواب بهینه چندگانه داشته باشه آیا میشه متوجه شد ؟ اگر میشه، آیا میشه جواب های بهینه دیگری رو هم مشاهده کرد؟

    • سلام
      برای اینکه این جوابا رو بدست بیارین روش خواصی داره که می تونید از منابع ای که انگلیسی هست استفاده کنید.
      من دو راهش رو خدمتتون عرض میکنم. فرض کنیم مسئله شما کمینه سازی هست.
      ۱- مثلا فرض کنین یه بار مدل رو ران کردین و جواب zstar برای تابع هدف به دست اومد. حالا محدودیت z<=zstar v رو به مسئله اضافه کنین. و مجددا z رو مینیمم کنین. احتمالا جوابای جدیدی برای متغیرها تولید میشه. دقت کنین که جواب هدف تغییری نمیکنه. متغیرهای دیگه باید تغییر کنن. اگه تغییر کردن که جواب چندگانه هست. ۲- یه متغیر باینری مث x1 رو در نظر بگیرین. مثلا این تو بهینگی جوابش شده ۱٫ حالا تو ران بعدی، x1 رو روی صفر فیکس کنین و مجددا ران بگیرین. اگه نشدنی نشد، جواب چندگانه داره.

  14. سلام من بخش Solution reportرو پیدا نمیکنم و اینکه بعد از این مرحله بررسی جواب و حل مدل چی میشه من گام به گام پیش میرم و نیاز دارم به تکمیلش ممنونم

  15. سلام. من مدلم برنامه ریزی غیر خطی است و از minlp حی میکنم ولی حواب نشدنی میده.. هیچ کدوم از سالورهای دیگه هم حل نمیکنه… چکار باید بکنم؟

    • سلام
      این تازه اول کار شماست. باید مدل، کد، داده ها رو چک کنین. سعی کنین که برای مدل از مقالات پایه ی معتبر استفاده کنین. برای داده ها هم سعی کنین یا دستی یه مثال طراحی کنین، یا اینکه تو منابع داده پیدا کنین. برای کد هم که مشخصه.
      برای رفع این مشکل اولین کار اینه که شما یکی یکی محدودیت ها رو به مدل اضافه کنین و ران بگیرین. هر جا که نشدنی شد بشینین تحلیل کنین که چرا اینجوری شده.

  16. سلااااااااااااام خسته نباشید توروخداکسی هست بتونه کمکم کنه و بگه استادم از من چی میخواهد. فایل گمز را فرستادم خدمتشان پاسخ زیر را داده اند.

    مدل پیاده شده در گمز صحیح و جواب تایید است. در خروجی به شما جدول payoff یا همان جبهه جواب پارتو را میدهد. اگر شما مقدار دقیق متغیرها برای هر یک از جوابهای مذکور را نیاز دارید، کافی است در یک فایل دیگر مقدار تابع هدف را در محدودیت برابر با مقدار بدست آمده بگذارید و با حل مدل تنها جواب متغیرها را بدست آورید.شما این کار را میتوانید برای دو جواب پارتو ایجاد شده به تفکیک انجام دهید.لازم به ذکر است که شما میبایست مدل تک هدفه را اجرا کنید. و توابع هدف را با مقدار مشخص به محدودیتها ببرید…..
    میشه بفرمایید پیامشون یعنی چه؟؟یعنی باید چه کاری روی نرم افزار دقیق انجام بدهم.؟؟؟؟؟؟؟؟

      • سلام خسته نباشید. مرسی از اینکه پاسخ میدهید. بله مدل چند هدفه است از روش اپسیلون محدودیت حل نمودم…چگونه میشه ماتریس payoff را محاسبه نمود؟؟؟
        ممنون میشوم کمکم نمایید.واقعا بهش نیاز دارم…

        • سلام
          برای به دست اوردن ماتریس تبادل، اول یه هدف رو بهینه می کنین. مثلا z1 بعد هر جوابی که برای z1,z2 به دست اومد رو ثبت میکنین. تو مرحله بعد z2 رو بهینه میکنین و هر جوابی که براشون به دست اومد رو باز ثبت میکنین. بعد کمترین مقدار و بیشترین مقدار این دو رو تو یه ماتریس میریزین. این میشه ماتریس payoff
          ولی الان که شما از روش اپسیلون استفاده میکنین، از کد آماده خود سایت گمز استفاده کنین و خودش ماتریس هم حساب میکنه. منطقی تر هست. چون دستی اذیت میشین که کد کنین.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *