۱۶۴

دستور Table

جداول یا Tables دستوراتی هستند که برای ورود داده هایی که دارای دو یا بیش از دو بعد هستند به کار می رود. این جداول می توانند دو بعدی یا چند بعد (حتی بیشتر از ۲۰ تا) باشند. فرم کلی یک جدول دو بعدی به قرار زیر است.

Table-Iden

 توجه: جدول ها قالب دستوری مشخصی دارند. و نمی توان زیاد در آن تغییر ایجاد کرد. به عنوان مثال، نمی¬توان بین دو عضو ۱۱ و ۱۲ فاصله ای معادل ۱۰ space قرار داد در حالی که این فاصله برای ۱۲ و ۲۲، ۵ space باشد. پس باید ستون ها کاملا موازی با هم تایپ شوند. در غیر اینصورت نرم افزار Error خواهد داد.
 دقت کنید که پارامترها و مجموعه هایی که در جداول به کار گرفته می شوند قبلا تعرف شده باشند. در غیر این صورت به Error منجر خواهد شد.

مثال¬های زیر نمونه هایی از جدول دو بعدی هستند.
Tables-2D

نمونه زیر نیز می تواند کاربرد جالبی از Table باشد.
Tables-Multi

در این مثال به نظر می رسد اعضای جدول ۴ رقم باشند. درحالی که اگر بیشتر دقت کنیم، جدول شامل ۲۸ عدد می باشد! که ۲ تای آنها مقدار ۱۰ ، ۶ تای آنها مقدار ۲۰ ، ۵ تای آنها مقدار ۱۸ و ۱۵ تای آنها مقدار ۱۵ را دارند. در صورت عدم درک این مطلب بهتر است بارها و بارها به دستور دقت کنید.

جداول فقط مختص مختصات دو بعدی نیستند، بلکه می توان آنها را به صورت چند بعدی نیز تعریف نمود.

Tables-Multi-dim

 در این شکل Set ها جزو کد دستوری مربوط به Table نیستند و صرفا جهت درک بیشتر موضوع آورده شده اند.
 در اینجا نیز باید قالب کلی دستوری جداول رعایت شود.
 به علامت دات (.) بین اندیس ها دقت کنید.
 مهم نیست که چند بعد داریم، فقط باید ترتیب آوردن این ابعاد را رعایت کنیم. مثلا در مثال سوم (Ex3) چون جدول به صورت I,j,k,l,m تعریف شده است پس باید در ستون های جدول نیز این ترتیب (مثلا i1.j1.k1.l1.m2) رعایت شود. دقت کنید که جای ابعاد را اشتباهی وارد نکنید.
 همانطور که در مثال آخر ملاحظه می شود، اگر تعداد ابعاد و شیوه ترکیب آنها زیاد باشد طوری که تعداد ستون ها زیاد شوند، می توان با علامت (+) مانند شکل بالا تعداد ستون ها را کاهش داد. مهم آنست که بتوان داده ها را به نرم افزار فهماند.

و بلاخره ادامه ی مثال کاربردی ۱:
در صورتی که آموزش گام به گام را از ابتدا پیگیری نموده اید. ملاحظه می فرمایید که در این مثال سه بردار a و b و c موجودند. بردارهای b و c را توسط دستور parameter تعریف نمودیم. بردار a که خود یک ماتریس دو بعدی است نیز به صورت Table باید تعریف نماییم. شکل زیر نحوه ی تعریف داده ی a را به معرض نمایش می گذارد:

Example1-Table

بحث در مورد طراحی جدول ها نیز به اتمام رسید. لطفا در صورت هر گونه نظری آن را با ما در میان بگذارید.

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

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

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

 

164 دیدگاه در “دستور Table

  1. سلام،

    ممنونم از سایتتون. به نظرم این انتقادات به سایتتون وارد هست:

    ۱٫ یکم کیفیت عکس‌ها پایین هست.
    ۲٫ قالب یکم مشکل داره. چون نیمی از فضای مونیتور بدون استفاده مونده!
    ۳٫ بهتره که حتما یه لینک به مطلب بعدی و یه لینک هم به مطلب قبلی داده باشید. مثل سایت آموزشی نرم افزار R :
    http://www.r-tutor.com/
    4. ای کاش یه قسمتی هم ایجاد می کردید به نام: “درباره‌ی ما”. اونجا میشه کل سایت را در چند جمله معرفی کرد.
    ۵٫ اگه آمار بازدیدکننده‌ها را هم نشون می‌دادید، به اعتبار سایتتون افزوده می‌شد. اینکه من بدونم روزی ۱۰۰ نفر از این سایت بازدید می‌کنند، باعث میشه که اعتماد بیشتری به سایتتون پیدا بکنم.
    ۶٫ اگه بتونید یه قسمتی به نام “کتاب‌شناسی” هم ایجاد کنید، عالی میشه. منظورم اینه که کتاب‌هایی که قبلا خوندید و به نظرتون جالب بوده‌اند را در اینجا معرفی کنید. اینجوری مخاطب اعتماد بیشتری به نویسنده‌ها خواهد داشت چون می‌دونه که نویسنده حداقل کتاب‌هایی که معرفی کرده را خونده.
    ۷٫ به نظر من خیلی زود شروع کردید به تبلیغ برای سایتتون. این سایت تقریبا هیچ چیزی نداره! اول برای سایت محتوا تهیه کنید بعدش شروع کنید به تبلیغ.
    ۸٫ همونطور که می دونید، وبلاگ نویس های حرفه ای، اول یه سری موضوع تعریف می کنند و بعدش شروع می کنند به نوشتن در مورد هر موضوعی. اگه این روش را می پسندید، من این موضوعات را بهتون پیشنهاد می کنم:
    ۸٫۱٫ Gams چیست؟
    ۸٫۲٫ چرا اصلا باید Gams را یاد بگیرم؟
    ۸٫۳ بازار کار برای این رشته چقدر هست؟ همین الان چند تا شغل توی سایت های کاریابی میشه براش پیدا کرد؟
    ۸٫۴ به زبان انگلیسی چه کتاب هایی براش پیدا میشه؟
    ۸٫۵ چه سایت های معتبری براش وجود داره؟
    ۸٫۶ آموزش گام به گام نرم افزار Gams

    احتمال بالایی میدم که قصد شما از راه اندازی این وبسایت، داشتن درآمد هست. که به خودی خودش هیچ عیبی نداره. اما اگه احیانا به هر دلیلی، دیدید که این سایت درآمدزا نشد، می‌خواهید چیکار کنید؟ وبسایت را می بندید؟

    چون گفته بودید که نظر بدیم حتما، نظرم را نوشتم.

    ایمیلم کار نمی کنه. احتمالا نظری ازتون نخواهم خوند.

    روز خوش

    • با سلام
      واقعا واقعا واقعا ازتون ممنونم که این همه کامنت بسیار مفید و کاربردی رو برامون دادین
      فرمایشاتون کاملا درسته
      ما داریم رو همه اینا کار میکنیم
      مشکل اونجاست که یکم واسه تبلیغ زود شروع کردیم
      واقعا ممنونم ازتون

  2. سلام ، وقتتون بخیر
    من میخواستم جداول سه بعدی (۳ * ۵ * ۱۵) رو توی گمز وارد کنم ، باید مثل چهارمین تصویر آموزشی این بخش ، تک تک درایه های جدول و مکان درایه ها رو تو گمز وارد کنم؟
    توی لینگو هم میتونم به این روش جدول سه بعدی وارد کنم؟
    مرسی

    با آرزوی موفقیت

    • سلام
      مرسی
      شما تو گمز دو تا راه دارین واسه وارد کردن داده های سه بعدی
      ۱٫ روشی که تو همین تاپیک توضیح داده شده
      ۲٫ روش فراخوانی داده ها از نرم افزارهای دیگر، مثل اکسل، متلب، اکسس و…
      روش دوم رو من مناسبتر میبینم واسه کار شما. شما فراخوانی از اکسل رو یاد بگیرین کافیه. به عنوان راهنمایی شما بزنین interface between gams and excel یا xls2gms
      شادکام باشید

  3. با سلام و خسته نباشید و تشکر از سایت خوبتان
    سوالم این است که در قسمت جداول در صورتی که ما دو تا پارامتر متفاوت داشته باشیم یعنی دو تا شناسه متفاوت برای دو پارامتر داشته باشیم ولی این پارامترها دارای دامنه یکسان یعنی عناصر دامنه دو پارامتر یا همان برچسب ها یکسان باشند ولی مقادیر عناصر این دو پارامتر متفاوت باشند آیا نوشتن آنها در دو جدول متفاوت اشکال دارد یا خیر. متشکرم

  4. با سلام و تشکر فراوان از پاسخگویتان
    سوالم به این شکل می باشد که اگر ما در قسمت جداول دو مجموعه (X (I , j و (y (I , j را داشته باشیم باتوجه به یکسان بودن دامنه این دو مجموعه، نوشتن ماتریس این دو مجموعه به دلیل اینکه دامنه آنها یکسان است آیا در گمز باعث ایجاد خطا می گردد یا خیر. یادآوری می شود که مقادیر متناظر با ابن دو دامنه متفاوت می باشد. بسیار متشکرم.

  5. با سلام و عرض ادب
    از راهنمایتان بسیار سپاسگذارم . از سایت خوبتان کمال تشکر و قدردانی را دارم. سایت شما اولین سایتی است که با این سرعت پاسخگو است. متشکرم

  6. با سلام و خسته نباشید.
    من دو جدول سه بعدی رو تعریف و مقدار دهی کردم (T(I,A,B، و ( T(J,C,Dکه I اندیس جز، Aوضعیت اولیه و Bوضعیت نهایی هستش و از آنجایی که تعداد وضعیت های ممکن برای اجزا متفاوت هست دوتا جدول در نظر گرفتم و تعداد کل اجزا n=i+j هست.یک پارامتر هم دارم ( Y(N که وضعیت اولیه رو نشون میده و یک متغیر ( x(n که وضعیت نهایی هست. حالا در تعریف معادلات لازمه یه دستوری بنویسم که با توجه به این وضعیت های اولیه و نهایی یعنی پارامتر و متغیر از آن جداول مقدار متناظر رو فراخوانی کنه؟ خیلی ممنون میشم اگه راهنماییم کنید.

    • سلام
      اگه منظورتون اینه که وقتی مثلا تو محدودیت ها اگر x رو داشته باشین باید مقداری متناظر با T ها داشته باشه، باید تو این گونه محدودیت ها از دستور ord استفاده کنید. مثلا کد زیر نشون میده که وقتی نوع وضعیت اولیه برابر با B باشه، بین x و y و T همچین رابطه ای داریم. (در ضمن شما وقتی یک بار t تعریف کردید دومی رو باید t1 مثلا نامگذاری کنید)

      const(i,a,b,n)$(ord(i) = ord(n) ).. x(n)=e=y(y)+t(i,a,b);

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

      set i/I01*I10,J01*j05/
      A/A01*A05,C01*C12/
      B/B01*B06,D01*D09/
      ;
      Table T(i,a,b)

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

      • مرسی از اینکه اینقدر زود جواب دادین.ولی منظور منو درست متوجه نشدین. من مجموعه اصلی n رو با مثلا ۷ عضو به دو تا زیرمجموعه ۳ و ۴ عضوی i,j توی اندیسام تفکیک کردم که وضعیت های اولیه و نهایی هر کدوم رو که متفاوت هستش به ترتیب با a,b و c,d توی اندیسا معرفی کردم. حالا دوتا جدول همانطور که گفتم تعریف شد. حالا در معادلات با توجه به اینکه هر عضو فقط در یک وضعیت میتونه باشه احتمال اون وضعیت رو میخوام در نظر بگیره که این وضعیت اولیه با پارامتر تعریف شده برای همه n عضو و وضعیت نهاییم که متغیره. پس باید دستورم طوری بیان بشه که برای هرعضوبا توجه به پارامتر و متغیر مقدار آنرو از جدول در معادله در نظر بگیره.در حالی من جداول رو با i,a,b مثلا تعریف کردم نه n,y,x و اینکه نمیتونم در قسمت اندیسا ((n,y(n),x(n) تعریف کنم. پیشاپیش از وقتی که صرف می کنیدو جواب میدین ممنون

        • سلام
          ممنون
          خب شما تو محدودیتها یا معادلاتی که دارین باید از دستورات شرطی استفاده کنین. مثلا بگین که اگر n برابر با i باشد، آنگاه این معادله را حل کن و یه معادله دیگه هم بذارین مشابهش و بگین که اگر n مساوی با j باشه این معادله رو. از همون دستور شرطی دلار و ord که تو کامنت قبلی عرض کردم استفاده کنین. اگه نتونستید، معادلات ریاضی رو برام بفرستین تا بگم بهتون
          موفق باشین

  7. با سلام .
    مشکلی که برای منم پیش اومده مشابه مسئله ای بیا شده که اینطور بیانش می کنم.
    من n تا عنصر تعریف کردم که به دسته i و j تقسیمشون کردم بصورت (i(n و (j(n که هر کدوم دو وضعیت اولیه و نهایی دارن که برای هر دسته تعداد وضعیت اولیه و نهایی یکسان هست که چون تعداد وضعیت ها برای دو دسته متفاوت هست من مقادیر احتمالی که هر عنصر ممکنه با چه احتمالی توی اون وضعیت باشه رو با جداول جدای تعریف کردم که وضعیت اولیه و نهایی رو برای هر کدوم با اندیس مثلا a,b و c,d بصورت (p(i,a,b و (pp(j,c,d قرار دادم. وضعیت اولیه ای که کل n عنصر در شروع مسیر داشتن پارامتره که با (s(n تعریف شده و وضعیت نهایی متغیره که با (z(n تعریف شد. حالا در معادله لازمه کدی بنویسم که با توجه به عنصر و وضعیت اولیه که پارامتره وضعیت نهایی که متغیره مقدار متناظرش رو از جداولی که تعریف کردم فراخوانی کنه یعنی بصورت ( (p(n,s,z) باشه که البته سs,z اندیس n دارن . چون اگه همون عنوان جدول با اندیسارو با sum استفاده کنم اولا پیغام خطا میده که اندیس معادله n با اندیسای تعریف شده تعریف نشده و در ضمن این تعریف تمام مقادیر هر عنصر رو در هر وضعیت با هم جمع میکنه نه فقط مقدار مورد نظر رو؟
    امیدوارم متوجه شده باشید.
    خیلی خیلی ممنون

    • سلام
      شما یه لطفی بکنید، اینکه تمامی اندیس ها چه مقادیری رو میتونن بگیرن، وضعیت ها چین، s(n) و z(n) چه مقداری میگیرن و نهایتا پارامتر p چه مقادیری باید بگیره رو برام مشخص کنین.
      فقط یه چیزی عرض کنم، اینکه شاید بهتر باشه که اون جدول آخری (p(n,s,z) شاید بهتر باشه به صورت psz(n) تعریف بشه.
      منتظر جوابتون هستم

  8. سلام. شب خوش.
    اندیس n اسم سه عنصر( i )و دو عنصر (j)، وضعیت a,bاعداد۱تا۴ بیانگر۴ وضعیت، وضعیت c,d هرکدوم ۵ وضعیت که وضعیتها اتصال، قطعی موقت و .. هستن. بعد جداول p هم احتمال اینکه مثلا عنصر اول با وضعیت اولیه قطعی در وضعیت نهایی اتصال باشه رو نشون میده. جدا از اینا وضعیت اولیه مسیر با پارامتر y بصورت اعدادی که متناظر وضعیت همه عناصره مشخصه و وضعیت نهاییم که متغیره. حالا در معادله باید دستوری داشته باشم که با توجه به جدول و y و x مقدار احتمال متناظرش رو جایگزین کنه. امیدوارم متوجه شده باشید.
    مرسی

  9. با سلام وخسته نباشید.
    من میخوام یه جدول ۳*۲ مثل زیر رو از طریق اکسل وارد گمز کنم.
    NEW-YORK CHICAGO TOPEKA
    SEATTLE 2.5 1.7 1.8
    SAN-DIEGO 2.5 1.8 1.4
    لطفا ساده ترین فرمول رو توضیح بدبد.. ممنون…

    • سلام
      از تکنولوژی GDX استفاده کنید. یه سرچ ساده بزنید تو گوگل خیلی سادست. بهتره مطالب زیادی بخونید کلی یاد میگیرید. بزنید. xls2gms
      موفق باشید

  10. با سلام و روز بخیر.
    من یک جدول سه بعدی رو با مقادیر متناظرش( t(n,a,b تعریف کردم . حالا لازمه که مقدار ماکزیمم این جدول رو پیدا کنم و از آنجایی که میخوام از solver baron استفاده کنم امکان استفاده از دستور smax وجود نداره، لطف می کنید منو برای نوشتن کدی که این کا رو انجام بده راهنمایی کنید.
    پیشاپیش از جوابدهی خوبتون ممنون

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

        • مقداری منو گیج کردین، اینجوری که من فهمیدم، ظاهرا t یک پارامتره که ابتدا فقط به عنوان پارامتر تعریف میشه ولی مقدار دهی نمیشه. و وقتی مدل حل شد، مقدار t محاسبه میشه. بعدش دیگه نباید مشکلی داشته باشه با تابع smax که

        • سلام.
          ببینید t رو من بصورت یک جدول سه بعدی با مقادیرش تعریف کردم. حالا توی محدودیت هام لازمه از بین مقادیر این جدول مقدار ماکزیمم رو انتخاب کنم تا با توجه به اون یک هزینه جریمه رو در محدودیت هزینم در نظر بگیرم و چون مدلم غیر خطیه و میخوام از baron استفاده کنم نمیتونم از دستور smax استفاده کنم. امیدوارم توضیحم واضح بوده باشه و بتونید بهم کمک کنید.
          مرسی

        • سلام
          شما قبل از اینکه مدل رو حل کنید
          قبل از equation و بعد تعریف پارامترتون از smax استفاده کنین حله.
          واسه اینکه ببینین که عمل کرده یا نه، display کنین بعدش

        • سلام و ممنون از اینکه جواب دادین.
          مشکل اینجاست که مقادیر این جدول باید اولش در یک متغیر باینری که از معادلات قبلی به دست میاد ضرب بشه تا مشخص بشه که اون زمان فعال هست یا نه و بعدش ماکزیمم اون جدول حساب بشه و بنابراین باید در معادلات تعریف بشه.
          مرسی از راهناییهاتون

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

  12. با سلام
    ممنون از سایت خوبتون خیلی مفید و کاربردی است من یک سوال داشتم
    من یک تابع به این فرم دارم ولی نمی دانم dj و fi در کجا بایستی مقادیرش را وارد کنم اگه امکانش هست در نوشتن کد ان من را راهنمایی وکمک کنید
    Min ∑_i▒〖fi yi〗+ ∑_i▒∑_j▒〖xij*dj*cij〗
    St.
    ∑_j▒〖dj*xij≤si*yi〗
    ∑_i▒〖xij=1〗
    ۰<= xij<=yi
    با سپاس

      • با سلام و تشکر از پاسخ گویی شما
        میبخشید متغیر xij<=yi را در کجا و چه طور تعریف کنم
        از طرفی من داده های زیادی دارم و حوصله اینکه با دست وارد کنم ندارم و در قسمت tableاز دستور xls2gmsاستفاده کردم ولی ان را نمی تواند بخواند چه باید کرد
        با سپاس

        • سلام
          سوال اول: شما ابتدا باید هر دو متغیر را تعریف کنید. کلیک کنید
          سپس در معادلات و محدودیت ها این معادله ای که نوشتید رو اعمال کنید. کلیک کنید
          سوال دوم: شما باید xls2gams رو اد بگیرین. این روش هست، نه یک کد!

  13. سلام
    خانم ویونا، پس اگه مدل حل شد و سپس پارامتر t در متغیر باینری ضرب شد، باید محاسبه رو انجام بدید.
    بعد از دستور solve شما باید t رو در متغیر ضرب کنین.
    مثلا x(j) رو به صورت زیر میتونین ضرب کنین. در ضمن. x.l یعنی مقدار بهینه x بعد از حل مدل.

    solve ....... somthing;
    u=t*x.l(j);

    به این صورت مقدار U بدست میاد. و بعدش مقدار ماکس رو میتونین بدست بیارین.
    ولی اگه شما همزمان با حل خود محدودیت ها باید این کار رو انجام بدین، گمز این کار رو براتون انجام نمیده. پس باید مقداری فکر کنین و یه معادله ای (اضافی-صرفاً جهت انجام محاسبات) بنویسین که با حل مدل، خود به خود مقدار ماکس براتون محاسبه بشه.

  14. سلام. وقتتون بخیر. من یک جدول ۴ بعدی توی مدلم تعریف کردم به این صورت که هرکدوم از متغیرها شامل مقادیر ۱و۲ هستن . به این صورت:sets
    i /1*2/
    j /1*2/
    k /1*2/
    s /1*2/;
    و جدولمم اینجوریه
    table R(i,j,k,s) four dimentional
    1 2
    1.1.1 0.8 0.82
    2.1.1 0.85 0.7
    1.2.1 0.9 0.75
    1.1.2 0.7 0.78
    2.2.1 0.88 0.81
    2.2.2 0.77 0.86
    1.2.2 0.67 0.82
    2.1.2 0.81 0.78;
    اما مدلم نشدنی هست . و وقتی محدودیت ها رو چک کردم. دیدم که در محدودیت مربوط به این جدول به جای مقادیر بالا(مثلا۰٫۸۱) گمز همش عدد صفر رو قرار داده!!دلیلش چیه؟جدول رو اشتباه تعریف کردم؟

    • شما بعد از تعریف این پارامتر، (بعد اعداد جدول) از دستور display استفاده کنید. مشاهده می کنین که جدول درست یا غلط خونده شده.

      • سلام. میشه بگین دستور display رو چجوری بکار ببرم؟چون زدم display table R(X.I.J.K) چیزی نشون نداد و ارور داد. راستی محدودیتی که این جدول رو درست نمیخونه شامل تابع ضرب هستش. به نظر شما به خاطر این تابع اینجوری نشده؟
        eq2(i)..prod((j,k,s),x(i,j,k,s)*R(i,j,k,s))=g=0.7;

  15. سلام
    ممنونم از آموزشتون
    من می خوام بدونم آیا از همین روش هم میشه در لینگو برای تعریف آرایه سه بعدی استفاده کرد؟
    مثلا یک متغیر ۴*۳*۳ را اگه بخوام مقدار دهی کنم از همین روش امکان پذیر هست؟
    لطفا راهنمایی کنین خیلی ضروریه
    ممنونم

  16. ممنونم از آموزشتون
    من می خوام بدونم آیا از همین روش هم میشه در لینگو برای تعریف آرایه سه بعدی استفاده کرد؟
    مثلا یک متغیر ۴*۳*۳ را اگه بخوام مقدار دهی کنم از همین روش امکان پذیر هست؟
    لطفا راهنمایی کنین خیلی ضروریه
    ممنونم

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

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

  18. سلام عزیزان
    یه سوال دارم
    تابع max در گمز چه حکمی داره…؟!
    من یه مدل دارم که یکی از محدودیت های اون به صورت max یه مقدار نوشته شده ولی موقع حل ، گمز به اون محدودیت ایراد مگیره….
    لطفا میشه یکم راجبه ایم توضیح بدین برام…
    ممنونم از سایت خوبتون….

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

  19. با سلام.
    ابتدا تشکر میکنم از اموزش مفیدتون.من یه مدلی دارم که در حجم کوچک کد نویسی کردم و هیچ اروری نداشت.وقتی مسئله واقعی رو نوشتم جدولم ۴۹ ستون داره که در یک سطر نمیشه نوشتش و نقطه تکین هم انتهای ها سطر گذاشتم و ادامش رو در سطر بع نوشتم ولی ارور میده.ارورش روی اولی عنصر سطر دوم جدوله.این جدولای طولانی رو چطور باید نوشت؟
    با تشکر فراوان

    • سلام
      فراخوانی از اکسل روش معمولی هست که برای این داده ها استفاده میشه. فعلا تاپیک مربوطه رو نذاشتیم. میذاریم به زودی
      شما به این لینک مراجعه کنید. مقداری مطالعه می تونه مفید باشه.
      کلیک کنید

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

  21. با سلام
    ممنون از سایت خوبتون
    سوالهایی داشتم از خدمتتون
    اولا اینکه آیا برای square deviation دستوری در گمز در نظر گرفته شده؟
    سوال دوم اینکه اگه بخوام ستون یک جدول رو جمع بزنم از چه روشی بهتره؟ حلقه for یا روش راحت دیگری هست؟ لطفا داهنمایی کنین. ممنون

    • سلام
      خواهش میکنم.
      سوال اولتون فک نکنم داشته باشه. شما فرمولش رو بنویسین مشکلی ایجاد نمیشه.
      سوال دوم از دستور loop استفاده کنین.
      موفق باشین

  22. سلام و خسته نباشید از سایت خوبتون
    تو قسمت table من جدولی تعریف کردم که به صورت زیر است:

    m(g,k)
    A B AB O
    A 0 0 1 0
    B 0 0 1 0
    AB 0 0 0 0
    O 1 1 1 0;

    برای این جدول برنامه ارور ۳۱۸ و ۱۸۴ میدهد.. نمیفهمم مشکل کار کجاست؟
    سطرها و ستون های جدول عناوین یکسان دارند اما در دو مجموعه مجزا از هم در قسمت اندیس هامعرفی شده اند.
    با تشکر از لطف شما

  23. سلام روزتون بخیر.ى سؤال دارم از حضورتون اگر راهنماییم کنید ممنونتون میشم
    من ى متغیر با ٣ اندیس دارم بصورت (d(i,t,w که تقاضاى مشترى i در دوره t تحت سناریو w رو نشون میده و مشکل اینه که این w ها بسته به t که مثلا اگه t سه باشه سه تا مؤلفه داره پس ینى مجموعه w مثلا مى تونه ۵ تا عضو(۵ تا سناریو) داشته باشه که هر کدوم ٣ مؤلفه دارن ضمناً اینها داده هستن که باید وارد کنم من موندم مقادیر اینا رو چجورى وارد کنم مثلا براى تعریف مجموعه w چنین دستورى نوشتم که نمى دونم درسته یا نه و اینکه اون مقادیر d رو نمى دونم چطور وارد کنم اگر میشه کمکم کنید

    /set p/a,b,c
    /q/d,e,f
    /l/g,h,m
    /w(p,q,l) /a.d.g,b.e.h,c.f.m

    • سلام
      اولا شما تو مجموعه q یک مولفه دارین به اسم d که نباید با اسم تقاضاتون یکی باشه و گمز خطا میده.
      شما باید تعداد اندیساتون رو بیشتر کنین. مثلا بزنین d(i,t,p,q,l) اینجوری با خیال راحت میتونین مقدار دهی کنین. مثلا بگین که d(i,3,b,e,h) برابر با ۱۰ هست. همینجوری با یه table می تونین مقدار بدین.
      نکته ای که مطرحه اینه که وقتی تو محدودیت این d رو استفاده میکنین باید این مفهومی که گفتین رو تو محدودیت روحش وجود داشته باشه! مقداری باید دقت کنین. (میتونین از w هم استفاده کنین، مثلا تو محدودیت بگین که این محدودیت که شامل d هست به شرط w برقراره. یه همچین چیزی)
      و اینکه اگه d متغیره، کافیه همونجوری که گفتم تعریفش کنین ولی تو محدودیت ها از بگین که به شرط w
      موفق باشین

  24. سلام
    یه مشکلی داشتم میخواستم راهنماییم کنید اگر ممکنه.
    اگر یک مجموعه k به صورت alias داشته باشیم مثلا alias( k.m)
    و یک زیر مجموعه از k مثلا p(k).
    حالا میخوایم یه شرط تو یک رابطه بنویسیم که m و k رو از p انتحاب کنه مثلا
    رابطه زیر برای تمام i و j برقرار و روی m و k عملیات صورت بگیره که از p انتخاب میشن b(i,j)=smin((k,m) , c(i,k)+c(k,m)+c(m,j)) mamnoon
    G

    • سلام
      شما یه مجموعه دیگه هم مثل p1 تعریف کنین که alias با p باشه.
      بعد تو این تابعی که فرمودین به جای m و k از p و p1 استفاده کنین

  25. سلام خسته نباشید.
    من در مدلم یه معادله ای دارم که از ضرب دو ماتریس(a,b) تشکیل شده که در معادله ی بعدی،از درایه های ماتریس حاصل (c) باید استفاده کنم.نحوه ادرس دهی به درایه ماتریس c چطوری هست؟با چه دستوری ؟
    ضرب دو ماتریس رو چطوری باید بنویسم؟
    و اینکه ماتریس b را باید به این صورت تعریف کنم که هر درایه ی آن در سیگمای xit ضرب شود،که سیگما روی t است ،و xit متغیر باینری هست،لطفا کمکم کنید که چطور میتونم اینکارو بکنم؟
    با سپاس

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

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

    • سلام
      خواهش میکنم امین عزیز.
      ببینین احتمالا هدف شما از این کار تبدیل نامساوی به مساوی هست یا محاسبه مقدار اختلاف دو طرف نامساوی هست. کلا اگه بخواین برای یه متغیر مقداری حداقل یا حداکثر نسبت بدین، باید براش lower bound یا upper bound تعریف کنین. روشش هم اینه که بعد تعریف متغیر X کدهای مربوطه رو براش بنویسین. به این شکل:

      X.lo=.1;
      X.up=1;

      برای اطلاعات بیشتر به بخش متغیرها مراجعه کنین.
      موفق باشین

  27. سلام
    من یه مساله دارم که باید تعداد تولید سه مدل مختلف رو با سود مشخص هر مدل بدست بیارم و من از متغیر (x (i استفاده کردم . حالا مشکل اینجاست که این مدل باید با نسبت ۳:۲:۵ تولید بشه . و من نمیدونم چجوری باید این نسبت رو در تابع هدفم لحاظ کنم.

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

      • اصل مسیله این هست:
        تولیدکنندهای سه مدل I و II و III از فرآوره معینی را تولید میکند.زمان کار مورد نیاز برای هر واحد از مدل I دو برابر زمان کار مدل II و سه برابر زمان کار مدل III می باشد. تمام نیروی کارخانه میتواند معادل ۷۰۰ واحد از مدل I تولید کند. برآوردی از بازار نشان میدهد
        که کمینه تقاضا برای سه مدل به ترتیب ۲۰۰ ، ۲۰۰ و ۱۵۰ واحد است. با وجود این، نسبتهای تعداد واحدهای تولید شده باید برابر با ۵ : ۲ : ۳ باشند. فرض کنید که سود هر واحد از مدلهای I ، II و III به
        ترتیب برابر ۳۰ ، ۲۰ و ۵۰ تومان است.

        من یه متغیر (x(i تعریف کردم و همه محدودیت های مسئله رو هم نوشتم ولی نمیدونم چجوری نسبت واحدهای تولید شده رو اعمل کنم.؟

        • سلام
          زیاد فکر نکردم رو مسئله تون. حالا من یه چیزی میگم شما برین بهترش کنین. همیشه یه مدل بهتر وجود داره.
          من میام همون x رو تعریف میکنم. بعد مجموع x ها رو حساب میکنم (sum(i,x(i) ) بعد میام این فرمول زیر رو مینویسم.

          ۳*x("1")+2*x("2")+5*x("3")=e=sum(i,x(i));

          بعد میام یه متغیر دیگه تعریف میکنم به اسم y(i) که برای مدل اول معدله زیر رو شامل میشه.

          y("1"=e=3*x("1");

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

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

    • سلام
      خواهش میکنم. تعریفاتون قوت قلبه برامون.
      سوال اول: فرض کنیم x(i) تو مرحله اول متغیره، بعد که مدل اول حل شد این متغیر باید به صورت پارامتر استفاده بشه. خب. بعد دستور solve اول، یه پارامتر جدید مث x1(i) تعریف کنین و بگین که جواب x به دست اومده تو مدل قبلی باید تو این x1 قرار داده بشه و در مدل بعدی استفاده بشه. برای این کار از پسوند یا ویژگی .L مربوط به متغیرها استفاده میکنین (این پسوند رو تو بخش متغیرها ببینین توضیحش رو ). مدل ساده زیر رو نگاه کنین فک کنم خیلی بهتون کمک کنه.

      c1.. .....
      c2.. .....x(i).......
      model first ....
      solve first using .....;
      parameter x1(i);
      x1(i)=x.L(i);
      * The first model is done, from now, we are using x1
      .
      .
      c5.. x1(i)........=e=y+z(i,j,k);
      سوالی داشتین در خدمتم

  29. با سلام و خسته نباشید
    چند تا سوال دیگه داشتم از شما راجع به مدل دو مرحله ای که قبلا هم توش مشکل داشتم
    سوال اولم اینه که پارامتر هایی که تو هر دو مرحله مشترک هستند باید تو هر دو تا تعریف بشند یا فقط تو یکی از مدل ها تعریف کنیم کافیه؟
    سوال دومم اینه که قبلا شما توضیح دادید که چه طوری یک متغیر تصمیم تو مرحله اول رو به پارامتر تبدیل کنم .اما تو این مساله فرض کنید x(k) متغیر مساله هست که تو هر بار اجرای برنامه k تغییر میکنه و مقادیر جدیدی میگیره و x متغیر صفر و یک هست . تو این شرایط چه کاری انجام بدم مشکل حل میشه
    بسیار بسیار ممنونم از شما

    • سلام
      ممنون.
      سوال اولتون: نه یه بار کافیه.
      چیزی که از سوال دومتون فهمیدم اینه که مسئله ی مرحله اول شما، (یا کل مسئله) به ازای هر k باید یه بار حل بشه. برای این کار شما باید دستور solve رو بذارین تو loop. le lehg cdv

      loop(k,
      solve myGams using lp minimizing z;
      z1(k)=z.l;
      );

      با این کار هر بار که مدل حل میشه، یه جواب برای z حساب میشه و اون جواب رو توی z1 براتون ذخیره میکنه.
      خواهش میکنم و موفق و سربلند باشید

      • منظورم از سوال دوم اینه که فرض کنید با یک مقدار پارامتر هایی مساله اول رو حل کردیم و k هایی که x(k) شون یک شده انتخاب کردیم و به عنوان پارامتر فرستادیم مرحله دوم
        حالا اگر پارامتر های مساله رو تغییر بویم k ها مقدار دیگه ای میگرن که اون k ها و x هاشون رو میفرستیم مرحله ۲
        K یک set هست که ۲۵تا عضو داره

  30. با سلام و تشکر بابت مطالب مفیدتون.
    در مثال کاربردی شما در بخش table وقتی solve می زنم معادله جدول رو به جای افقی عمودی میخونه. یعنی میزنه x1+3×2+x3 به جای x1+2×2+x1 . چرا اینجوری میشه؟

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

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

  32. با سلام و خسته نباشید
    من برای نوشتن table که بیش از سه بعد داشته باشه دچار مشکل شدم متن بالا رو هم خوندم اما متاسفانه جواب سوالمو نگرفتم اگه میشه راهنمایی کنید
    مثلا برای a(p,u,f,f2,t,c,IBL_D)
    ممنونم

    • سلام
      این بعد زیادیه. اگه میتونین که با دستور uniform یه تابع کنواخت براش تعریف کنین و بهش مقدار بدین.
      اگه نه که بهتره داده ها رو تو اکسل وارد کنین و تو گمز از رو اکسل بخونین.

    • سلام وارد کردن داده از اکسل به گمز به بعد کاری نداره .
      دستورش اینه مثلا برای پارامتر دو بعدی

      table Iprim(e,i)
      $call ="c:\program files (x86)\gams23.3\xls2gms.exe" I="C:\Users\mansoureh\Desktop\gamsbook project\hamedi\data.xls" O="pard.inc" R="Sheet2!B1:O14"
      $include pard.inc
      ;

      حالا اگه سه بعدی بود پارامتر رو سه بعدش تعریف می کنی و به اندازه اون خونه توی اکسل پر میکنی . بهتر دو تا اندیس اول به عنوان سطر بگیری و اندیس آخریو به عنوان ستون

  33. با سلام
    من مساله حمل و نقلی دارم که در اون انتخاب بین ۴ وسیله حمل و نقل هست. اما در مسیرهایی مثلا تهران تا مشهد وسیله حمل و نقل کشتی وجود ندارد . میخواستم ببینم توی table اینو باید چه جوری وارد کنم؟ چون مساله مینیمم سازی هزینه هست اگر صفر بذارم فک میکنم اشتباه باشه چون میشه حداقل هزینه و انتخاب میشه. البته مطمئن نیستم.
    ممنون میشم راهنماییم کنید

  34. سلام
    خیلی سایت خوب و مفیدی دارید. هم تبریک هم تشکر فراوون
    یه اشتباه لپی تو مثال دوم پیش اومده
    کلا ماتریس ۶*۴ هست و ۲۴ عضو میتونه داشته باشه. i3 در هر دو ردیف جدول وجود داره که نمیتونه دو مقدار بگیره
    بازم تقدیر و تشکر فراوون

  35. با عرض سلام و تشکر از زحمات شما من فایل اکسلی را در گمز به عنوان c(i,j) فراخوانی کردم حالا میخوام بگم ستون اول این جدول ذخیره مخزن است و به ترتیب s(1) درایه ستون اول سطر اول وs(2) را درایه ستون اول سطر دوم و…. در نظر بگیر چگونه این کار را انجام دهم؟

    • سلام
      دقیقا متوجه نشدم. ولی اگه موردی میخواین مثلا تو محدودیت استفاده کنین، اینجوری میشه:

      c(i,'1')=s(i);

      مقداری به عبارت بالا نگاه کنین، متوجه میشین که باید چی رو بکار ببرین

  36. با سلام و خسته نباشید
    آقای محمودی من در گمز یک پارامتر بنام C(i) دارم که به ازای i های مختلف جواب های متفاوتی دارد اگر بخواهم عدد max این پارامتر را انتخاب کنم چه دستوری لازمه؟
    آخه تو متلب راحته با نوشتن max اون بردار جوابو میده اینجا نمیدونم چکار کنم
    با تشکر

  37. با سلام من مدلم رو نوشتم و برخی از متغیرها رو باینری انتخاب کردم ولی وقتی جوابشون رو میده این اعداد بین صفر و یک قرار می‌گیرند این مشکل رو چطوری میتونم حل کنم؟؟

    • سلام
      مدل شما یا نشدنیه یا اینکه دقیق حل نشده. دو آپشن زیر رو قبل از دستور solve قرار بدین. نوع مدل شما هم مهمه البته. کدای زیر رو استفاده کنین. نتیجه رو بهم بگین و اینکه نوع مدلتون رو هم بگین.

      option reslim=10000;
      option optcr=0;

  38. سلااااااااام
    لطفا کمکم کنید.کارم خلیلی گیییییره
    من میخوام مساله زمان بندی پروژه رو مدل کنم.برای اینکه باید یجوری روابط پیش نیازی فعالیت هارو ب گمز بفهمونم.میشه کمکم کنید؟از بس فک کردم مغزم پوکیدددد

    • سلام
      معمولا میان یه جدول به اسم مثلا pre(i,j) تعریف میکنن. که هر وقت یک بشه یعنی مثلا i پیش نیاز j هست. بعد تو محدودیت ها به عنوان دستور شرطی دلار استفاده کنید ازش

      • با سلام، منم همین سوال رو دارم میشه لطفا راهنماییم کنید؟
        من مدل ریاضیم شامل همه ی روابط پیش نیازی میشه اعم از FS,SS,SF,FF، شرط برقرار بودن این روابط توی محدودیت های مدلم اومده،توی تعریف مجموعه هام چطوری باید نشون بدم که کدوم فعالیت پیش نیاز اون یکی هستش؟

        • سلام
          یک table به اسم مثلا pre(i,j) تعریف کنین. که هر وقت یک بشه یعنی مثلا i پیش نیاز j هست. بعد تو محدودیت ها به عنوان دستور شرطی دلار استفاده کنید ازش.حتما باید از جدول باینری برای نشان دادن پیش نیازها استفاده کنید

    • سلام
      ممنونم.
      میتونین از initial solution یا variable initializing استفاده کنین. مثلا برای متغیر پیوسته و مثبت x، شما حدس میزنین که جوابش حدودا باید ۱۰۰ بشه. شمام یه جواب آغازی براش میارین. .L این کارو انجام میده

      positive variable x;
      x.L=100;

  39. با سلام و ممنون از سایت خوبتان
    یه سوال داشتم درمورد TABLE:
    اگر درایه ماتریس ما (جدول دوبعدی) بیش از یک مقدار بگیرد (به حالت سوپر ماتریس) چگونه وارد میکنیم؟
    بطور مثال
    {۴,۳}=(۱,۲)a
    یا
    ۴,۳=(۱,۲)a
    امیدوارم درست منظورم رو رسونده باشم و منتظر پاسخ شما هستم
    با تشکر

  40. با سلام

    من table تعریف کردم به فرم b(i,m) وt(i,j)
    حالا می خوام توی یک محدودیت اینو تعریف کنم که:
    constraint2(i,m)..t(i,j)*x(j,m)=l=b(i,m)*384;
    ولی بهم eror 149 میده روی t و x .
    ممنون میشم بهم بگبن کجارو تصحیح کنم

    • سلام
      تو کامنتا یه چند نمونه گذاشتیم. اونا رو چک کنین. روشهای زیادی هست. یکشون xls2gms و یکی دیگه هم gdxrw هست. که دومی راحت تر و سریعتره

      • سلام
        ممنون بابت پاسخگویی سریعتون.
        ببخشید من بیش از ۲۰ پارامتر دارم که بعضیاشون ۳ یا ۴ اندیس دارن.اینارو تو اکسل وارد کردم.
        سوالم اینه که دستور gdx یاxls2gms رو باید برای تک تک پارامترها بنویسم؟
        و اینکه فایل اکسل و گمز رو تو یه فلدر سیو کردم اما باز وقتی ران میگیرم فایل اکسل رو شناسایی نمیکنه.

        • سلام
          خواهش میکنم.
          بله باید تک تک معرفی بشن که مثلا آدرس مربوط به پارامتر aij کجاست و bij کجاست.
          از طرفی gdxrw خیلی سریعتر و مناسب تره.
          اینکه تو یک فولدر ذخیره کنین برای xls2gms کافی نیست. و باید هم فرمت اکسل از نوع xls باشه و هم اینکه جایی که این دو کد قرار میگیرن دایرکتوری باشه. یعنی به عنوان project directory خونده بشه تو گمز.
          برای gdxrw فرمت xlsx هست و کافیه اکسل تو دایرکتوری باشه

  41. سلام وقتتون بخیر.من یک کد گمز برای مدل پایان نامم نوشتم.یکی از ارورها رو به هیچ وجه نمیتونم از بین ببرم ارور شماره ۱۴۸هستش و توی سایتهای مختلف هم علت ایجاد این ارور رو خوندا ام اما شامل اونها نمیشه به نظرم.ابعاد پارامترها و جداول رو همگی چک کردم.این ارور رو به بخش تابع هدفم وارد میکنه.احتمال میدم از این بهش باشه، مثلا وقتی ما sum رو روی i,j,g میبندیم بعد دوتا از متغیرهامون هرسه اندیس رو داشته باشن اما یکی نداشته باشه ایراد میگیره؟ یعنی اینطوری
    Sum((i,j,g),demand(i,j,g)*h(i))
    ممنون میشم راهنماییم بفرمایید

    • سلام
      پارامتر یا متغیری که قبل از محدودیت ها تعریف میکنین، باید همونجوری تو محدودیت ها هم استفاده بشه. اندیسا پس و پیش نشن و عوض نشن. مثلا xi رو نزده باشین xt

  42. سلام خسته نباشید
    توی گمز دو تا جدول دارم. درایه های جدول دوم ضریب درایه های جدول اول هستند. برای جلوگیری از تکرار وارد کردن داده ها راهی وجود داره؟

  43. سلام
    من الان یه مدل نوشتم فقط باید Dual بنویسم براشو میخواستم بدونم با چه دستوری میشه از نوشتن مجدد داده های جدولی صرف نظر کرد و از جدول مدل بالا که قبلا وارد کردیم استفاده کرد.
    چون دو مدل رو باید در یک برنامه بنویسم.

  44. سلام ممنون از پاسخ دهی تون
    برای لینک گمز و اکسل،من فایل GDX رو ساختم و بدون مشکل ران شد، ولی برای ران مجدد ارور ۵۱۰ داد و فایل روو باز نمیکرد. علن پریدن gdx چی میتونه باشه؟

    • سلام
      حتما یه تغییری ایجاد شده. تغییر فولدر، استفاده غلط از GDXXRW ، یا هر ادرس دهی غلط میتونه دلیلش باشه.
      عمده ترین مشکل از اینجا میاد که شما غلط از دستور استفاده کنین. مثلا وقتی شما میخواین اندیس i رو بهش بفهمونین جا اینکه بنویسین GDXXRW i=youraddress نوشته باشین GDXXRW =youraddress
      یه دلیل دیگه هم میتونه این باشه که دستی به فایلتون پسوند اضافی داده باشین. مثلا mydata.xls.xls (این برا افرادی پیش میاد که دستی فرمت تایپ میکنن چون فرمت رو نمیبینن تو ui سیستمشون.

  45. با سلام

    یک پارامتر ۴ بعدی دارم مانند a(i,j,k,l)
    که اندیسهای اول و دومش ۱۰ تا وبقیه ۴ تا مقدار دارند. در این مواقع که اطلاعات ورودی به گمز بزرگ و نوشتن اونها به شکل جدول زمان براست چه راهی پیشنهاد می کنید؟؟؟

    • سلام
      از اکسل بخونین. برای فراخوانیش هم از xls2gms یا gdxrww استفاده کنین. اول باید یاد بگیرین. سرچ بزنین:
      gams.com reading data from excel

  46. با سلام

    من مدلم دو نوشتم تو گمز و با سولور MIP، اما متاسفانه جوابی پیدا نمیکنه و وضعیت سولور رو integer infeasible بیان می کنه. به نظرتون چاره چیه؟

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

  47. سلام.
    ببخشید من در رابطه با پایان نامم به مشکلی برخوردم که اگه میشه کمکم کنید.برای یه قسمتی از پایان نامم لازمه که واریانس ریسک های بار شده روی لینک های شبکه رو محاسبه کنم.تابع هدف رو به این صورت مینویسم و وقتی RUN میکنم ERROR نمده اما برای واریانس در تابع هدف مقداری رو هم نشون نمیده و مینویسهUNDF.
    کدی که برای واریانس مینویسم به اینصورته:

    Varrisk = SUM((J, P), (X.L(J, P)*N(P)-Meanrisk)**2);
    تمام متغیرها هم تعریف کردم در مدل.

      • سلام
        بخشی که نوشته فقط اینو قبلش نوشته:


        PARAMETER Meanrisk = 70.000
        PARAMETER Varrisk = UNDF

        و چند خط اخر قسمت بعدی هم که فرمودید اینه:

        Restarting excution---
        afifimodel 2070531 U.gams(76) 2 Mb
        Reading solution for model FACZ@
        Executing after solve: elapsed 0:00:00.336
        afifimodel 2070531 U.gams(80) 3 Mb
        Error at line 80: rPOwer: func DOMAIN: x**y, x<0
        afifimodel 2070531 u.gams(82) 3 Mb 1 error
        (status: Execution error(s

        • دقت کنین به متنایی که بهتون ارائه میده گمز. خیلی واضح گفته که تو خط ۸۰ نباید x به توان برسه در حالی که ایکس منفی میتونه باشه. پس میتونین اون عبارت رو بذارین تو abs (قدر مطلق)، یا یه مقدار کوچیک به زیر توان اضافه کنین و یا خطی سازی یا هر روش دیگه ای رو به کار ببرین.

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

  49. من ماتریس c را به عنوان یک فایل اکسل به گمز معرفی کردم
    حالا در قسمت داده خوانی میخوام بگم ستون اول این ماتریس شامل اعدادی از a1 تا a12 صفحه اکسل است به ترتیب متناظر بشه با مقادیر (ذخیره مخزن در ۱۲ ماه متوالی) یعنی پارامتر ورودی من بشه s1,s2,s3,…s12 حالا نمیدونم در قسمت پارامتر این ارتباط را چه جوری بین ستون اول ماتریس c و s تعریف کنم

  50. سلام
    آیا سایز ماتریس های C , S یکی هستند ؟
    اگر جداول یکسان باشن و ۲ بعدی باشن توی گمز ستون را یک بگذارین .S(i,'1') اگر تک بعدی باشه هم که خودشه.
    اگر این نبود بیشتر راجع به سایز مساله تون توضیح بدین

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

  52. آقای محمودی ببخشید وقتی در مدل هیچ اروری نداریم و علارغم اینکه دستور display هم برای نمایش خروجی ها نوشته شده ولی خروجی نمایش داده نمیشود.علت چیه؟

پاسخ دهید

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