آموزش برنامه نویسی در گمز GAMS
زبانهای برنامه نویسی بسیاری در دنیا وجود دارند که اغلب آنها نیز توسط افراد مختلف مورد استفاده قرار میگیرند. برخی از این برنامهها برای ساخت یک اپلیکیشن دیگر مورد استفاده قرار میگیرند و برخی نیز تنها برای تحلیل دادهها و… مورد استفاده قرار میگیرند. در خصوص زبان برنامه نویسی متلب، تاکنون مقالات مختلفی را در متلب آنالیز منتشر کردهایم و اکنون تصمیم داریم تا به آشنایی با آموزش برنامه نویسی در گمز GAMS بپردازیم. با وجود اینکه این دو زبان برنامه نویسی کاملا با یکدگیر متفاوت هستند اما برخی از کاراییهای آنها نیز شبیه به یکدیگر است.
زبان برنامه نویسی گمز GAMS در واقع مخفف General Algebraic Modeling System است که معنای سیستم عمومی مدل سازی جبری را دارد و از طریق آن میتوانید اعمال ریاضی مختلفی را انجام دهید. کاربران از طریق گَمز میتوانند مدل سازیهای بسیار پیشرفتهای را برای بهینه سازیهای ریاضی انجام دهند. در واقع این زبان برنامه نویسی برای مدل سازی و حل خطی و غیر خطی طراحی شده است و کاربران از آن میتوانند برای مشکلات بهینه سازی اعداد صحیح ترکیب شده استفاده کنند. این سیستم برای طراحیهای پیچیده و مدل سازی اپلیکیشنها مورد استفاده قرار میگیرد و به کاربران این امکان را میدهد که مدلهای بسیار بزرگی را بسازند که حتی قابلیت سازگاری با شرایط مختلف را نیز دارند. یکی از مزیتهای اصلی این برنامه به پرتابل بودن آن باز میگردد که از طریق آن کاربران میتوانند برنامه را از یک کامپیوتر به کامپیوتر دیگر انتقال دهند و برنامه نویسی خود را در آن دستگاه ادامه دهند.
گَمز اولین برنامه مدل سازی جبری است که اصطلاحا AML نامیده میشود و البته در ساخت آن نیز از نسل چهارم زبان برنامه نویسی استفاده شده است. GAMS از محیط توسعه یکپارچه (IDE) و گروه سوم شخص حل کنندهها بهره میبرد. حل کنندههایی که درون GAMS قرار گرفتهاند، بدین شرح هستند: BARON، COIN-OR، CONPOT، CPLEX، DICOPT، GUROBI، MOSEK، SNOPT، SULUM و XPRESS.
GAMS به کاربران این امکان میدهد که الگوریتمهای ترکیبی را پیاده سازی کنند و برای انجام این کار نیز قادر خواهند بود حل کنندههای مختلف (حل کنندههایی که در فوق به آنها اشاره شد) را با یکدگیر ترکیب کنند و در واقع یک hybrid Algorithms بسازند. مدلهای ارایه شده به صورت خلاصه قابل توضیح هستند و به شکلی نوشته میشوند که انسانها نیز قادر به خواندن آنها باشند. GAMS فرمولهایی را ارایه میدهد که در NEOS شاهد آنها هستیم (NEOS یک سرویس اینترنت محور است که از طریق آن کاربران میتوانند اطلاعات و مشکلات عددی خود را حل کنند).
شاید برایتان جالب باشد که بدانید در ابتدا زبان برنامه نویسی گَمز GAMS برای عمل اقتصاد و مدیریت طراحی و ساخته شد بود اما مدتی بعد به دلیل استفاده افراد بسیاری از این برنامه، گَمر در مهندسی و بخشهای مختلف علم نیز مورد استفاده قرار گرفت.
شاید بتوان گفت زبان برنامه نویسی GAMS با هدف حل کردن مشکلات عددی روزمره در زندگی عادی ساخته شده است و کاربران از طریق آن میتوانند مشکلات خود در زمینه مهندسی و علم را نیز برطرف کنند. در واقع نیاز به برنامهای نظیر گَمز زمانی احساس شد که برای حل بسیاری از مشکلات عددی نیاز به دانش گستردهای وجود داشت و کاربران نیز تنها ابزارهایی غیر قابل اطمینان را در دسترس داشتند. اکنون میتوان از آموزش برنامه نویسی در گمز GAMS در زمینه امور مالی، اقتصاد و مهندسی شیمی استفاده کرد و در حقیقت این شاخههای علم نیز با اعداد سر و کار دارند.
در حقیقت ایده توسعه زبان برنامه نویسی GAMS از محدودیتهایی برخواسته است که در زمینه اقتصادی وجود داشت و حتی بانک جهانی نیز با چنین مشکلاتی دست و پنجه نرم میکرد. اگر شرایطی را برای مثال فرض کنیم که در سال ۱۹۷۰ اقتصادانان و افراد خبره در زمینه آمار برای حل برخی از مشکلات میبایست سیستمی را ارایه میدانند و البته آنها راهی جز استفاده از آخرین دستاوردهای موجود نداشتند و از طریق جدیدترین ابزارهای موجود برای حل یک اقتصاد گسترده چند بخشی استفاده میکردند و البته مجبور بودند تا مدل سازیهای گستردهای را در زمینه کشاورزی، فلزات، کودها، انرژی، میزان مصرف آب و سایر بخشها انجام دهند. عملا انجام چنین کاری برای دستیابی به موفقیت کار سختی بود. با وجود اینکه این گروهها نیز میتوانستند به موفقیت دست یابند، اما رسیدن به این موفقیت نیازمند وقت زیاد و کتابهای راهنمای مختلف بود که احتمال خطا در تمام آنها نیز وجود داشت.
در سمینارها نیز مدلسازان میبایست از مدلهای خود دفاع میکردند که این کار با وجود فرآیندی که برای تهیه آنها سپری شده بود و مشکلات زمانی و مالی، کاری تقریبا غیر عقلانی بود. در مقابل چنین مدلهایی نیز قادر نبودند تا در شرایط دیگر مورد استفاده قرار بگیرند و برای انجام چنین کاری نیز به دانش برنامه نویسی گستردهای نیاز بود و شکل دادهها و متدها به صورت پرتابل نبودند. استفاده از ماتریسها در حل برنامههای خطی اهمیت نامگذاری ردیفها و ستونها را در یک روش استوار نشان میداد. اما در حال حاضر تقریبا تمام مشکلات به پایان رسیدهاند و شما میتوانید از طریق برنامه GAMS کارهای بسیاری را سریعا انجام دهید که در گذشته برای انجام آنها نیاز به زمان بسیار زیادی بود.
همان طور که مطالعه کردید، در این مقاله با آموزش برنامه نویسی در گمز GAMS و تاریخچه آن آشنا شدیم و به امید خدا در مقالههای آتی به آموزش این زبان برنامه نویسی خواهیم پرداخت. پس همچنان همراه متلب آنالیز باشید.