تمرین ۵: معادله نویسی

یکی از بزرگترین مشکلاتی که کاربران مبتدی یا نیمه حرفه ای GAMS با کد نویسی دارند، تعریف معادلاتی نظیر معادله زیر است. این معادله را چگونه تعریف می کنید؟ پاسخ را کامنت بگذارید (این تمرین را جدی بگیرید)


tDomainConstraint

ضمناً مناسب تر است که کامنت های خود، که شامل کد می باشند، را یک بار در GAMS و یا Notepad کد نویسی کرده و سپس به عنوان کامنت ارسال کنید.

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

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

 

21 دیدگاه

  1. مهسا


    set t /1,2,3,T/ 1

    2 ‘T همان آخرین عددی است که در اینجا نوشته می شود ‘

    eq(t) .. X(t)=l=sum(t$(ord(t)<T), Y(t)); 3

    1. محمودی

      سلام
      این جواب صحیح نیست. مقداری بیشتر فکر کنید. دقت کنید:
      در گمز هر اسم باید یکه باشد. مثلا در تعریف set اشتباه کردید.
      در تعریف set همه اجزا باید واضح باشند. یا به نوعی تعریف اولیه داشته باشند.
      و اینکه از دستور alias استفاده کنید.
      موفق باشید

  2. صبا خسروی

    set t /1*10/ ;
    alias (t,tp);
    variables
    x(t)
    y(t);
    equations
    eq(t)
    ;
    eq(t)..x(t)=l=sum(tp $(ord(tp) gt ord(t)) ,y(tp));

    1. محمودی

      سلام
      بله جوابتون کاملا درسته، فقط باید gt رو تبدیل به ge بکنین
      ممنون از زحمات شما

        1. محمودی

          یه فرضه. شما میتونین بزرگتر یا کوچیکتر هم بگیرین.

  3. داود

    سلام دوستان .
    ببخشید ی سوال داشتم . محدودیت زیر رو چطوری باید نوشت.
    X(i,j)- X(j,i)

  4. محمد

    راجع به نسون دادن صفر سوال داشتم.
    وقتی خروجی رو تو اکسل ذخیره میکنم فقط اعضای غیر صفر ظاهر میشن راهی هست صفر رو بشه نشون داد؟
    حتی توی فایل gdx هم صفر ظاهر نمیشه

    1. محمودی

      سلام
      ببینین این موارد ساده رو ذهنتون رو درگیرش نکنین. همیشه دنبال ساده ترین راه باشین.
      مثلا میتونین خروجی رو تو یه شیت ذخیره کنین، و تو یه شیت دیگه بگین این سلول ها مساوی هستن با سلولهای شیت قبلی. صفرم بهتون نشون میده.

  5. عزیز

    سلام این مجموعه رو چجوری تو زبان گمز مینویسن؟
    t عضو{ Ut تا t}

  6. مهدی

    عرض سلام و ادب و همچنین عرض تبریک بابت سایت خیلی خوبتون.
    مسئله cvrp (با ۲ تا ماشین و ۵ تا مشتری) رو میخوام کد نویسی کنم ولی به مشکل خوردم
    ۱- set رو چطوری تعریف کنم با i و (alias(i,j,k ولی جدول هزینه ها رو چطوری بنویسم
    ۲- فرمول miller رو چطور بنویسم
    لطف میکنید راهنمایی کنید ممنون میشم

    1. محمودی

      سلام
      سوالتون رو واضح مطرح بفرمایین لطفا. مچکرم

  7. هادی

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

  8. هادی

    با سلام مجدد
    در یک معادله ما دو تا اندیس داریم که زیرمجموعه یک مجموعه هستن اما با چند اختلاف نسبت به هم، بعنوان مثال یکی از آنها از ۰ تا ۴ هست و دیگری از ۱ تا ۵ (در خصوص اعضای فرضی (dummy)) حالا معادله ما فقط برای حالتهایی که این دو با هم نامساوی هستند مفهوم دارد، چگونه باید این شرط را برقرار کرد.
    بنده خودم با یک روشی مشکل را حل کردم اما میخاستم ببینم آیا دستوری در گمز هست که عضو یک مجموعه را بازخوانی بکند (Ord فقط ترتیب عضو را می خواند)
    تشکر فراوان

    1. محمودی

      سلام
      دقت کتید که ord(0 برابر با ۱ هست تو اندیس اول یا i
      و ord(1 در اندیس دوم یا j برابر با ۱ هست
      وقتی که شرط میذارین به این نکته دقت کنین.

      eq1(i,j)$(ord(i) ne ord(j)+1(
      

      ord، card, uel,pos و… رو اصطلاحا set attributes می نامند. خواستین در موردشون بخونین. تو گوگل سرچ بزنین gams set attributes.

دیدگاهی دارید؟