۲

Compilation Output

خروجی های مربوط به کامپایل جزء جدایی ناپذیری از خروجی GAMS می باشند. نتیجه ی حل مدل هر چه که باشد، بخش Compilation تغییری نخواهد کرد. به دیگر سخن، این قسمت تنها به کد نوشته شده بستگی دارد.

این قسمت شامل کپی کامل از برنامه ی نوشته شده و توضیحات مختصری پیرامون خطاهای موجود در آن (اگر حل برنامه با خطا مواجه شود) می باشد.

در پنجره ی navigation مدلی که حل کرده اید، روی Compilation دبل کلیک کنید. با scroll کردن نشان گر ماوس به سمت پایین حرکت کنید. مشاهده خواهید کرد که تمامی کدهای ورودی که نوشته اید با ذکر شماره ی سطر مربوطه آورده شده اند. همچنین در انتها زمان مربوط به Compile کردن مدل (که در اینجا صفر ثانیه) است با دقت هزارم ثانیه نمایش داده می شود. دقت کنید که شماره ی مربوط به comment های پیوسته نظیر $ontext و $offtext ذکر نخواهد شد.

compilation-example1


بهبود خروجی Compilation
کدهای شرطی می توانند این بخش از خروجی را دستخوش تغییراتی کنند. به عنوان مثال، فرض کنید می خواهیم نامِ تمامی نمادهایی که در کد بکار برده ایم، همراه با سطری که در آن استفاده شده اند و توضیحات هر کدام را مشاهده نماییم. کافیست که در ابتدای برنامه ای که نوشته ایم شرط $onsymxref را تایپ و مدل را Run کنیم. در مثال مورد بررسی ما (مثال کاربردی ۱) این عمل منجر به شکل زیر خواهد شد:

improve-compilation

توجه!: یکی از فایده های این دستور می تواند راهنمایی شما به سمتِ پیدا کردن ریشه ای نمادهای به کار رفته به صورت خلاصه باشد. به طوری که می توان از آن به عنوان راهی برای پیدا کردن مشکلات مدل از جمله تخصیصات نادرست در متغیرها استفاده نمود. مثلاً فرض کنید متغیری به نام f در مدل دارید. پس از حل مدل دریافته اید که متغیر با کمال تعجب در همه جای مسئله مقدار صفر را اختیار کرده است! اگر به symbol listing مراجعه کنید و ببینید که این متغیر در کجای مسئله به کار رفته است ممکن است بفهمید که مشکل کار واقعاً کجای کار است.
دستورات شرطی، که موجب تغییر در بخش Compilation می شوند به شرح زیر می باشند:
$offlisting : این دستور در هر جای برنامه نوشته شود از آن قسمت به بعد در بخش Compilation نمایش داده نمی شود. این دستور به نوعی از شلوغ شدن فایل lst جلوگیری می کند.
$onlisting : این دستور عکس دستور بالا می باشد و در هر جای مدل به کار برده شود، از آن قسمت به بعد در Compilation نشان داده می شود.
مثال زیر می تواند کاربردی ترکیبی از این دستورات باشد:

compliation-improvement

که پس از حل مدل، بخش Compilation به صورت زیر در خواهد آمد:

improve-compilation-example1

$onsymxref : همانطور که قبلاً بیان شد، این دستور در هر سطری که قرار بگیرد، GAMS تمامی نماد ها و سمبل هایی که از آن سطر به بعد وجو دارند به تفکیک نوع، شماره ی سطوری که مورد استفاده قرار گرفته و … را نشان خواهد داد.
$offsymxref : این دستور عکس دستور بالا بوده و هر نمادی که پس از آن در برنامه آورده شده باشد را در تحلیل نمادها به کار نمی برد.
طبیعتاً این دو دستور را مانند دستورات قبل می توان به صورت ترکیبی به کار برد.
$onsymlist : اگر این دستور در هر سطری وارد شود از آن سطر به بعد، نام تمامی دستوات و نماد ها به کار رفته در برنامه به ترتیب حروف الفبای انگلیسی و به همراه توضیحات اضافی مربوطه، آورده خواهند.
$offsymlist : این دستور عکس دستور شرطی بالا عمل می کند.
با استفاده از دستور شرطی $onsymlist که در اولین سطر برنامه ی خود نوشته ایم، خروجی Compile به صورت زیر در آمده است.

compile-imrove

$Title : به وسیله ی این دستور شرطی می توان برای برنامه ی نوشته شده یک عنوان تعریف نمود. این عنوان تنها به منطور اطلاعات بیشتر به کاربران می باشد و فاقد هرگونه ارزش دیگریست.

compile-title

توجه! : در تمامی دستورهایی که در این بخش تشریح شد، علامت $ باید در اول سطر آورده شود. در غیر اینصورت منجر به Error از طرف GAMS می شود.


خدمت عزیزانی که آموزش گام به گام را از ابتدا همراه با ما شروع نموده اند توصیه می شود که پس از مطالعه و مرور این صفحه، جهت ادامه مراحل آموزش به بخش Equation Listing در نوار کناری سمت راست (منوی داینامیک دسته بندی) مراجعه نمایند.

با تشکر
مدیریت سایت gamsbook.ir

ایمیل: Support@gamsbook.ir
شماره تماس: ۳۳۲۵-۴۰۵—۰۹۱۹

 

2 دیدگاه در “Compilation Output

  1. با سلام . مدل من از نوع غیر خطی است و با minlp حل شده است.
    جواب زیر ارائه میشود
    infeasible solution. reduced gradient less than tolerance
    از طرفی عبارت زیر در تابع هدف (قسمت اول آن عدد صفر میشود با اینکه مقدارn بصورت مجموعه ای /۱و۲و۳و۴و۵ / تعریف شده است.
    Cobj=e=sum(n,(CF**ord(n))*sum(s,F(s,n)*C0(s,n)))
    سپاسگذارم از راهنمایی شما

    • سلام
      با این اطلاعاتی که دادین مدل شما نشدنی هست و همین باعث میشه که جواب تابع هدف شما صفر بشه و بقیه متغیرها هم صفر میکنه ضرورتاً. تحلیل کنین که چرا نشدنی شده (مشکل از مدله؟ از داده ها؟ کد نویسی؟ یا محدودیت های سالور؟)

پاسخ دهید

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