۱۳

Equation Listing

اولین خروجی مربوط به دستور solve، نام معادلات به همراه فرمول گسترده آنها می باشد. این بخش تحت عنوان Equation Listing در فایل lst زخیره می شود.

بخش معادلات گسترده در مثال کاربردی ۱ به صورت شکل زیر خواهد بود. همانطور که ملاحظه می کنید، تابع هدف مسئله به صورت گسترده به همراه تمامی ضرایب، متغیرها و اندیس های مختلف آورده شده است. محدودیت اول به ازای مقادیری که اندیس i (1و۲و۳) به خود می گیرد، به سه محدودیت دیگر تبدیل شده است.

equatin listing

توجه! : به یاد دارید که پس از Run کردن مدل، پنجره ی Process Window اطلاعاتی کلی در مورد مدل ارائه می دهد. یکی از این اطلاعات، تعداد محدودیت های گسترده و تعداد متغیرها می باشد. طبق شکل زیر، این مقادیر تحت عناوین row و column بیان می شوند.

number of row and columns

توجه! : در listing file، به تعداد دستورات solve که در برنامه نوشته ایم Equation Listing خواهیم داشت.
 اگر تعداد محدودیت ها زیاد باشد، و یا فرمول گسترده ی آنها طولانی باشد، GAMS تعدادی (به صورت پیش فرض سه عدد) از این محدودیت ها را برای نمونه در lst نشان می دهد و پس از آن، تنها تعداد فرمول های باقی مانده را ذکر می کند.
توجه! : در صورتی که مایلید تعداد محدودیت ها در این لیست بیشتر باشند می توانید دستور option limrow=h ; را در برنامه اضافه کنید. در اینجا (h) تعداد محدودیت های است که مایل به مشاهده ی فرمول گسترده ی آنها در این لیست هستید.

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

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

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

 

13 دیدگاه در “Equation Listing

  1. سلام وقتتون به خیر
    ببخشید من میخوام اندیس های x در یک محدودیت به صورت زیر باشد:

    c6(k).. sum((i,j)$(ord(i)ord(j) and ord(i)>2 and ord(j)>2 ),x(i,j,k))=l=10000000*sum((i,j)$(ord(i)2 ),x(i,j,k));
    ;

    اما در قسمت lst
    مقادیری که برای اندیس نشان می دهد به صورت زیر هست:
    c6(1).. x(2,3,1) + x(2,4,1) + x(3,2,1) + x(3,4,1) + x(4,2,1) + x(4,3,1) =L= 0 ;
    علت این مسئله چیست و چه طور میتوان این مشکل را مرتفع نمود؟
    خیلی ممنون

    • سلام
      سعی کنید شروط رو در دو طرف نامساوی مشابه هم بگیرید. برای این کار سعی کنید شروط رو بعد از c6(k) تعریف کنید که برای کل نامساوی اعمال بشه.
      کد نویسی هم مقداری درست تر بنویسین

  2. راستش من یه مدل اینتیجر خطی ران کردم.تمام ضرایب لاگرانژ یا همون مارجینال معادلاتم صفر شده و فقط برای تابع هدف یک شده
    به همین خاطر فکر کردم کبرای سیستم های خطی آنالیز حساسیت نداریم.
    ممکنه برام توضیح بدید اگر ایتجور نبست.ممنونتون میشم

  3. سلام خسته نباشید
    وقتی مدلمو ران میکنم تو قسمت Equation listing دوتا از محدودیتها رو نمیاره و به جاشون مینویسه None !
    لطفا راهنماییم کنید که مشکل از کجاست
    البته داده ها رو هم هنوز کامل وارد نکردم ولی فقط واسه دوتا از محدودیتها این مشکل پیش میاد!!
    این اصلا مشکل هست یا نه؟

    • سلام
      ممنون همچنین
      یعنی چی داده ها رو کامل وارد نکردم؟
      این که میزنه none یعنی همچین محدودیتی ندارین. یعنی اینکه شرط هایی که براش گذاشتین مجموعه ی تهی رو شامل میشن

      • ممنونم ازتون مشکل حل شد.
        دوتا سوال دیگه دارم اگه ممکنه راهنماییم کنید

        ۱) یه محدودین دارم به این شکل:
        cons(k,h).. sum(i,x(i,h,k))-sum(j,x(h,j,k))=e=0
        چطور میتونم شرط i مخالف j رو اعمال کنم؟

        ۲) یه متغیر باینری دارم به این صورت: x(i,j,k)
        میخوام مقدار x(‘o1′,’o2’,k) برابر صفر باشه
        خودم بصورت x.fx(‘o1′,’o2’,k)=0 تعریف کردم جواب نداد!!

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

  4. SETS
    i index of firms /i1*i27/
    k index of outputs /out1,out2/
    l index of inputs /in1,in2/
    ;
    alias(i,j);
    alias (i,iter);

    PARAMETERS
    dataC(i,l) ‘cost data’
    Ydata(i,k) ‘output data’
    x0(l) ‘inputs of firm j0’
    y0(k) ‘outputs of firm j0’
    x(l,i) ‘inputs of firm i’
    y(k,i) ‘outputs of firm i’
    n sample size
    efficiency(i) ‘efficiency of each DMU’
    allu(i,k) ‘matrix of all u values’
    allv(i,l) ‘matrix of all v values’
    ;

    $libinclude xlimport Ydata E:\output.xlsx
    $libinclude xlimport dataC E:\input.xlsx
    ;

    x(l,i) = dataC(i,l);
    y(k,i) = Ydata(i,k);
    loop(iter,
    positive variables
    v(l) ‘input weights’
    u(k) ‘output weights’
    ;

    variable
    eff ‘efficiency’
    us ‘variable returns to scale’
    ;

    equations
    objective ‘objective function: maximize efficiency’
    normalize ‘normalize input weights’
    limit(i) “limit other DMU’s efficiency”;

    objective.. eff =e= sum(k, u(k)*y0(k))+ us;

    normalize.. sum(l, v(l)*x0(l)) =e= 1;

    limit(i).. sum(k, u(k)*y(k,i))+ us =l= sum(l, v(l)*x(l,i))
    ;

    model dea /objective, normalize, limit/;

    x0(l) = x(l, iter);
    y0(k) = y(k, iter);

    solve dea using lp maximizing eff;
    abort$(dea.modelstat1) “LP was not optimal”;

    efficiency(iter) = eff.l;
    allu(iter,k)=u.l(k);
    allv(iter,l)=v.l(l);
    );

    display efficiency, u.l, v.l;

    $libinclude xldump allu E:\DEA_results.xlsx u a1:cw120
    $libinclude xldump allv E:\DEA_results.xlsx v a1:cw120
    $libinclude xldump efficiency E:\DEA_results.xlsx efficiency a1:cw120

پاسخ دهید

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