خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
آموزش گمز در 5 مرحله + دانلود فیلم آموزش گمز
در این پست، به آموزش گمز خواهیم پرداخت. اگر با مدلهای پیچیده ریاضی سروکار دارید؛ به احتمال زیاد از نرم افزار گمز استفاده کردهاید یا اگر دانشجوی رشتههای مهندسی هستید؛ برای انجام پروژههایی که نیاز به مدل سازی دارند؛ در آینده مجاب به آموزش این نرم افزار خواهید بود. لذا آموزش نرم افزار گمز، خالی از لطف نیست چرا که در پروژههای کلان دادهای با هدف یافتن راه حلهای بهینه ریاضی، در حداقل زمان و با صرف حداقل هزینه ناچار بهمدلسازی خواهیم بود و در این بین گمز دقیقترین یافتهها را برای شما ارائه خواهدداد.
در هر مرحله از استفاده نرم افزار گمز، کاربر انتخاب میکند که با استفاده از چه روشی پاسخ بهینه پروژه بهدست بیاید. در نهایت هر کدام از دانشجویان و محققان میتوانند پاسخهای یافته از چندین الگوریتم را با یکدیگر مقایسه کنند و به یک تصمیم بهینه برسند.
صرفهجویی در زمان برای کاربران گمز، یکی از دستاوردهای برنامه میباشد. دیگر ویژگی آن، داشتن Toolbaxهای متنوع آماده جهت برنامه نویسی آسان و کاهش پیچیدگی یا بهحداقل رساندن خطاهای پیاده سازی در ارائه مدل نهایی است. بهاین ترتیب، هر دانشجو میتواند بدون داشتن استرس از خطاهای احتمالی فقط و فقط بر روی نحوه پیاده سازی عملیات تمرکز نماید. با این مزیت، در هزینههای کاربران نیز صرفهجویی میشود.
دیگر ویژگی اصلی گمز این است که در این نرم افزار قدرتمند، کلیه گزینههای پیشنهادی موجود که توسط این نرم افزار، ارائه میگردد؛ قابل انتقال از یک سیستم به سیستم دیگر بوده و بعد از اتمام کار، کاربر میتواند میتواند هر کدام از آن راه حلها را که مایل بود؛ از یک سیستم اولیه به سیستمهای دیگر منتقل کرده و بعد از انجام تغییرات برنامه پیاده سازی کند. همانطور که گفتیم، نرم افزار گمز قابلیتهای فراوانی دارد اما اگر کار با این نرم افزار را بلد نیستید نگران نباشید! ما به شما مجموعه آموزشهای گمز فرادرس را پیشنهاد میدهیم که با استفاده از آنها میتوانید گمز را به صورت حرفهای یاد بگیرید:
Set setname/set members/;
حال هرکدام از مجموعههای زیر را در نظر بگیرید.
کدنویسی هر کدام از مجموعههای بالا در محیط گمز، به شرح زیر خواهد بود.
set X /x1,x2,x3/;
set A productes/x,y,z/;
set B/1*50/;
set Daneshjuyan /neda, yasi, zahra, sara,taraneh/;
set row /row1*row20/;
نکته مهم: برخلاف بسیاری از زبانهای برنامه نویسی، گمز بهحروف کوچک و بزرگ حساس نیست.
پارامترها
مؤلفههای تعیین کننده حالات مسئله، همان پارامترها هستند. مثل فلگها یا کلیدهای روشن و خاموش و غیره. در گمز میتوان انواع اندیسهای جبری، زیرمجموعهها یا حتی زیرنویسها را بهوسیله پارامترها میتوان تعریف کرد. اجزای تشکیل دهنده یک پارامتر شامل عدد ثابت و ماتریس بوده و از آنجایی که اندازه یا مقدار دقیق آنها از قبل تعیین شده است؛ میتوان از پارامترها برای حل دقیقتر مسئله یا پروژه اجرایی کمک گرفت. تکه کد زیر، نحوه تعریف پارامتر را نشان میدهد.
Parameter ParameterName/Value/;
برای درک بهتر، فرض کنید میخواهیم یک پارامتر به نام N با مقدار 0/1 تعریف کنیم. در این صورت خواهیم داشت:
Parameter N/0.1/
یا در مثالی دیگر، پارامتر A را با اندیس i که از 1 تا 3 متغیر است؛ در نظر بگیرید. با فرض این که i را قبلاً با استفاده از دستور Set در قسمت مجموعهها تعریف کردهایم؛ خواهیم داشت:
Parameter A(i) /1 2,2 3,3 4/;
دوستان عزیز، گاهی نیاز است؛ مقدار پارامترهای جدید براساس مقدار پارامترهای قبلی، یا برعکس تعریف شود. برای این که در این موارد دچار اشتباه نشوید؛ بیایید یک پارامتر را بر اساس پارامتر قبلی تعریف شده، هم ایجاد کنیم:
Parameter B(i);
A(i)=B(i)+1;
جداول
دوستان در ادامه آموزش گمز، توجه داشته باشید که جالبترین بخش تعاریف گمز میتواند همین تعریف جداول باشد. ما در این بخش، دادههای چند بعدی را با استفاده از جدول نشان میدهیم.
Table TableName/Value/;
برای مثال، یک داده بهنام Z در نظر میگیریم که بهاندیسهای i و j وابسته باشد. با فرض اینکه متغیرها در بازه 1 تا 3 تعریف شده باشند؛ یک ماتریس 4 در 4 بهشرح زیر، برای نمایش Z خواهیم داشت:
Table a(i,j)
اسکالرها
با هدف وارد کردن پارامترهای پروژه یا مسئله در حال حل، از دادههای واسطهای استفاده خواهیم کرد که در طول انجام فرآیند، ثابت باشند. تکه کد مربوط بهدستور اسکالر، در ادامه آورده شده است.
Scalar ParameterName/Value or the Quantity/;
برای مثال یک کمیت بهنام ایران، تعریف کرده و مقدار آن را برابر با 20000 قرار میدهیم.
Scalar TABRIZ/20000/;
نحوه کدنویسی هر کدام از انواع متغیرهای داخل جدول بالا، در محیط برنامه نویسی گمز بهشرح زیر انجام میگیرد.
variable x(j) ;
free variable x(j) ;
positive variable x(j) ;
nonnegative variable x(j) ;
negative variable x(j) ;
integer variable x(j) ;
binary variable x(j) ;
semicont variable x(j) ;
semiint variable x(j) ;
sos1 variable x(j) ;
sos2 variable x(j) ;
تابع هدف همان صورت مسئله است که میتواند یک مسئله پیچیده ریاضی یا یک پروژه علمی باشد. محدودیتها شامل تمام حلقههای اما و اگر و شروط ممکن بوده و معادلات یا نامعادلات شامل تمام حساب و کتابهای جبری ریاضی میباشند و آن هم بهاین دلیل است که اگر گروهی از معادلات یا نامعادلات دارای ساختار جبری همسان در یک شرایط باشند؛ گمز طی یک فرآیند، تمام دادههای این گروه را همزمان ایجاد کرده و در صف اجرا قرار میدهد.
نحوه تعریف معادلات، هم در حالت کلی شبیه به تعریف سایر عناصر میباشد. تنها تفاوت این است که تنوع معادلات فراوان بوده و نیازمند پیشنیازهای ریاضی فراوان است. برای تعریف معادلات یا Education ها از اجزای زیر استفاده خواهیم کرد:
به مثال زیر که یکی از نمونه معروفترین مسائل ریاضی، مسئله حمل و نقل رانندگان بوده؛ توجه کنید:
Educations
cost define objective function
supply(i) observe supply limit at plant i
demand(j) satisfy demand at market j;
model transport /all/;
برنامه نویسان حرفهای بهجای دستور بالا، از تکه کد زیر برای تعریف مدل استفاده میکنند:
model transport / cost, supply, demand / ;
البته این پایان کار نیست و بعد از تعریف مدل باید روشهای حل یا Solveهای پروژه تعیین شود. لیستی از انواع Solveها در ادامه آورده شده است.
دومین خروجی برنامه گمز، دو عدد نقشه مرجع مستندسازی است که شامل انواع آنالیزها با هدف عیب یابی نهایی پروژه، برای برنامه نویس ارائه میشوند. پس از پشت سر گذاشتن این مرحله از خروجی، با فهرست معادلات، انواع مختلف دادههای آماری و گزارشهای وضعیت مدل بر روی انواع الگوریتمها را مشاهده کرده و در مورد روش بهینه خود تصمیم گیری خواهید کرد.
مقدمه آموزش گمز
برای بسیاری از دانشجویان، این باور غلط وجود دارد که محاسبات مربوط به مدلسازیهای خود را باید بهصورت دستی انجام دهند و در خوشبینانهترین حالت ممکن، نهایتاً از ماشین حساب استفاده میکنند. درحالی که این روش بسیار اشتباه است و هیچ اشکالی ندارد که شما عزیزان، برای تدوین پروژههایتان، از نرم افزارهای محاسباتی و مدلسازی استفاده کنید. چرا که اولویت اصلی، یافتن بهینهترین و مقرون بهصرفهترین پاسخها است. پس عزیزان من، پیشنهاد میکنم که برای شیرینتر کردن این مسیر و راحتی کار خودتان از نرم افزارهای کمکی استفاده کنید.نرم افزار گمز چیست؟
یکی از نرم افزارهای کمکی برای انجام مدلسازیهای ریاضی در ابعاد بزرگ دادهای یا اصطلاحاً در سطح کلان داده، نرم افزار گمز میباشد. نام تجاری این نرم افزار، GAMS بوده؛ اصطلاحاً سیستم مدلسازی جبری عمومی یا General Algebraic Modeling System نیز نامیده میشود و به صورت یک نوع نرم افزار کاربردی بهینه سازی در ابعاد گسترده، جهت حل مدل های پیچیده و بزرگ ریاضی ارائه شده است. گمز توانایی یافتن پاسخ یا حل مسائل مربوط بهمباحث مدلهای خطی، غیرخطی، مختلط و غیره را دارد و این کار را با استفاده از انواع الگوریتمها انجام میدهد.در هر مرحله از استفاده نرم افزار گمز، کاربر انتخاب میکند که با استفاده از چه روشی پاسخ بهینه پروژه بهدست بیاید. در نهایت هر کدام از دانشجویان و محققان میتوانند پاسخهای یافته از چندین الگوریتم را با یکدیگر مقایسه کنند و به یک تصمیم بهینه برسند.
هدف نرم افزار گمز چیست؟
در آموزش گمز، کاملاً بهاین نکته پی خواهید برد که این نرم افزار با هدف آنالیز و دستهبندی دادههای پیچیده مسئله، تست و بررسی انواع الگوریتمها بر روی دادههای مسئله در انواع حالات و زوایا، یافتن بهینهترین پاسخ ممکن و در نهایت رسیدن به مطلوبترین حالت تصمیمگیری ارائه شده است. این نرم افزار، بهشرکتها و پروژههایی که با محددودیت منابع، کمبود سرمایه و نیروی کار مواجه هستند؛ کمک میکند تا درحداقل زمان و با صرف کمترین هزینه پروژههای خود را عملیاتی کنند.قابلیت های نرم افزار گمز
دوستان عزیز، شاید برای شما اتفاق نیوفتاده باشد ولی برای امثال دهه شصتیها و دهه هفتادیها بسیار پیش آمده است که روزها و حتی ماهها از زمان خود را صرف مدلسازی با انواع الگوریتمهای موجود و تصمیمگیری برای یافتن بهترین الگوریتم کردهاند. این در حالی است که گمز با داشتن قابلیت برنامهنویسی چندزمانه و بهینهسازی چند الگوریتم بهصورت همزمان، باعث صرفهجویی در زمان و جلوگیری از اتلاف وقت در کسب نتایج مطلوب میشود.صرفهجویی در زمان برای کاربران گمز، یکی از دستاوردهای برنامه میباشد. دیگر ویژگی آن، داشتن Toolbaxهای متنوع آماده جهت برنامه نویسی آسان و کاهش پیچیدگی یا بهحداقل رساندن خطاهای پیاده سازی در ارائه مدل نهایی است. بهاین ترتیب، هر دانشجو میتواند بدون داشتن استرس از خطاهای احتمالی فقط و فقط بر روی نحوه پیاده سازی عملیات تمرکز نماید. با این مزیت، در هزینههای کاربران نیز صرفهجویی میشود.
دیگر ویژگی اصلی گمز این است که در این نرم افزار قدرتمند، کلیه گزینههای پیشنهادی موجود که توسط این نرم افزار، ارائه میگردد؛ قابل انتقال از یک سیستم به سیستم دیگر بوده و بعد از اتمام کار، کاربر میتواند میتواند هر کدام از آن راه حلها را که مایل بود؛ از یک سیستم اولیه به سیستمهای دیگر منتقل کرده و بعد از انجام تغییرات برنامه پیاده سازی کند. همانطور که گفتیم، نرم افزار گمز قابلیتهای فراوانی دارد اما اگر کار با این نرم افزار را بلد نیستید نگران نباشید! ما به شما مجموعه آموزشهای گمز فرادرس را پیشنهاد میدهیم که با استفاده از آنها میتوانید گمز را به صورت حرفهای یاد بگیرید:
ویژگی اصلی گمز
یکی از خصوصیات یا ویژگیهای اصلی نرم افزار گمز این است که اصول زبان برنامه نویسی آن با قواعد و اصول دیگر زبانهای برنامه نویسی مشابه میباشد. پس دوستان عزیزم، هیچ نگران نباشید که کدنویسی گمز برای افرادی که دانشجوی رشتههای کامپیوتر هستند یا قبلاً کدنویسی کردهاند؛ بسیار آسان خواهد بود. کدهای تولیدشده در آن، قابلیت مهم داکیومنت شدن را دارند. به نحوی که مدرسان یا برنامه نویسان، معمولاً در انتهای هر سطر از دستورات برنامه، توضیحات مختلفی را برای درک بیشتر درج میکنند.سیستم مورد نیاز برای نصب گمز
دوستان و همراهان گرامی، نرم افزار گمز بسیار منعطف بوده و قابل نصب بر روی انواع محیطهای سیستم عامل از جمله ویندوز 7،8.1،10 Windows و Windows Xp و غیره میباشد. بهراحتی میتوانید با دنبال کردن مراحل نصب، آن را نصب کرده و اجرا کنید. آخرین ورژن ارائه شده این نرم افزار، ورژن 28 با دو ویرایش موجود، است که در دو نسخه 64 و 32 بیتی قابل نصب بر روی سیستم کامپیوترهای PC یا لپ تاپ خواهد بود. پس از نصب برنامه و استارت نرم افزار، صفحه زیر برایتان لود میگردد.ساختار مدل های ایجاد شده در نرم افزار گمز
قبل از اینکه بخواهید در محیط گمز شروع به برنامه نویسی کنید؛ ابتدا بهتر است بدانید که هر کدام از مدلهای ساخته شده در آن دارای 10 فاکتور زیر هستند. قبل از شروع برنامه نویسی، ابتدا باید راجب اجزای اصلی مدلهای گمز، تحقیق کرده و اطلاعات کافی داشته باشید. در ادامه، ضمن ارائه جدول، به آموزش هر کدام از 10 فاکتور اصلی مدلهای گمز پرداخته شده است. شما میتوانید طی 4 مرحله آموزش گمز را برای جمعبندی کنید.مرحله اول - تعریف مجموعه ها
شامل گروهی از اهداف، دادههای مسئله و غیره است که میتوانند به صورت گروهی از اعداد، اشیا یا هر نوع داده پیوسته یا ناپیوسته تعریف شوند. مجموعهها همان اندیسهای نمایش جبری مدلها را تشکیل داده و برای تعریف آنها در گمز، از دستورهای Set و Sets استفاده میشود. دستور کلی تعریف مجموعه، در ادامه آمده است.Set setname/set members/;
حال هرکدام از مجموعههای زیر را در نظر بگیرید.
کدنویسی هر کدام از مجموعههای بالا در محیط گمز، به شرح زیر خواهد بود.
set X /x1,x2,x3/;
set A productes/x,y,z/;
set B/1*50/;
set Daneshjuyan /neda, yasi, zahra, sara,taraneh/;
set row /row1*row20/;
نکته مهم: برخلاف بسیاری از زبانهای برنامه نویسی، گمز بهحروف کوچک و بزرگ حساس نیست.
مرحله دوم- تعریف داده ها
دادههای یک مدل، تعدادی از پارامترها، متغیرها، جداول و اسکالرها را شامل میشوند که در بخشهای مجزا، بهتوضیح هرکدام خواهیم پرداخت. با ما همراه باشید.پارامترها
مؤلفههای تعیین کننده حالات مسئله، همان پارامترها هستند. مثل فلگها یا کلیدهای روشن و خاموش و غیره. در گمز میتوان انواع اندیسهای جبری، زیرمجموعهها یا حتی زیرنویسها را بهوسیله پارامترها میتوان تعریف کرد. اجزای تشکیل دهنده یک پارامتر شامل عدد ثابت و ماتریس بوده و از آنجایی که اندازه یا مقدار دقیق آنها از قبل تعیین شده است؛ میتوان از پارامترها برای حل دقیقتر مسئله یا پروژه اجرایی کمک گرفت. تکه کد زیر، نحوه تعریف پارامتر را نشان میدهد.
Parameter ParameterName/Value/;
برای درک بهتر، فرض کنید میخواهیم یک پارامتر به نام N با مقدار 0/1 تعریف کنیم. در این صورت خواهیم داشت:
Parameter N/0.1/
یا در مثالی دیگر، پارامتر A را با اندیس i که از 1 تا 3 متغیر است؛ در نظر بگیرید. با فرض این که i را قبلاً با استفاده از دستور Set در قسمت مجموعهها تعریف کردهایم؛ خواهیم داشت:
Parameter A(i) /1 2,2 3,3 4/;
دوستان عزیز، گاهی نیاز است؛ مقدار پارامترهای جدید براساس مقدار پارامترهای قبلی، یا برعکس تعریف شود. برای این که در این موارد دچار اشتباه نشوید؛ بیایید یک پارامتر را بر اساس پارامتر قبلی تعریف شده، هم ایجاد کنیم:
Parameter B(i);
A(i)=B(i)+1;
جداول
دوستان در ادامه آموزش گمز، توجه داشته باشید که جالبترین بخش تعاریف گمز میتواند همین تعریف جداول باشد. ما در این بخش، دادههای چند بعدی را با استفاده از جدول نشان میدهیم.
Table TableName/Value/;
برای مثال، یک داده بهنام Z در نظر میگیریم که بهاندیسهای i و j وابسته باشد. با فرض اینکه متغیرها در بازه 1 تا 3 تعریف شده باشند؛ یک ماتریس 4 در 4 بهشرح زیر، برای نمایش Z خواهیم داشت:
Table a(i,j)
با هدف وارد کردن پارامترهای پروژه یا مسئله در حال حل، از دادههای واسطهای استفاده خواهیم کرد که در طول انجام فرآیند، ثابت باشند. تکه کد مربوط بهدستور اسکالر، در ادامه آورده شده است.
Scalar ParameterName/Value or the Quantity/;
برای مثال یک کمیت بهنام ایران، تعریف کرده و مقدار آن را برابر با 20000 قرار میدهیم.
Scalar TABRIZ/20000/;
مرحله سوم- تعریف متغیرها
همراهان گرامی، در علوم کامپیوتر که شاخهای از رشته ریاضی میباشد؛ متغیرها همان مجهولات مسئله هستند و همواره، انواع متغیرها در گروه متغیرهای آزاد مثبت، منفی، غیر منفی و غیره قرار میگیرند. در جدول زیر، خلاصهای از انواع متغیرها آورده شده است.نحوه کدنویسی هر کدام از انواع متغیرهای داخل جدول بالا، در محیط برنامه نویسی گمز بهشرح زیر انجام میگیرد.
variable x(j) ;
free variable x(j) ;
positive variable x(j) ;
nonnegative variable x(j) ;
negative variable x(j) ;
integer variable x(j) ;
binary variable x(j) ;
semicont variable x(j) ;
semiint variable x(j) ;
sos1 variable x(j) ;
sos2 variable x(j) ;
مرحله چهارم- تعریف معادلات
عزیزان، بهمهمترین بخش از آموزش گمز، خوش آمدید. قبل از شروع عملیات مدلسازی، ابتدا باید انواع معادلات یا نامعادلات ریاضی، توابع هدف و محدودیتهای مسئله را تعیین کنیم. یکی از مشکلات اساسی دانشجویان در حین برنامه نویسی این است که از قبل، این سه فاکتور را تنظیم نمیکنند و برای همین بعداً در حین فرآیند، دچار سردرگمی میشوند.تابع هدف همان صورت مسئله است که میتواند یک مسئله پیچیده ریاضی یا یک پروژه علمی باشد. محدودیتها شامل تمام حلقههای اما و اگر و شروط ممکن بوده و معادلات یا نامعادلات شامل تمام حساب و کتابهای جبری ریاضی میباشند و آن هم بهاین دلیل است که اگر گروهی از معادلات یا نامعادلات دارای ساختار جبری همسان در یک شرایط باشند؛ گمز طی یک فرآیند، تمام دادههای این گروه را همزمان ایجاد کرده و در صف اجرا قرار میدهد.
نحوه تعریف معادلات، هم در حالت کلی شبیه به تعریف سایر عناصر میباشد. تنها تفاوت این است که تنوع معادلات فراوان بوده و نیازمند پیشنیازهای ریاضی فراوان است. برای تعریف معادلات یا Education ها از اجزای زیر استفاده خواهیم کرد:
-
نام و دامنه هر معادله
-
انواع شروط و حلقههای معادله
-
بیان معادله در سمت چپ و راست دستور
-
استفاده از اپراتور رابطه ای: =l= ، =g=، =e=
-
علامت ‘..’
به مثال زیر که یکی از نمونه معروفترین مسائل ریاضی، مسئله حمل و نقل رانندگان بوده؛ توجه کنید:
Educations
cost define objective function
supply(i) observe supply limit at plant i
demand(j) satisfy demand at market j;
مرحله پنجم - عبارت های حل مجموعه معادلات
دوستان عزیزم آیا میدانید کلمه مدل در نرم افزار گمز بهچه معنا میباشد؟ بسیار جالب است که بدانید مدل در این نرم افزار بهمعنای گروه یا مجموعهای قطاروار از معادلات مسئله بوده و حالت کلی دستور آن، بهشکل زیر خواهد بود:model transport /all/;
برنامه نویسان حرفهای بهجای دستور بالا، از تکه کد زیر برای تعریف مدل استفاده میکنند:
model transport / cost, supply, demand / ;
البته این پایان کار نیست و بعد از تعریف مدل باید روشهای حل یا Solveهای پروژه تعیین شود. لیستی از انواع Solveها در ادامه آورده شده است.
Output ها در محیط نرم افزاری گمز
اولین خروجی دز گمز، اکوهای پروژه خواهند بود. در بخش پرینت اکو، یک کپی از ورودیهای مسئله در خروجی بهنمایش گذاشته میشود. در این مرحله، خطاهای اجرا از طرف مجموعه گمز، به برنامه نویس ابلاغ میگردد. خطاها رمزگذاری شده هستند؛ معمولاً طی یک لاین توضیح با **** شروع شده و حاوی “$” هستند. کاربر ابتدا باید بهخطاهای موجود رجوع کرده؛ بهبرطرف کردن آنها بپردازد و سپس مراحل ادامه پیاده سازی را طی کند.دومین خروجی برنامه گمز، دو عدد نقشه مرجع مستندسازی است که شامل انواع آنالیزها با هدف عیب یابی نهایی پروژه، برای برنامه نویس ارائه میشوند. پس از پشت سر گذاشتن این مرحله از خروجی، با فهرست معادلات، انواع مختلف دادههای آماری و گزارشهای وضعیت مدل بر روی انواع الگوریتمها را مشاهده کرده و در مورد روش بهینه خود تصمیم گیری خواهید کرد.
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: