یک مدل پس از ورود به محیط نرم افزار، نیازمند گذاره هایی تحت عنوان نام گذاری مدل و حل مدل خواهد بود. همچنین دستورات دلخواه دیگر مانند display نیز جزء دستورات نهایی مدل می باشند که در این بخش به تشریح آنها خواهیم پرداخت.
دستورات نهایی به چهار بخش اصلی تقسیم میشوند:
- دستورات مربوط به نام گذاری مدل
- دستورات مربوط به تعیین نوع حل کننده
- دستورات مربوط به حل مدل
- دستورات مربوط به زیبا سازی خروجی های مدل
به طور خلاصه، هر مدلی که شما می نویسید، که شامل یک سری معادله و نامعادله، تابع هدف و محدودیت است، باید اسمی برایش تعریف کنید. یک مدل که برایش اسم تعریف کرده اید باید به نرم افزار بگویید که به چه حل کننده ای (cplex, lingo, baron و…) باید حل بشود. یک مدل باید مشخص شود که از نوع بیشینه سازی است یا کمینه سازی. یک کاربر در صورتی که ویژگی های خواص، یا اطلاعات خواص نظیر مقدار بهینه ی فلان متغیر پس از حل مدل را بخواهد باید قبل از run کردن مدل، کد مربوط به این تغییرات را وارد محیط GAMS کند.
دستورات نهایی مدل همانند سایر دستوراتی که به عنوان حیاتی معرفی شدند باید در مدل استفاده شوند.
در این بخش سه زیر مجموعه با نام های دستور solve، دستورات model،انتخاب نوع solver، سفرشی سازی خروجی مورد بحث قرار می گیرند که در صورت علاقه مند بودن، مخاطب می تواند به این بخش ها مراجعه نماید.
خدمت عزیزانی که آموزش گام به گام را از ابتدا همراه با ما شروع نموده اند توصیه می شود که پس از مطالعه و مرور این صفحه، جهت ادامه مراحل آموزش به بخش دستور model، در لیست مطالب مراجعه نمایند.
با تشکر
مدیریت سایت gamsbook.ir
ایمیل: support@gamsbook.ir
تلفن تماس: 3325-405-0919
سلام وقتتون بخیر
ببخشید مدلم رو وقتی کد کردم همه اعداد صفر شده میشه خواهش کنم یه نگاهی بهش بندازین ؟
متوجه نمیشم مشکلش کجاست
سلام وقت بخیر
ارسال بفرمایید
سلام
چطور می تونم یک پارامتر از تنوع string داشته باشم و خروجی مورد نظرم رو که ترکیب چند عبارت، پارامتر و متغیر است بصورت متن(رشته) دلخواه بسازم و در اون ذخیره کنم؟
ممنون
سلام
با دستور put میتونین رشته تولید کنین. کافیه ادرس دهیتون دقیق باشه.
خیلی ممنون
لطف کردید
با سلام و تشکر فراوان
راه حل تعریف پارامتر دقیقا راهی بود که به دنبالش بودم. بعد ا ز دستور solve پارامتر رو تعریف و نتیجه جمع و ضرب متغیرها و محاسبات رو در اون ریختم و بعد در سی شارپ فقط از اون پارامترها استفاده می کنم.
یک سوال دیگه دارم:
با توجه به اینکه این قسمت بعد از دستور solve هست؛ می خواستم مطمئن بشم که این کار هیچ تاثیری با قسمت قبل از solve نداشته باشه. بعبارتی آیا این کار تاثیری در حل مساله دارد یا خیر؟ ( هم جواب مساله و هم زمان حل)
سلام
خیر تأثیری نداره.
سلام
من یک نرم افزار تحت سی شارپ نوشتم که از گمز استفاده می کنه و بعد از حل مدل متغیرهای لازم رو از اون می گیرم و در نرم افزار از اون استفاده می کنم به این صورت که با جمع وضرب متغیرهای خروجی و پارامترها چند عدد نهایی محاسبه میشه که به کاربر نمایش داده میشه.
بمنظور متمرکز شدن همه محاسبات در داخل مدل گمز و ساده تر شدن کد سی شارپ، می خوام مدل گمز بصورتی باشه که بدون تغییر در قسمت اصلی مدل، بعد از حل مدل عدد نهایی مورد نیاز کاربر در یک متغیر ریخته شود تا سی شارپ فقط از اون عدد نهایی استفاده کنه.
خیلی ممنون میشم اگر راهنمایی بفرمایید
سلام
شما که این دو تا رو به هم وصل کردین بیشتر کارتون انجام شده. و قطعا دنبال راه ساده تر هستین. دو سه تا کار خوب میتونین انجام بدین. یکی اینکه خروجی که از گمز گرفته میشه، مستقیم به اکسل فرستاده بشه و اونجا با توجه به اینکه ساده تر هست نمایشش میتونین به راحتی با برنامه ای که میخواین ارتباط برقرار کنین.
راه دیگه اینه که یه parameter به نام مثلا Result(f,*,*) تعریف کنین. که f یه اندیس هست و تعداد سیمبل هایی که قراره ذخیره بشن رو شامل بشه. یعنی مثلا x(i و y(i,j و z که متغیر های ما هستن. ستاره هم برای این اومده که هر جا خواستیم هر اندیسی رو استفاده می کنیم. مثال زیر رو ببینین (مثال زیر ممکنه خوب نوشته نشده باشه ولی دید خوبی بهتون میده):
قطعا کد بالا مشکل داره. ولی شما می تونین بهترش کنین.
راه دیگه اینه که از دستور put,file استقاده کنین و یه فایل طراحی کنین. روش خوبی هم هست.
سلام روز بخیر ببخشید
امکانش هست وبسایتی معرفی کنید جهت آموزش لینک بین نرم افزار گمز و سی شارپ؟
باسلام وعرض ادب و احترام مهندس محمودی دو سوال داشتم: دستور option limrow=1e6 و $call gdxxrw out.gdx var=Pexcess rng=Pexcess!a1 چه کاربردی دارند. بسیار سپاسگزارم.
سلام
دستور limrow یعنی اینکه به گمز دستور میدیم که وقتی که مدل رو حل کرد، تو خروجی فایل lst تعداد محدودیت هایی رو که قراره باز بشن برابر 10 به توان 6 بذاره. یعنی تو بخش equation که تو lst میاد، محدودیتهای بسط داده شده به تعدادی که گفته شد نمایش داده میشن.
با عرض سلام و خسته نباشید
چگونه می توان تعداد تکرارهایی که نرم افزار برای یافتن جواب انجام می دهد تا به جواب بهینه برسد محدود کرد ؟
سلام
کد زیر رو قبل از دستور سالو بذارین:
100 یعنی تعداد تکرارها
این openshopScheduling اسم مدل من هستش و اینا هم متغیرها هستن میخام این متغیرهای خروجی رو تو اکسل نشون بده
کلا اینو نوشتم :
با سپاس
لطفا فقط به همون گفتگویی که داشتیم ریپلای کنین! من نمیدونم چرا همش این رو باید تکرار کنم برا بچه ها.
نمادها رو جاشون رو عوض نکنین.
ببخشید اینجا O=my.xls باید O رو هم تعریف بکنیم اگه تعریف بکنیم چجوری باید این کار رو بکنیم یکی هم اینکه این قسمت چی هستش par=makespan rng=makespan!a1 par=QQ rng=QQ!a1 ؟؟؟ متوجه نشدم!
شما ادرس رو با my.xls بهش دادین. این QQ یه پارامتره و makespan هم همینطور. اینا رو میریزه تو اکسل برامون. اینا فقط مثاله و دستور ثابت نیستا.
چجوری ؟ بلد نیستم
مثلا:
سلام وقتتون بخیر. سوالی در مورد این کد داشتم. در مدل من متغیرهای تصمیم 4 یا 5بعدی وجود دارد و میخواهم جواب متغرها پس از حل گمس در اکسل نمایش داده شود. خواستم ببینم چه تغییری باید در این کد ایجاد شود. ممنون میشم جواب بدید.
سلام
تغییری نیاز نیست.
فقط دقت کنی که وقتی متغیر رو بخواین بفرستین به اکسل، به جای Par باید بنویسین var. همین
سلام
یه کد تو گمز نوشتم که داده های خروجی مدل رو میبره به اکسل که در زیر این کد رو برتون مینویسم:
فقط نمیدونم چجوری اجراش کنم چون چیزی تو اکسل نمیاره، چجوری اجراش کنم و نتیجه رو تو اکسل ببینم
با سپاس
سلام
اینجوری شما فقط ریختین تو gdx، باید بعد اون هم بریزین تو xls
سلام
مرسی متوجه شدم.
یه سوالی برام پیش اومده .شما توی برنامه اسمی از testdataQ نیاوردین و فقط testdataG رو تعریف کردین . چطور برنامه هر دو ماتریس رو می شناسه ؟؟؟ و با اینکه من testdataQ رو از دایرکتری پاک می کنم ولی بازم testdataQ رو به عنوان ورودی می شناسه ….
سلام
دو تا sheet1,sheet2 رو ببینید. و نحوه ادرس دهی بهشون
سلام دستتون درد نکنه . بسیار ممنون.
یه سوال دیگه داشتم اینکه gamamin خروجی قسمت اول برنامه هستش اگه بخوام اون رو به صورت ورودی برای قسمت دوم برنامه تعریف کنم باید از چه دستوری استفاده کنم؟؟
سلام
خواهش میکنم. یه پارامتر مث gamamin1 تعریف کنین و مقدار بهینه gamamin.l رو بریزین توش.
سلام . وقت بخیر . من یه برنامه نوشتم که خطاش برطرف شده اما خروجی رو همش صفر میده. چطور باید بفهمم کدوم خط برنامه مشکل داره؟ آیا برای این کار دستوری وجود داره ؟
سلام
مسئله نشدنی شده، یا جواب بیکران داره و یا لایسنس ندارین. چک کنین تو process window چی نوشته
سلام برنامه رو براتون ایمیل کردم. اگه دیدین بی زحمت بهم بگید که حداکثر چقدر طول می کشه .ممنون از راهنمایی هاتون.
چشم