آموزش GAMS – قسمت ۱۳ : خطایابی اولیه در GAMS

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

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

آخرین اخبار مهندسی صنایع و مدیریت

پایان نامه ارشد زنجیره تامین
انجام پایان‌نامه مهندسی صنایع ارشد در حوزه زنجیره تأمین؛ یک راهنمای جامع و تخصصی برای دانشجویان
زمان مطالعه: 5 دقیقه
استخراج مقاله از پایان نامه مهندسی صنایع
آموزش استخراج مقاله از پایان‌نامه مهندسی صنایع | راهنمای تخصصی برای دانشجویان صنایع
قیمت پایان نامه مهندسی صنایع
هزینه انجام پایان نامه مهندسی صنایع در سال ۱۴۰۴
زمان مطالعه: 5 دقیقه
انتخاب موضوع پایان نامه
موضوعات پایان‌نامه مهندسی صنایع ۱۴۰۴ + ۵۰ موضوع جدید و قابل استخراج مقاله ISI
زمان مطالعه: 5 دقیقه
انتخاب موضوع پایان نامه مهندسی صنایع
انتخاب موضوع پایان نامه مهندسی صنایع از صفر تا صد، راهنمای کامل برای دانشجویان
مصاحبه استخدام مهندسی صنایع
مصاحبه استخدام مهندسی صنایع، ۴ سرفصل مهم و هرآنچه که باید بدانید
زمان مطالعه: 3 دقیقه

خطایابی در GAMS چیست؟

خطایابی به معنای پیدا کردن و رفع اشکالات در کد GAMS است که مانع اجرای صحیح مدل می‌شوند. GAMS خطاها را در فایل خروجی (.lst) یا پنجره Log گزارش می‌دهد. این خطاها ممکن است به دلیل مشکلات نگارشی (Syntax Errors) یا منطقی (Logical Errors) باشند.

انواع خطاها

  1. خطاهای نگارشی (Syntax Errors):
    • مشکلات در ساختار کد، مثل اشتباه در نوشتن دستورات یا فراموش کردن سمی‌کالن (;).
    • مثال: نوشتن Set به‌جای Sets.
  2. خطاهای منطقی (Logical Errors):
    • مدل درست اجرا می‌شود، اما نتایج نادرست است (مثلاً به دلیل محدودیت‌های ناسازگار).
    • مثال: تقاضای بیشتر از ظرفیت انبار.
  3. خطاهای حل‌کننده:
    • مدل قابل‌حل نیست (مثلاً Infeasible یا Unbounded).
    • مثال: محدودیت‌هایی که هیچ راه‌حلی ندارند.

چگونه خطاها را پیدا کنیم؟

GAMS خطاها را در فایل خروجی (.lst) یا پنجره Log در GAMS Studio گزارش می‌دهد. برای خطایابی:

  1. پنجره Log: پیام‌های خطا (Error Messages) را بررسی کنید. خطاها با کد (مثل *** Error 149) و توضیح نمایش داده می‌شوند.
  2. فایل .lst: جزئیات خطا، شماره خط، و توضیحات را نشان می‌دهد.
  3. نکات کلیدی:
    • شماره خط (Line Number) را بررسی کنید.
    • پیام خطا را بخوانید (مثل Unknown symbol برای متغیر تعریف‌نشده).
    • از کامنت‌ها برای غیرفعال کردن بخش‌های کد و تست استفاده کنید.

مثال عملی: خطایابی در مسئله حمل‌ونقل

فرض کنید کد زیر برای کمینه کردن هزینه حمل کالا نوشته شده، اما خطا دارد:

* مدل حمل‌ونقل با خطا
Sets
  i "شهرهای مقصد" /Tehran, Shiraz, Isfahan/;

Parameters
  c(i) "هزینه حمل" /Tehran 50, Shiraz 100, Isfahan 80/
  d(i) "تقاضا" /Tehran 200, Shiraz 300, Isfahan 250/
  s "ظرفیت انبار" /۵۰۰/;

Variables
  x(i) "مقدار حمل"
  z "هزینه کل";
Positive Variable x;

Equations
  Cost "هزینه کل"
  Demand(i) "تقاضای هر شهر"
  Supply "محدودیت ظرفیت";

Cost z =e= sum(i, c(i)*x(i));  * خطا: سینتکس نادرست
Demand(i).. x(i) =g= d(i)
Supply.. sum(i, x(i)) =l= s;

Model Transport /all/;
Solve Transport using LP minimizing z;

Display x.l, z.l;

خطاها و رفع آن‌ها

  1. خطای نگارشی:
    • خط: Cost z =e= sum(i, c(i)*x(i));
    • مشکل: سینتکس نادرست (Cost z اشتباه است، باید Cost.. باشد).
    • رفع: به Cost.. z =e= sum(i, c(i)*x(i)); تغییر دهید.
  2. خطای نگارشی دیگر:
    • خط: Demand(i).. x(i) =g= d(i) (بدون سمی‌کالن).
    • مشکل: سمی‌کالن (;) فراموش شده.
    • رفع: به Demand(i).. x(i) =g= d(i); تغییر دهید.

کد اصلاح‌شده

* مدل حمل‌ونقل اصلاح‌شده
$Ontext
این مدل هزینه حمل کالا را کمینه می‌کند.
$Offtext

Sets
  i "شهرهای مقصد" /Tehran, Shiraz, Isfahan/;

Parameters
  c(i) "هزینه حمل (هزار تومان)" /Tehran 50, Shiraz 100, Isfahan 80/
  d(i) "تقاضا (واحد)" /Tehran 200, Shiraz 300, Isfahan 250/
  s "ظرفیت انبار (واحد)" /۵۰۰/;

Variables
  x(i) "مقدار حمل به هر شهر (واحد)"
  z "هزینه کل (هزار تومان)";
Positive Variable x;

Equations
  Cost "هزینه کل"
  Demand(i) "تقاضای هر شهر"
  Supply "محدودیت ظرفیت انبار";

Cost.. z =e= sum(i, c(i)*x(i));
Demand(i).. x(i) =g= d(i);
Supply.. sum(i, x(i)) =l= s;

Model Transport /all/;
Solve Transport using LP minimizing z;

Display x.l, z.l;

خروجی نمونه

در فایل .lst:

x.l(Tehran)  200.000
x.l(Shiraz)  300.000
x.l(Isfahan) 250.000
z.l          29500.000
  • توضیح: مدل اصلاح‌شده درست اجرا می‌شود و هزینه کل ۲۹۵۰۰ هزار تومان است.

نکات مهم در خطایابی

  • پیام‌های خطا: کد خطا (مثل Error 149) و توضیحات را در Log یا .lst بخوانید.
  • شماره خط: خطای دقیق را با شماره خط پیدا کنید.
  • تست تدریجی: بخش‌های کد را با Display یا کامنت‌گذاری ($Ontext/$Offtext) تست کنید.
  • محدودیت‌های منطقی: مطمئن شوید تقاضا و ظرفیت سازگارند (مثلاً تقاضای کل ≤ ظرفیت).

ویدئوی آموزشی (۲ دقیقه)

در ویدئوی این قسمت:

  • مفهوم خطایابی را با یک نمودار ساده (کد → خطا → رفع) توضیح می‌دهیم.
  • کد با خطا را در GAMS Studio اجرا می‌کنیم و پیام خطا را نشان می‌دهیم.
  • کد اصلاح‌شده را اجرا و خروجی Display x.l, z.l را نمایش می‌دهیم.

لینک ویدئو: [لینک آپارات یا یوتیوب، پس از آپلود اضافه کنید]

نکات کلیدی

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

گام بعدی

در قسمت بعدی، با وارد کردن داده‌ها از اکسل آشنا می‌شوید تا مدل‌های بزرگ‌تر را مدیریت کنید. فایل‌های نمونه و ویدئوهای این دوره را از سایت بهینه‌یار دانلود کنید!

کلمات کلیدی: آموزش GAMS، خطایابی در GAMS، رفع خطا در مدل‌سازی، GAMS برای مبتدیان، بهینه‌یار

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *