آموزش رایگان نرم افزار گمز

دستور حل مدل در گمز

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

تا اینجای دوره آموزشی نحوه تعریف مجموعه‌ها، داده‌ها، متغیرها و قید‌ها را توضیح دادم، حالا به جایی رسیدیم که باید به گمز بگیم که مدل ما را حل کنه. اینکار با دستورات Model و Solve انجام میشه.

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

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

دستور Model در گمز

قبل از حل مدل در گمز باید به مدل خودمان یک نام اختصاص بدیم. اینکار با کلمه کلیدی Model انجام میشه:

				
					Model transport1 some text /all/; 
				
			

در کد بالا من ابتدا از کلمه کلیدی Model استفاده کردم بعد از اون به مدل ریاضی خودم یک نام دادم. این نام می‌تونه هر چیزی باشه، در اینجا من اسم مدل را transport1 گذاشتم. بعد از اون مثل همه اجزای گمز می‌تونید یک عبارت توصیفی برای توضیح اضافه‌تر درج کنید (در اینجا عبارت some text یک عبارت توصیفی هست، حواستون باشه که وجود یا عدم وجود عبارت توصیفی کاملا دلخواه هست). در قسمت آخر در میان دو تا / عبارت all را نوشته‌ام، این عبارت به گمز میگه که همه قیدهایی که نوشتید را، در حل مدل بکار ببر. اگه با قیدها در گمز آشنا نیستید، حتما قبل از ادامه این پست، آموزش تابع هدف و محدودیت‌ها در گمز را مطالعه کنید. حالا فرض کنید در مدل من، اسم قید تابع هدف obj و اسم محدودیت اول من c1 هست و فقط میخوام که مدل با لحاظ کردن این دو تا قید حل بشه! اون موقع بجای کلمه all از اسم قیدها به شکل استفاده می‌کنیم:

				
					Model transport1 some text /obj,c1/; 
				
			

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

دستور Solve در گمز

خب حالا وقتش رسیده به گمز دستور حل بدیم. برای این کار از کلمه کلیدی Solve استفاده می‌کنیم:

				
					Solve transport1 using LP Minimizing z;
				
			

بعد از کلمه کلیدی Solve نام مدل خودمان که در قسمت قبلی تعریفش کردیم را می‌نویسیم، بعدش از کلمه کلیدی using استفاده می‌کنیم، بعد از اون باید نوع مدل را برای گمز مشخص کنیم، چون مدل من از نوع خطی بوده از کلمه LP استفاده کردم، در قسمت بعدی اگه مدل از نوع حداقل سازی باشه از عبارت Minimizing و اگه مدل از نوع حداکثر سازی بود از کلمه Maximizing استفاده می‌کنیم، در پایان هم باید متغیر تابع هدف را بنویسیم. متغیر تابع هدف من در این مدل اسمش z بوده و حتما هم یادتون هست که نوع متغیر تابع هدف حتما باید free باشه. اگه با متغیرها آشنا نیستید، حتما از آموزش متغیرها در گمز قبل از ادامه استفاده کنید.

نکته دیگه اینه که شما می‌تونید چندتا عبارت Model و Solve در یک فایل داشته باشید.

انواع مدل در گمز

در عبارت Solve بعد از کلمه using گفتم که باید نوع مدل را مشخص کنید. در گمز انواع مدل زیادی داریم که در ادامه مهم‌ترین آن‌ها را یاد می‌گیریم:

  • LP: مدل خطی – تمامی قیدها خطی هستند.
  • QCP: قیدهای خطی و درجه 2 داریم.
  • NLP: حداقل یکی از قیدها غیر خطی هست.
  • MIP: مدل برنامه‌ریزی عدد صحیح – در این نوع مدل متغیرهای عدد صحیح (مثل متغیر از نوع Binary) داریم.

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

Solver در گمز

کلمه Solver کلا کلمه پر کاربردی در دنیای مدل سازی هست، از سالور (Solver) اکسل تا اینجا در گمز. حواستون باشه که Solver با کلمه کلیدی Solve که در بالا توضیح دادم، فرق می‌کنه. سالور الگوریتمی هست که در حقیقت مدل ما را حل می‌کنه! گمز وظیفه داره مدل را به زبان سالور ترجمه کنه و به سالور بده، بعدش که سالور مدل را حل کرد، جواب سالور را برای ما ترجمه کنه و نشون ما بده. یجورایی گمز واسط بین ما و سالور هست.

جالبه بدونید که بعضی از سالورها جدا از گمز به فروش می‌روند و قیمت‌های خیلی بالایی هم دارند. نکته دیگه اینه که هر سالور یک تعداد نوع مدل را حل می‌کنه، مثلا یک سالور فقط می‌تونه مدل‌های LP را حل کنه و نمی‌تونه NLP حل کنه و یک سالور دیگه برعکس.

شما بسته به نوع مدلتون نیاز که سالور مناسب را انتخاب کنید، البته خیلی درگیر این موضوع هم نشید، خود گمز معمولا سالور مناسب را براتون انتخاب می‌کنه ولی بهرحال اگه خواست سالور پروژتون را تغییر بدید از منوی File روی Options کلیک کنید و در پنجره‌ای که باز میشه برید به تب Solvers:

دستور حل مدل در گمز - سالورها

در ستون اول نام سالورهایی که روی گمر شما نصب هست، نوشته شده. در ستون دوم هم وضعیت لایسنس اون‌ها را نوشته. هر کدام از ستون‌های دیگه متعلق به یک نوع مدل هست. در هر سلولی که نقطه می‌بینید یعنی سالور مرتبط به اون سطر قادر به حل مدل مرتبط به اون ستون هست. مثلا سالور CBC مدل‌های از نوع LP را می‌تونه حل کنه. اون سلول‌هایی هم که علامت ضربدر دارند، یعنی گمز به طور پیشفرض برای حل مدل موجود در ستون مرتبط، از سالور مرتبط با سطر استفاده می‌کنه. شما می‌تونید خیلی راحت سالورهای پیشفرض را تغییر بدید. 

ویدیو آموزش دستور حل مدل در گمز

من به جز اینجا، ویدیوها را در چنل یوتوب خودم هم آپلود می‌کنم. خیلی خوشحال میشم اگه اونجا هم من را همراهی کنید. برای دیدن چنل یوتوب من روی این لینک کلیک کنید.

نمایش ویدیو درباره دستور حل مدل در گمز