معرفی نرم افزار لینگو و کاربرد آن در جیره نویسی آبزیان
نویسنده : فرزاد آقاجانی(ورودی ۱۳۹۴ مهندسی منابع طبیعی - شیلات)
چکیده : نرمافزار Lingo علی رغم سادگی یادگیری، نرمافزار بسیار کاربردی و قابلاستفاده حتی در سطوح بالای مدیریتی است و در عین حال دارای قابلیتهای کاربرپسند (User Friendly) است که آن را به یکی از پرکاربردترین نرمافزارهای تحقیق در عملیات تبدیل کرده است. از این برنامه میتوان برای جیره نویسی غذای آبزیان نیز استفاده نمود.
مقدمه:
استفاده از رایانه برای فرمولاسیون غذا اولین بار در سال 1951 میلادی ثبت شد که در آن زمان F. V. Waugh (1951) مقالهای با عنوان "غذای گاوهای شیری با حداقل هزینه" (“The Minimum-Cost Dairy Feed”) را منتشر کرد. Dent و Casey (1967) اولین کتاب در خصوص جیره نویسی با رایانه با عنوان "برنامهریزی خطی و تغذیه حیوانات" (Linear Programming and Animal Nutrition) را تألیف نمودند.
نرمافزار لینگو چیست؟
بستههای نرمافزاری لیندو (Lindo) و لینگو (Lingo) توسط شرکت لیندو سیستمز (Lindo Systems Inc.) برای حل مسائل بهینهسازی در دانشگاهها، صنعت و تجارت طراحی شدهاند. لینگو ابزاری ساده برای بهرهگیری از قدرت برنامهریزی خطی و غیرخطی در فرموله کردن (فرمولاسیون) مسائل خیلی بزرگ بهصورت مختصر و تجزیهوتحلیل آنهاست. بهینهسازی به ما کمک میکند تا جوابی را با حداقل هزینه، حداکثر سود و غیره به دست آوریم. اغلب حل این مسائل با استفاده از منابع موجود و محدودیتها انجام می شود. لینگو زبانی جامع و فراگیر جهت تسهیل تمام مدل های بهینهسازی از مسائل تحقیق در عملیات گرفته تا اقتصاد مهندسی، شبیهسازی، کنترل کیفیت، کنترل پروژه و کنترل موجودی میباشد.
از قابلیتهای متعدد برنامه لینگو میتوان به قدرت برقراری ارتباط با نرمافزارهای صفحه گسترده و بانک های اطلاعاتی برای تبادل داده ها، توابع گسترده ریاضی، سادگی استفاده و بهرهگیری از روشهای حل (Solver) متنوع، قدرت تحلیل حساسیت و توانایی حل مدلهای غیرخطی اشاره نمود.
نرمافزار Lingo علی رغم سادگی یادگیری، نرمافزار بسیار کاربردی و قابلاستفاده حتی در سطوح بالای مدیریتی است و در عین حال دارای قابلیتهای کاربرپسند (User Friendly) است که آن را به یکی از پرکاربردترین نرمافزارهای تحقیق در عملیات تبدیل کرده است. از این برنامه میتوان برای جیره نویسی غذای آبزیان نیز استفاده نمود.
نصب نرمافزار:
نصب برنامه لینگو بهراحتی انجام میشود و نصب آن همانند بسیاری از نرمافزارها میباشد. میتوان نسخه Demo این نرمافزار را از سایت www.lindo.com بهصورت رایگان دریافت نمود. سایر نسخههای این نرمافزار و راهنمای کار با نرمافزار از همین سایت قابل خریداری است.
صفحه اصلی نرمافزار:
صفحه اصلی نرمافزار از سه بخش تشکیل شده است:
١- منو با نوار فهرست (Menu bar): این بخش شامل کلیه فرمانهای نرمافزار است که در بالای صفحه قابلمشاهده است. این منو همانند منوی سایر نرمافزارها است که شما از قبل با آنها آشنایی دارید. در بخش نوار فهرست (Menu bar) میتوان به گزینههای Window,Solver,Edit,File و Help دسترسی داشت.
۲- نوارابزار (Tool bars): این نوار در زیر نوار فهرست (Menu bar) قرار دارد که شامل میانبرهای (Short Cuts) موجود در نوار فهرست میباشد و کار کردن با آنها را در سایر نرمافزارها آموختهاید.
3- پنجره یا صفحه مدل نویسی: این پنجره به رنگ سفید مشاهده میشود که مدل برنامه طبق قواعد لینگو در این صفحه نوشته میشود.
شکل 1 - صفحه اصلی و بخشهای مختلف نرمافزار لینگو
هنگامی که هیچ صفحهای در لینگو باز نباشد، بسیاری از کلیدهای نوار فهرست و نوارابزار غیرفعال هستند؛ اما با باز کردن یک برنامه به زبان لینگو و اجرای آن تقریباً تمامی کلیدها فعال میشوند.
وارد کردن یک مدل در لینگو، شبیه تایپ کردن در یک محیط پردازشگر متنی، (مثلاً Micrsoft Word) است. وقتی در یک مدل، داده تایپ میکنید تقریباً باید تمامی آنچه را که بهصورت دستی نوشتهاید، وارد مدل نمایید. کاربر اطلاعات ورودی خود را در پنجره یا صفحه مدل نویسی وارد میکند. لینگو دارای دستورات ابتدایی ویرایش نظیر بریدن (cut)، کپی کردن (copy) و چسباندن (paste) یک متن است. این ابزارها و سایر ویژگیها در منوی فرمانها موجود است.
عناصر موردنیاز برای فرمولاسیون یا مدل نویسی در صفحه یا پنجره مدل نویسی برنامه نرمافزاری لینگو همانند ساختار هر برنامهریزی خطی، شامل سه مجموعه است:
١- متغیرهای تصمیم یا پارامترها (decision variables)
2- محدودیتها (تنگناها، قیود یا شروط)(constraints)
3- تابع هدف (objective function)
که لازم است همانند برنامهریزی خطی تمامی عناصر فوق در پنجره یا صفحه مدل نویسی برنامه لینگو بهصورت مدل (فرمول) نوشته شوند.
اصول اولیه مدل نویسی در لینگو:
ساخت یک مدل جدید باید در صفحه مدل نویسی آغاز شود. در صفحه مدل، کلمات کلیدی نرمافزار که از پیش برای آن تعریف شدهاند، به رنگ آبی، توضیحاتی که توسط برنامه در نظر گرفته میشود، به رنگ سبز و سایر اجزای برنامه به رنگ سیاه نشان داده میشوند. در این صفحه پس از نوشتن هر خط برنامه، باید از علامت "; " استفاده کرد. برای نامگذاری متغیرها میتوان از حروف، اعداد و کاراکتر " _ " استفاده کرد، اما نام متغیر حتماً باید با یک حرف آغاز شود. برای نوشتن توضیحاتی که میخواهیم توسط برنامه در نظر گرفته نشوند و هدف از آوردن آنها فقط قابلفهم شدن برنامه برای خواننده است، باید از علامت "! " قبل از توضیحات استفاده کرد و توضیحات را با علامت ";" به پایان میبریم. کلیه عبارات متنی که بین "!" و "; " نوشته میشوند از سوی لینگو نادیده گرفته میشوند. لینگو به کوچک بودن و یا بزرگ بودن حروف انگلیسی نیز حساس نیست.
میتوانیم دو خط برنامه لینگو را در یک خط بیاوریم و یا یک خط را در دو سطر بیاوریم.
علائم ساده ریاضی، توان (^)، ضرب (*)، تقسیم (/)، جمع (+) و تفریق (-) با همین ترتیب اولویت معتبرند. اگر بخواهیم به محدودیت، اسم تخصیص دهیم در ابتدای محدودیت، اسم آن را در داخل کروشه میآوریم. [اسم محدودیت].
هنگام حل مدل اگر ایرادی در آن وجود داشته باشد، نرمافزار پیغام خطا داده و مکاننما (کرسر) به اول سطری میرود که لینگو خطا را در آن سطر تشخیص داده است.
برای وارد کردن مدل در نرمافزار لینگو کافی است که دقیقاً همان مدل استاندارد نوشتهشده روی کاغذ را به همان شکل وارد مدل کنیم. این نرمافزار قابلیت آنالیز مدل به همان شکل استاندارد را دارد. البته باید توجه داشت برخی از قواعد که در بالا بدان اشاره شد را باید در نوشتن مدل در نرمافزار رعایت نمود. برای مثال فرض کنید که مدل زیر را بر روی کاغذ ساختهایم:
Max Z=2X_1+2X_2
ST∶X_1+5X_2≤20
X_1+X_2≤6
X_1 X_2≥0
برای وارد کردن مدل فوق کافی است آن را به شکل زیر در صفحه مدل نویسی نرمافزار وارد کنیم:
! Linear Programming Example;
model:
max=2*X1+2+X2;
X1+5*X2<=20;
X1+X2<=6
X1<=0;
X2<=0;
End
چارچوب کلی مدل و دستورات مربوطه:
ابتدا عنوان نوشته میشود که استفاده از آن اختیاری است مثلاً در مثال فوق عبارت ";Linear Programming Example! " بهصورت عنوان نوشتهشده است و از آنجایی که میخواهیم برنامه لینگو این عبارت را در نظر نگیرد با علامت تعجب ("!") شروعشده است و در برنامه به رنگ سبز مشخص شده است. در انتهای عبارت فوق نیز علامت "; " آورده شده است.
سپس در نوشتن هر مدل باید از دستور ":model " استفاده کرد.
سپس سایر ارکان مدل شامل تعریف مجموعهها، ورود دادهها، تابع هدف و محدودیتها نوشته خواهد شد و مدل با دستور “end " به پایان میرسد. model:”" و "end “ نیازی به ";" ندارند.
نوشتن تابع هدف:
همانطوری که در مثال ذکرشده مشاهده میشود، تابع هدف بسته به اینکه بهصورت حداکثر سازی و یا حداقل سازی باشد، به ترتیب به شکل ’’... = max " و یا"... = min“ نوشته میشود. همانطور که قبلاً هم اشاره شد، هدف در جیره نویسی غذای آبزیان در اغلب اوقات به حداقل رساندن قیمت است (البته گاهی اوقات ممکن است هدف، به حداکثر یا حداقل رساندن یک ماده خوراکی در جیره باشد).
نوشتن عبارت ریاضی در لینگو:
همانطور که در بالا اشاره شد، نوشتن عبارات ریاضی بسیار شبیه به آنچه است که در سایر برنامهها دیده میشود. نمادها در این برنامه بهصورت جمع (+)، تفریق (-)، ضرب (*)، تقسیم (/) و توان (^) میباشد. در ضمن برای وارد کردن تساوی و نامساویها در مدل از نمادهای بزرگتر مساوی (>=)، کوچکتر مساوی (<=) و مساوی (=) استفاده میشود.
جیره نویسی غذای آبزیان با برنامه لینگو:
همانطور که قبلاً اشاره شد، اساس جیره نویسی با برنامه لینگو استفاده از برنامهریزی خطی است؛ بنابراین نیاز است که ابتدا فرمول غذا جیرهای را که میخواهیم تولید نماییم، بر روی کاغذ و بر اساس برنامهریزی خطی، بنویسیم؛ یعنی تابع هدف، متغیرهای تصمیمگیری و محدودیتها را مشخص نموده و به زبان ریاضی و بر اساس برنامهریزی خطی بر روی کاغذ بنویسیم و سپس با مختصر تغییراتی و بر اساس قواعد برنامه (مدل) لینگو در مدل نویسی برنامه آن را وارد نماییم. در شماره بعدی این بخش بهتفصیل شرح داده خواهد شد.
استفاده از رایانه برای فرمولاسیون غذا اولین بار در سال 1951 میلادی ثبت شد که در آن زمان F. V. Waugh (1951) مقالهای با عنوان "غذای گاوهای شیری با حداقل هزینه" (“The Minimum-Cost Dairy Feed”) را منتشر کرد. Dent و Casey (1967) اولین کتاب در خصوص جیره نویسی با رایانه با عنوان "برنامهریزی خطی و تغذیه حیوانات" (Linear Programming and Animal Nutrition) را تألیف نمودند.
نرمافزار لینگو چیست؟
بستههای نرمافزاری لیندو (Lindo) و لینگو (Lingo) توسط شرکت لیندو سیستمز (Lindo Systems Inc.) برای حل مسائل بهینهسازی در دانشگاهها، صنعت و تجارت طراحی شدهاند. لینگو ابزاری ساده برای بهرهگیری از قدرت برنامهریزی خطی و غیرخطی در فرموله کردن (فرمولاسیون) مسائل خیلی بزرگ بهصورت مختصر و تجزیهوتحلیل آنهاست. بهینهسازی به ما کمک میکند تا جوابی را با حداقل هزینه، حداکثر سود و غیره به دست آوریم. اغلب حل این مسائل با استفاده از منابع موجود و محدودیتها انجام می شود. لینگو زبانی جامع و فراگیر جهت تسهیل تمام مدل های بهینهسازی از مسائل تحقیق در عملیات گرفته تا اقتصاد مهندسی، شبیهسازی، کنترل کیفیت، کنترل پروژه و کنترل موجودی میباشد.
از قابلیتهای متعدد برنامه لینگو میتوان به قدرت برقراری ارتباط با نرمافزارهای صفحه گسترده و بانک های اطلاعاتی برای تبادل داده ها، توابع گسترده ریاضی، سادگی استفاده و بهرهگیری از روشهای حل (Solver) متنوع، قدرت تحلیل حساسیت و توانایی حل مدلهای غیرخطی اشاره نمود.
نرمافزار Lingo علی رغم سادگی یادگیری، نرمافزار بسیار کاربردی و قابلاستفاده حتی در سطوح بالای مدیریتی است و در عین حال دارای قابلیتهای کاربرپسند (User Friendly) است که آن را به یکی از پرکاربردترین نرمافزارهای تحقیق در عملیات تبدیل کرده است. از این برنامه میتوان برای جیره نویسی غذای آبزیان نیز استفاده نمود.
نصب نرمافزار:
نصب برنامه لینگو بهراحتی انجام میشود و نصب آن همانند بسیاری از نرمافزارها میباشد. میتوان نسخه Demo این نرمافزار را از سایت www.lindo.com بهصورت رایگان دریافت نمود. سایر نسخههای این نرمافزار و راهنمای کار با نرمافزار از همین سایت قابل خریداری است.
صفحه اصلی نرمافزار:
صفحه اصلی نرمافزار از سه بخش تشکیل شده است:
١- منو با نوار فهرست (Menu bar): این بخش شامل کلیه فرمانهای نرمافزار است که در بالای صفحه قابلمشاهده است. این منو همانند منوی سایر نرمافزارها است که شما از قبل با آنها آشنایی دارید. در بخش نوار فهرست (Menu bar) میتوان به گزینههای Window,Solver,Edit,File و Help دسترسی داشت.
۲- نوارابزار (Tool bars): این نوار در زیر نوار فهرست (Menu bar) قرار دارد که شامل میانبرهای (Short Cuts) موجود در نوار فهرست میباشد و کار کردن با آنها را در سایر نرمافزارها آموختهاید.
3- پنجره یا صفحه مدل نویسی: این پنجره به رنگ سفید مشاهده میشود که مدل برنامه طبق قواعد لینگو در این صفحه نوشته میشود.
شکل 1 - صفحه اصلی و بخشهای مختلف نرمافزار لینگو
هنگامی که هیچ صفحهای در لینگو باز نباشد، بسیاری از کلیدهای نوار فهرست و نوارابزار غیرفعال هستند؛ اما با باز کردن یک برنامه به زبان لینگو و اجرای آن تقریباً تمامی کلیدها فعال میشوند.
وارد کردن یک مدل در لینگو، شبیه تایپ کردن در یک محیط پردازشگر متنی، (مثلاً Micrsoft Word) است. وقتی در یک مدل، داده تایپ میکنید تقریباً باید تمامی آنچه را که بهصورت دستی نوشتهاید، وارد مدل نمایید. کاربر اطلاعات ورودی خود را در پنجره یا صفحه مدل نویسی وارد میکند. لینگو دارای دستورات ابتدایی ویرایش نظیر بریدن (cut)، کپی کردن (copy) و چسباندن (paste) یک متن است. این ابزارها و سایر ویژگیها در منوی فرمانها موجود است.
عناصر موردنیاز برای فرمولاسیون یا مدل نویسی در صفحه یا پنجره مدل نویسی برنامه نرمافزاری لینگو همانند ساختار هر برنامهریزی خطی، شامل سه مجموعه است:
١- متغیرهای تصمیم یا پارامترها (decision variables)
2- محدودیتها (تنگناها، قیود یا شروط)(constraints)
3- تابع هدف (objective function)
که لازم است همانند برنامهریزی خطی تمامی عناصر فوق در پنجره یا صفحه مدل نویسی برنامه لینگو بهصورت مدل (فرمول) نوشته شوند.
اصول اولیه مدل نویسی در لینگو:
ساخت یک مدل جدید باید در صفحه مدل نویسی آغاز شود. در صفحه مدل، کلمات کلیدی نرمافزار که از پیش برای آن تعریف شدهاند، به رنگ آبی، توضیحاتی که توسط برنامه در نظر گرفته میشود، به رنگ سبز و سایر اجزای برنامه به رنگ سیاه نشان داده میشوند. در این صفحه پس از نوشتن هر خط برنامه، باید از علامت "; " استفاده کرد. برای نامگذاری متغیرها میتوان از حروف، اعداد و کاراکتر " _ " استفاده کرد، اما نام متغیر حتماً باید با یک حرف آغاز شود. برای نوشتن توضیحاتی که میخواهیم توسط برنامه در نظر گرفته نشوند و هدف از آوردن آنها فقط قابلفهم شدن برنامه برای خواننده است، باید از علامت "! " قبل از توضیحات استفاده کرد و توضیحات را با علامت ";" به پایان میبریم. کلیه عبارات متنی که بین "!" و "; " نوشته میشوند از سوی لینگو نادیده گرفته میشوند. لینگو به کوچک بودن و یا بزرگ بودن حروف انگلیسی نیز حساس نیست.
میتوانیم دو خط برنامه لینگو را در یک خط بیاوریم و یا یک خط را در دو سطر بیاوریم.
علائم ساده ریاضی، توان (^)، ضرب (*)، تقسیم (/)، جمع (+) و تفریق (-) با همین ترتیب اولویت معتبرند. اگر بخواهیم به محدودیت، اسم تخصیص دهیم در ابتدای محدودیت، اسم آن را در داخل کروشه میآوریم. [اسم محدودیت].
هنگام حل مدل اگر ایرادی در آن وجود داشته باشد، نرمافزار پیغام خطا داده و مکاننما (کرسر) به اول سطری میرود که لینگو خطا را در آن سطر تشخیص داده است.
برای وارد کردن مدل در نرمافزار لینگو کافی است که دقیقاً همان مدل استاندارد نوشتهشده روی کاغذ را به همان شکل وارد مدل کنیم. این نرمافزار قابلیت آنالیز مدل به همان شکل استاندارد را دارد. البته باید توجه داشت برخی از قواعد که در بالا بدان اشاره شد را باید در نوشتن مدل در نرمافزار رعایت نمود. برای مثال فرض کنید که مدل زیر را بر روی کاغذ ساختهایم:
Max Z=2X_1+2X_2
ST∶X_1+5X_2≤20
X_1+X_2≤6
X_1 X_2≥0
برای وارد کردن مدل فوق کافی است آن را به شکل زیر در صفحه مدل نویسی نرمافزار وارد کنیم:
! Linear Programming Example;
model:
max=2*X1+2+X2;
X1+5*X2<=20;
X1+X2<=6
X1<=0;
X2<=0;
End
چارچوب کلی مدل و دستورات مربوطه:
ابتدا عنوان نوشته میشود که استفاده از آن اختیاری است مثلاً در مثال فوق عبارت ";Linear Programming Example! " بهصورت عنوان نوشتهشده است و از آنجایی که میخواهیم برنامه لینگو این عبارت را در نظر نگیرد با علامت تعجب ("!") شروعشده است و در برنامه به رنگ سبز مشخص شده است. در انتهای عبارت فوق نیز علامت "; " آورده شده است.
سپس در نوشتن هر مدل باید از دستور ":model " استفاده کرد.
سپس سایر ارکان مدل شامل تعریف مجموعهها، ورود دادهها، تابع هدف و محدودیتها نوشته خواهد شد و مدل با دستور “end " به پایان میرسد. model:”" و "end “ نیازی به ";" ندارند.
نوشتن تابع هدف:
همانطوری که در مثال ذکرشده مشاهده میشود، تابع هدف بسته به اینکه بهصورت حداکثر سازی و یا حداقل سازی باشد، به ترتیب به شکل ’’... = max " و یا"... = min“ نوشته میشود. همانطور که قبلاً هم اشاره شد، هدف در جیره نویسی غذای آبزیان در اغلب اوقات به حداقل رساندن قیمت است (البته گاهی اوقات ممکن است هدف، به حداکثر یا حداقل رساندن یک ماده خوراکی در جیره باشد).
نوشتن عبارت ریاضی در لینگو:
همانطور که در بالا اشاره شد، نوشتن عبارات ریاضی بسیار شبیه به آنچه است که در سایر برنامهها دیده میشود. نمادها در این برنامه بهصورت جمع (+)، تفریق (-)، ضرب (*)، تقسیم (/) و توان (^) میباشد. در ضمن برای وارد کردن تساوی و نامساویها در مدل از نمادهای بزرگتر مساوی (>=)، کوچکتر مساوی (<=) و مساوی (=) استفاده میشود.
جیره نویسی غذای آبزیان با برنامه لینگو:
همانطور که قبلاً اشاره شد، اساس جیره نویسی با برنامه لینگو استفاده از برنامهریزی خطی است؛ بنابراین نیاز است که ابتدا فرمول غذا جیرهای را که میخواهیم تولید نماییم، بر روی کاغذ و بر اساس برنامهریزی خطی، بنویسیم؛ یعنی تابع هدف، متغیرهای تصمیمگیری و محدودیتها را مشخص نموده و به زبان ریاضی و بر اساس برنامهریزی خطی بر روی کاغذ بنویسیم و سپس با مختصر تغییراتی و بر اساس قواعد برنامه (مدل) لینگو در مدل نویسی برنامه آن را وارد نماییم. در شماره بعدی این بخش بهتفصیل شرح داده خواهد شد.