هر مدلی که شما می نویسید نیازمند یک نام و تمامی محدودیت های بکار رفته در آن است. این عمل با استفاده از دستور Model انجام می گیرید. فرم کلی دستور مدل به صورت زیر می باشد:
Model modelname explanation /model contents/ ;
در گذاره ی بالا : model یک دستور، modelname نام دلخواهی که شما برای مدل انتخاب می کنید، explanation توضیحات اضافی دلخواه و model contents مجموعه محدودیت های به کار رفته در مدل می باشد.
همانطور که گفته شد، model contents شامل آن دسته از محدودیت هایی می شود که در مدل به کار می روند. این محتوی می تواند شامل تمامی محدودیت هایی که نوشته ایم بشود یا تنها بخشی از آنها. اگر همه ی معادلات در مدل دخیل باشند، واژه ی all را به جای model content تایپ می کنیم. در غیر این صورت یکی یکی نام محدودیت های دخیل و همچنین تابع هدف را در این قسمت وارد خواهیم کرد. مثال زیر گویای این امر است:
در شکل بالا سه مثال که هر کدام محدودیت ها و تابع هدف های مخصوص به خود را دارند مشاهده می کنید. در مثال اول به نحوه ی تعریف دستور مدل دقت فرمایید. همانطور که مشاهده میکنید، دو مدل با نام های mymodel و submodel که در مدل اول کاربر می خواهد که مدلی که تمامی محدودیت های obj, co1, co2 در مدلی که حل می شود وجود داشته باشند و در مدل دوم خواهان شرکت تابع هدف obj و محدودیت co2 در مدل خواهد بود. بیدن صورت در دستور model دوم محدودیت اول جایگاهی در محاسبات ندارد و تأثیری در فضای شدنی نیز نخواهد داشت.
شایان ذکر است که می توان در یک برنامه، همزمان چند model مختلف با اسامی متفاوت داشت. این مدل ها می توانند با هم همخوانی داشته باشند. یعنی یک یا چند معادله ی مشترک داشته باشند. یا اینکه کاملا مستقل از هم باشند. دستور model در مثال یک را می توان به صورت زیر نیز کد کرد:
*Ex1
model mymodel /all/
submodel /obj,co2/
;
بدین صورت برای مدلتان یک نام تعیین کرده و تمامی معادلاتی که در آن دخیل اند را مشخص می کنید. این مدل در دستور solve مورد استفاده قرار خواهد گرفت. توجه کند که در صورتی که برای مدلتان نام تعیین نکنید مدل قابل حل نخواهد بود. خاتمه
بپردازیم به ادامه مثال کاربردی 1:
با توجه به مطالبی که در مورد دستور model گفته شد، در ادامه مثال کاربردی 1 به صورت زیر در خواهد آمد:
خدمت عزیزانی که آموزش گام به گام را از ابتدا همراه با ما شروع نموده اند توصیه می شود که پس از مطالعه و مرور این صفحه، جهت ادامه مراحل آموزش به بخش انتخاب نوع solver، در لیست مطالب مراجعه نمایند.
با تشکر
مدیریت سایت gamsbook.ir
ایمیل: Support@gamsbook.ir
شماره تماس: 3325-405—0919
سلام برای شبیه سازی از طریق برنامه گمز باید چگونه عمل کنیم ممنون میشم جواب بدین
سلام وقت بخیر
سوالتون خیلی کلیه
سلام
من مدلی رو کد کردم و وقتی ران میگیرم میگه جواب با اعداد صحیح وجود نداره.
که محدودیت ها رو یکی یکی حذف کردم که با دو محدودیت به این مشکل میخوره.
مدل مشکلی نداره چون از یه مقاله برداشتم
چطور باید رفعش کنم؟؟
تشکر
سلام
نشدنی بودن یه مسئله به چهار دلیله.
1- مشکل از مدل باشه
2- مشکل از داده های ورودی باشه
3- مشکل از کد نویسی شما باشه
4- مشکل از سالور باشه
سه تای اول رو باید با دقت بررسی کنین.
برای مشکل سالور، باید سالور رو عوض کنین، یا اینکه اگه مدل غیر خطی هست، خطیش کنین و محجددا تلاش کنین
سلام
من مدلی رو کد کردم و حالا که میزنم ران شه میگه نشدنیه. و وقتی بررسی کردم در چهار تا محدودیت بیان کرده که نشدنی. میخاستم بپرسم نشدنی بودن مربوط به نحوه کد کردن یا خود مدل؟ از کجا باید متوجه بشم که ایرادش در کجاست؟ و چه راهی هست که نشدنی بودن رو برطرف کنم؟ من تا حد زیادی مطمین هستم که مدلم درسته.
با سپاس
سلام
مشکل ممکنه از هر کدوم یا جفتش باشه. شما محدودیت ها رو یکی یکی به مدل اضافه کنین، و هر بار ران کنین. ببینید با اضافه کردن کدوم محدودیته که این مشکل به وجود میاد. بعد تحلیل کنین و رفع کنین
سلام
من یه مدل نوشتم تو بخش معدلاتش دارم
equ(I) .. sum(j,x(i)*b(i,j))
حالا می خوام به ازای مثلا equ 1 و equ 15 و تابع هدف مسئله حل بشه، دستورش را چجوری باید بنویسم؟
(مثلا به جای modal /all/ از لحاظ منطقی می خوام بنویسم model /objective,equ(1),equ(15 ولی چجوری اینا به برنامه بفهمونم؟)
سلام
تو دستور مدل شرط ننویسین، شما محدودیت و هدف رو همینجوری تعریف کن، ولی شرط بذار واسه محدودیت و تابع هدف، مثلا میگیم که محدودیت رو به ازای هر i اعمال کن ولی به شرط 1 و 15 واسه هدف هم تو اون مجموعی که داریم باید باز شرط رو بذارین، بستگی به ساختار مدلتون داره.
شرط رو اینجوری میتونین بنویسین مثلا
Eq1(i)$(ord(i) =1 ord ord(i)=15)..
ممنون، خیلی لطف کردین
سلام
من مدلم minlp هستش،الان میخوام تو مدلم از دستور ifthen استفاده کنم که DNLP هستش،چجوری باید اینکار رو انجام بدم؟
مرسی بابت راهنماییتون
سلام
دستور ifthen رو یاد بگیرین. تو کامنتهای سایت مثال ها موجوده.
نوع solver هم بزنین sbb