صفحه 1:
Bria
صفحه 2:
صفحه 3:
صفحه 4:
صفحه 5:
12} Operations Research : Applications and Algorithms (1994).
زو Introduction to Mathematical Programming : Application aad 7
ithms (1995) — =
صفحه 6:
م افزارهای وتو یبد 4
‘eos می باشند. در لین میان می توان
نرم آفزارهای چون :10۰1:11۳0
در سوه 1084 نام as py
صفحه 7:
>
Bit tt
صفحه 8:
صفحه 9:
ج مسائل” 0
وى کار. موجودق 2
صفحه 10:
صفحه 11:
Brey
صفحه 12:
صفحه 13:
صفحه 14:
!براق حل مسائل در ليتكو كة 3
و اال زابة سه ووش از طريق صفحه ید و در اتای
3
Brey
صفحه 15:
اریر مى جات 2 ورودی" خود ty دوب
ى داخلی. که ابتدا تخت عنوان ۲0۵061 00
س برای ~
الست eet iss Gee 0
وجوت سس جد ذو ادامه موده برددى راد گیرد.
Brey
صفحه 16:
صفحه 17:
صفحه 18:
صفحه 19:
صفحه 20:
واهیم محدودیت اسمی اختصاص دهیم در ابتدای
ز ال قلافت _کروشه می آوریم؛ وبه صورت
صفحه 21:
Brey
صفحه 22:
صفحه 23:
Toolbar
هنگامی که نرم افزار لینگو را اجرا می کنید. صفحه ای مطابی شکل نمایش داده می شود. همان طور که
مشاهده می کنید. کلید هایی برای استفاده کاربر در نظر گرفته شده که در واقع هر کدام از آنها یک ANS
میان بره برای گزینه ی مرتبط در یکی از منوهای لینگو می باشد .
هنگامی كه هیچ صفحه ای در لینگو باز اشد. بسیاری از کلیدها غیر فعال هستند. اما با باز کردن یک
برنامه به زبان لینگو و اجرای آن تقریبا همه این کلیدها فعال می شوند. برای آشنایی بیشتر با هر کدام از
اين كليدهاء در ارتباط با هر كدام به اختصار توضيح مى دهيم.
1001 1-7
سس
صفحه 24:
Ys 3 2 3
كد هرك همه
son
Bria
صفحه 25:
صفحه 26:
صفحه 27:
صفحه 28:
صفحه 29:
صفحه 30:
صفحه 31:
Brey
صفحه 32:
بعم هدف داشته باشد. در مثالی که داریم.
ت زا : صورت تایعی از خروجی کامپیو تر های اه
صفحه 33:
يكى مربوط بة تعداد کامپیوترها
- تعداد. كامبي و ترهاى توربو داريم»
صفحه 34:
صفحه 35:
Brey
صفحه 36:
صفحه 37:
Brey
صفحه 38:
توان در یک برنامه: تلبع هدف را
صفحه 39:
Brey
صفحه 40:
بوعه ای به 4 نام Hour
Need ox زدو
صفحه 41:
۱۲
صفحه 42:
در مورد عناصو مجعو Sh pala il
(فقط باید با حرف شر
partment / Industrial, Mechanic, Civil,
Electronic, Computer, Material/: Average:
صفحه 43:
صفحه 44:
عه ای
ال و هه یک ADT
مدای خلنةاى لید مبی کند. (دقت بيرى_-از د
صفحه 45:
صفحه 46:
صفحه 47:
Brey
صفحه 48:
او اسم ote مجموعه هاج
outs اند مقداردهی کنیم.
صفحه 49:
صفحه 50:
Brey
صفحه 51:
صفحه 52:
Brey
صفحه 53:
>
Bit tt
صفحه 54:
صفحه 55:
i
6
الزن
Brey
صفحه 56:
Brey
صفحه 57:
صفحه 58:
صفحه 59:
صفحه 60:
Brey
صفحه 61:
صفحه 62:
Brey
صفحه 63:
قلم می توان در آن نگهداری کرد.
زیر عمل مى کنیم
Brey
صفحه 64:
صفحه 65:
صفحه 66:
همانتد تلبع ۲ در دسته توابع"
دارد و شكل. كلى كاربرد آن به صورت ز
Brey
صفحه 67:
صفحه 68:
صفحه 69:
انواع
Cass Study : 9
صفحه 70:
0 داده شده و و سل
LP. QP. ILP. TOP. PIL!
۲ خوا
ee ag ol بت مد جهی قی برگا
صفحه 71:
صفحه 72:
صفحه 73:
صفحه 74:
Ma = SO*DESKS + S0°TAGELS + DOSCILAIRG?
=) 3HDESKS + 2°TABELS + 1.52CKAIRS < 202
2°DESHS + 1.S*TABELS ¥ .S*CHAIRS > ده
Tapes > 5:
صفحه 75:
صفحه 76:
Brey
صفحه 77:
شمند ).1 قرا Spo
Brey
صفحه 78:
٩50011۵۰ iat elas
Sit
صفحه 79:
Brey
صفحه 80:
ارائه دهنده
کاربرد:کامپیوتر در مهندسی صنایع
پویا حسین پور
سلیم زاده
حامد
شهرابی
جمال
دکتر
سهند امینی
فهرست مطالب
بخش اول :معرفی نرم افزار
بخش دوم :آغاز کار با لینگو
بخش سوم :حل مسائل
» بخش اول « معرفی نرم افزار
• مقدمه ای بر لینگو
• نرم افزارهای مشابه و ویژگی های لینگو
• لینگو چیست ؟
مقدمه ای بر لینگو
بس@ته های نرم افزاری لیندو و لینگ@و توس@ط شرک@ت لیندو سیستمز( )1برای
ح@ل مس@ائل بهین@ه س@ازی در دانشگاه ،ص@نعت و تجارت ،طراحی گردیده
اس@ت .دو محص@ول فوق همراه ب@ا کتاب تحقی@ق در عملیات :کاربرد ها و
الگوریت@م ه@ا ( )2()1994و کتاب مقدم@ه ای بر برنام@ه ریزی ریاضی :کاربرد
ه@ا و الگوریت@م ه@ا ( )3()1995ک@ه توس@ط پروفس@ور وای@ن ال .وینس@تون( )4نگاشته
شده است ،تشریح گردیده اند.
1) Lindo Systems, Inc.
)2) Operations Research : Applications and Algorithms (1994
3) Introduction to Mathematical Programming : Application and
)Algorithms (1995
4) Wayne L.Winston
نرم افزارهای مشابه
امروزه بس@یاری از مدل های بهین@ه س@ازی تحقیق در
عملیات اع@م از مدل های خط@ی ،غی@ر خط@ی و یا عدد
ص@حیح ب@ه مدد نرم افزارهای کامپیوتری ب@ه سادگی
قاب@ل تجزی@ه و تحلی@ل م@ی باشند .در ای@ن میان می توان
از نرم افزارهایی چون GAMS، GINO، LINDO،
LINGO، QSBو TORAنام برد.
LINGOب@@@ع@د از GAMSق@@ویت@@ری@نن@@رما@فزار ت@@حقیق
در ع@ملیاتم@یب@@اشد .از ج@مل@ه@ ب@@رتریهایل@@ینگ@و ن@@س@بتب@@@ه@
LINDOی@@ا ، GAMSق@@در@تآ@ندر م@دلس@@از@یت@@مام
م@س@ائ@لیا@س@تک@@ه@ ت@@وس@ط ل@@یندو م@دلش@@ده@ ا@ن@د ،ب@@دو@نا@ی@ن
ک@@ه@ ن@@یاز@یب@@@ه@ ت@@عیی@نن@@وع م@دلت@@وس@ط ک@@ار@بر ب@@اشد،
@ن@@اب@لیتیرا دارا
در ح@ا@لیک@@ه@ LINDOی@@ا GAMSچ@نی ق
ن@@م@یب@@اشد .ی@@ک@ید@ی@گ@ر از ق@@اب@لی@تهایم@ه@م ل@@ینگ@و
@ویس@@اد@ه@ و ک@@ام@لم@ی
ب@@رخوردار@یاز Helpی ب@@@س@یار ق@ ،
ب@@اشد .ب@@@ه@ گ@@ون@ه@ ا@یک@@ه@ ب@@@ا ا@س@تفاد@ه@ از Helpآ@نم@ی
ت@@وا@نت@@ا ح@د ز@یاد@یب@@ر ا@ی@نن@@رما@فزار م@سلطش@@د .
ویژگیهای بارز لین@گو
•
•
•
•
•
قابلیت مدل سازی بصورت کارا و صحیح؛
قابلیت باالی تحلیل مدل؛
دارا بودن توابع مختلف ریاضی ،آماری و احتمالی؛
قاب@لیت خواندن اطالعات از Fileها و
Worksheetهای دیگر؛
کار کردن در محیط .Windows
لی@نگ@و چی@ست ؟
تعریف اول :راهنمای PDFلینگو :
لینگ@و ابزاری س@اده برای بهره گیری از قدرت برنامه ریزی
خط@ی و غی@ر خط@ی در فرمول@ه کردن مس@ائل خیل@ی بزرگ به
ص@ورت مختص@ر و تجزی@ه و تحلی@ل آنهاس@ت .بهین@ه س@ازی ب@ه شما
کم@ک م@ی کن@د ت@ا جواب@ی را ب@ا بیشتری@ن س@ود ،خروج@ی ،یا
رضایتمندی و ی@ا جواب@ی ب@ا کمتری@ن هزین@ه ،تلفات ی@ا ناراحتی
بدس@ت آورید .اغل@ب ای@ن مس@ائل ب@ا اس@تفاده موث@ر از منابعی
همچون پول ،زمان ،ماشین ،نیروی کار ،موجودی و ...در
ارتباط است.
مس@ائل بهین@ه س@ازی اغل@ب ب@ه خط@ی و غی@ر خط@ی تقس@یم م@ی شوند،
ک@ه ای@ن تقس@یم بندی ب@ا توج@ه ب@ه رابط@ه متغیرهاس@ت؛ بدی@ن معنی
ک@ه اگ@ر رابط@ه هم@ه متغیره@ا ب@ا ه@م خط@ی باش@د ،مس@ئله را خطی و
در غیر اینصورت غیر خطی می گویند.
لینگ@و زبان@ی جام@ع و فراگی@ر جه@ت تس@هیل تمام مدل های بهینه
س@ازی از مس@ائل تحقی@ق در عملیات گرفت@ه ت@ا اقتص@اد مهندسی،
شبی@ه س@ازی ،کنترل کیفی@ت ،کنترل پروژه و کنترل موجودی
می باشد.
تعریف دوم :کتاب تحقیق در عملیات واین ال .وینستون :
لینگ@و ی@ک بس@ته نرم افزاری ب@ا امکان برقراری ارتباط دو طرف@ه با کاربر
اس@ت و از آ@ن م@ی توان در ح@ل مس@ائل خط@ی ،عدد ص@حیح و غی@ر خطی
کمک گرفت .استفاده از این نرم افزار وضعیت مشابهی مانند لیندو دارد،
ام@ا از انعطاف بیشتری در بیان مدل برخوردار است .بر خالف لیندو،
لینگ@و امکان اس@تفاده از پرانتزه@ا و متغیره@ا را در س@مت راس@ت معادله
فراه@م م@ی آورد .بنابرای@ن ،محدودی@ت ه@ا را م@ی توان ب@ه ص@ورت اولیه،
بدون نیاز ب@ه تبدی@ل آ@ن ب@ه س@اختار اس@تاندارد (آوردن مقادی@ر ثاب@ت به
سمت راست) نوشت .همچنین لینگو دارای یک کتابخانه بزرگ از توابع
ریاض@ی ،آماری و احتمال@ی بوده و قدرت باالی آن در خواندن اطالعات
از فایل های خارجی و نرم افزارهای صفحه گسترده است.
» بخش دوم « آغاز کار با لینگو
•
•
•
•
نصب نرم افزار
اصول اولیه در لینگو
محیط نرم افزار
پیاده سازی مدل در لینگو
نصب نرم افزار
نص@ب لینگ@و ب@ه راحت@ی ان@جام م@ی گیرد و همانن@د بسیاری
از نرم افزارهای تح@ت س@یستم عام@ل Windowsمی
باشد.
تنه@ا نکت@ه ای ک@ه در نص@ب م@ی توان ب@ه آن اشاره کرد
فضای مورد نیاز در روی دیس@ک س@خت م@ی باش@د که
40MBاس@ت .برای دریاف@ت نرم افزار م@ی توانی@د به
سایت لینگو مراجعه کنید.
اصول اولیه در لینگو
برای ح@ل مس@ائل در لینگ@و ک@ه بس@یار مشاب@ه لیندو اس@ت ،می
توان مس@ائل را ب@ه س@ه روش از طری@ق ص@فحه کلی@د و در ارتباطی
دو طرفه با کاربر و یا با استفاده از فایل هایی که در جای دیگر
تولی@د شده ان@د (ک@ه ای@ن فای@ل ه@ا ی@ا خود شامل دس@تورات هستند
و ی@ا ب@ه عنوان بخش@ی از ی@ک برنام@ه جامع ،دارای کدهای
س@فارشی و کتابخان@ه های بهین@ه س@ازی لینگ@و هستند) ،وارد
کامپیوت@ر کرد .در اینج@ا ب@ه روش اول ،یعن@ی ارتباط دو طرف@ه با
کاربر متمرکز می شویم.
وارد کردن ی@ک مدل در نس@خه تح@ت ویندوز لینگ@و ،شبیه
تای@پ کردن در ی@ک محی@ط پردازشگ@ر متن@ی تحت ویندوز
اس@ت؛ چون وقتی در یک مدل داده تایپ می کنید ،تقریبا
بای@د آنچ@ه را ک@ه ب@ه ص@ورت دس@تی نوشت@ه اید ،وارد مدل
کنید .کاربر م@ی تواند اطالعات ورودی خود را در پنجره
ی داخل@ی ک@ه ابتدا تحت عنوان Lingo Model
اس@ت ،وارد کند .همچنی@ن ،لینگ@و شام@ل دس@تورات ابتدایی
ویرای@ش برای بریدن ،کپ@ی کردن و چس@باندن ی@ک متن
اس@ت .ای@ن ابزاره@ا و س@ایر ویژگ@ی ه@ا ،در منوی فرمان ها
موجود است که در ادامه مورد بررسی قرار می گیرد.
عناص@ر مورد نیاز در لینگ@و مشاب@ه لیندو اس@ت .لینگو
نیازمن@د تاب@ع هدف ،ی@ک ی@ا چن@د متغی@ر و ی@ک ی@ا چند
محدودی@ت اس@ت .بر خالف لیندو ،محدودیت های
لینگو بع@د از عبارات خاص از قبی@ل SUBJECT TOیا
SUCH THATنمی آیند.
اصول اولیه مدل نویسی در لینگو
در لینگو هر عبارت با یک “ ; ” پایان می یابد؛
هرگاه بخواهی@م ی@ک عبارت توضیح@ی ب@ه مت@ن برنام@ه بیافزایی@م کافیست
در ابتدای عبارت از عالم@ت تعج@ب ( ! ) اس@تفاده کنیم .این توضیحات
نیز به “ ; ” ختم می شوند؛
کلی@ه عبارات متن@ی ک@ه مابی@ن ( ! ) و “ ; ” نوشت@ه م@ی ش@ون@د از سوی
لینگو نادیده گرفته می شوند؛
لینگو به بزرگ یا کوچک بودن حروف حساس نیست؛
می توانیم دو خ@ط برنامه لینگو را در ی@ک خ@ط بیاوریم و یا یک خ@ط آن
را در دو سطر بیاوریم:
Max = 100 * Standard
;Turbo * 150 +
یا
;;Turbo <= 120Standard <= 100
حتی می توانیم توضیحات را در وسط محدودیت ها بیاوریم:
;X = Y + !Number of Products; Q + 2 * C
( معادل X = Y + Q + 2 * Cاست )
عملگرهای ریاضی حتما فراموش نشود؛ ( مخصوصا عملگر ضرب “ * “ )
(2X + 3Y <= 25ا@شتباه@)
(X + 3 * Y <= 25 * 2درست)
اس@امی متغیره@ا حتم@ا ب@ا ی@ک حرف شروع م@ی شوند .بع@د از آ@ن می توان
حرف ،رقم یا زیر خ@ط ( _ ) اس@تفاده کرد .اس@م متغیره@ا نمی تواند بیشتر از
32کاراکتر باشد؛
استفاده از فاصله “ “ ( فاصله ) در اسم متغیر ها ممنوع است؛
عالئ@م س@اده ریاض@ی ،توان ( ^ ) ،ضرب ( * ) ،تقس@یم ( ،) /جمع ( ) +و
تفریق ( ) -با همین ترتیب اولویت معتبرند؛
اگ@ر بخواهی@م ب@ه محدودی@ت اس@می اختص@اص دهی@م در ابتدای محدودیت
اس@م آ@ن را در داخ@ل عالم@ت کروش@ه م@ی آوری@م؛ و ب@ه ص@ورت مقاب@ل می
نویسیم ] :اسم محدودیت[
@ی@ستفاد@ه@ ب@@@هتر از ن@@رما@فزار
Help ل@@ینگ@و ی@@کرا@هنمایب@@@س@یار خ@وبب@@را ا
@ستاز آنب@@@ه@ره@ ب@@@گیرید!
ا .
هنگام ح@ل مدل اگ@ر ایرادی در آ@ن وجود داشت@ه باشد ،نرم افزار پیغام
خط@ا داده و مکان نم@ا ب@ه اول س@طری م@ی رود ک@ه ب@ه نظ@ر لینگ@و ای@ن خطا از
آنجا ناشی شده است؛
ممک@ن اس@ت در بعض@ی مواق@ع ب@ا وجود آنک@ه فک@ر م@ی کنی@د مدل@ی ک@ه نوش@ته
اید درس@ت اس@ت ،نرم افزار هنگام حل آن پیغام خط@ا بدهد .در این مواقع
یک راه ساده آن است که یک صفحه جدید لینگو باز کرده و دستورات و
عبارت های@ی ک@ه در مدل نوشت@ه ای@د را یک@ی یک@ی ،ب@ه ص@فحه ی جدی@د کپی
کرده و ه@ر بار مدل جدی@د را اجرا کنید .ب@ا ای@ن کار در اکث@ر موارد به
راحتی می توانید به اشکال برنامه پی ببرید.
محیط نرم افزار
نرم افزار لینگ@و از س@ه بخ@ش کل@ی منوه@ا Toolbar ،و پنجره ی مدل نویسی
تشکیل شده است.
منوهای نرم افزار به ترتیب زیر می باشد :
File; Edit; LINGO; Window; Help
منوی@ی ک@ه بیشت@ر ب@ه چش@م آمده و در واق@ع منوی اص@لی نرم افزار م@ی باشد منوی
LINGOس@ت ،ب@ا س@ایر منوه@ا ک@ه در نرم افزارهای تح@ت س@یستم عامل
Windowsعموم َا موجود می باشند پیشتر آشنا هستید.
@ل@بزار@های( Shortcutم@یان@بر) م@وجود در م@نوها م@یب@@اشد.
Toolbar ش@@ام ا
پنجره ی مدل نویس@ی مح@ل پیاده س@ازی مس@ئله ی بهین@ه س@ازی فرموله شده
طبق قواعد لینگوست.
Toolbar
Menus
پنجره ی مدل نویسی
هنگامی که نرم افزار لینگو را اجرا می کنید ،صفحه ای مطابق شکل نمایش داده می شود ،همان طور که
مشاهده می کنید ،کلید هایی برای استفاده کاربر در نظر گرفته شده که در واقع هر کدام از آنها یک کلید
میان بر ،برای گزینه ی مرتبط در یکی از منوهای لینگو می باشد .
هنگامی که هیچ صفحه ای در لینگو باز نباشد ،بسیاری از کلیدها غیر فعال هستند .اما با باز کردن یک
برنامه به زبان لینگو و اجرای آن تقریبا همه این کلیدها فعال می شوند .برای آشنایی بیشتر با هر کدام از
این کلیدها ،در ارتباط با هر کدام به اختصار توضیح می دهیم.
Toolbar
کلید
کلید
کلید
Solve
کلید
New
Cut
Send
Find
To Back
Undo
Solution
Help
Topics
Open
Go
To Line
Redo
Copy
Matrix
Picture
Help
Close
All
Save
Math
Parenthesis
Paste
Tile Windows
Print
Options
کاربرد
کاربرد
کاربرد
کاربرد
باشد.
می
Lingo
منوی
گزینه Solveاز
میان بر گزینه
کلید
باشد.باشد.
میمی
File
منویEdit
Newازازمنوی
بر بر گزینه Cut
میانمیان
کلیدکلید
Windowمی
منویاز منوی
Send
Find
To Back
گزینه
میان
کلیدبر
کلید میان
Editمی باشد.
Undoاز
گزینهبربرگزینه
کلیدمیان
باشد.
می
Lingo
منوی
از
Solution
گزینه
بر
میان
کلید
Fileباشد.
Helpمی
گزینه و کلیک
کلیدبرجستجو
باشد.
میمیباشد.
منوی
برایاز
Open
میان
کلید
باشد.باشد.
Edit
منویمنوی
Goاز
To
Line
گزینه
بر
میان
کلید
Editمی
Redoاز
گزینه
بر
میان
کلید
Copy
می
Lingo
منوی
از
Matrix
Picture
گزینه
بر
میان
کلید
منوی می باشد.
Help
Allبر از
گزینه میان
کلید
باشد.
Windowمی
منوی ازاز منوی
Close
میان بر
کلید
باشد.
می
Save
گزینه
میان بر
کلید
Editمی
Fileمنوی
Math Parenthesisاز
گزینه
بر
میان
کلید
باشد.از منوی Editمی باشد.
کلید میان بر گزینه Paste
Windowمی
منویاز منوی
Tile
باشد.
Windows
گزینه
میان بر
کلید
باشد.
می
File
از
Print
گزینه
بر
میان
کلید
باشد.از منوی Lingoمی باشد.
کلید میان بر گزینه Options
)Menus (File Menu
پنجره ی جدید برای وارد کردن داده ها ایجاد می کند
New
پرونده ی موجود را باز می کند .در جعبه های محاوره ای ( ، )dialog boxمی توانید پرونده را از میان انواع مختلف پرونده ها
و در مکان های مختلف انتخاب کنید
Open
پنجره ی فعال را ذخیره می کند .می توانید داده های ورودی (یک مدل) ،یک پنجره گزارش یا یک پنجره فرمان را ذخیره کنید
Save
پنجره فعال را با نام مشخصی ذخیره می کند .کاربرد این فرمان در تغییر نام پرونده اصالح شده است ،در حالی که پرونده اولیه
حفظ می شود
Save As
پنجره فعال را می بندد .اگر پنجره شامل داده های جدید باشد ،برای ذخیره برنامه سوال م@ی کند
Close
پنجره فعال را به چاپگر می فرستد
Print
چاپگر را انتخاب می کند .همچنین ،گزینه های مختلفی را برای شکل چاپ ،در دسترس قرار می دهد
Print Setup
پیش نمایش محتویات پنجره ی فعال برای چاپ را نمایش می دهد
Print Preview
تمامی زیر پنجره های عملیات را که در حالت معمولی به پنجره گزارش فرستاده می شود ،به یک فایل نوشتاری ارسال می کند.
وقتی محل پرونده نوشتاری را تعیین کردید ،عالمتی در کنار این فرمان در منوی فایل ظاهر خواهد شد .برای غیر فعال
کردن این فرمان ،می توانید مجددا این گزینه را انتخاب کنید
Log Output
برای انجام عملیات به صورت خودکار یک فایل بسته ای ( )batch fileلینگو را همراه با فرمان ها و متن ،وارد حافظه می کند.
یک مدل می تواند در حافظه قرار گیرد ،حل شود و نتیجه حل آن در یک پنجره گزارش قرار گرفته و در یک فایل ذخیره
شود .اگر یک فرمان بسته ای را قبل از شروع متن مدل به کار برید ،مدل و دستورات موجود در فایل ،در پنجره گزارش و
در حل دیده می شود
Take
Commands
صدور یک مدل در فرمت MPSیا MPI
Export File
دادن کلمه عبور جدید جهت به روز رسانی سیستم و آزاد شدن نرم افزار
License
واداشتن شما به استفاده از شناسه کاربری و کلمه عبور برای دستیابی به پایگاه اطالعات از طریق تابع @)(ODBC
خروج از نرم افزار
Database User
Info
Exit
)(Edit Menu
Menus
آخرین کار انجام شده را باز می گرداند
Undo
بر عکس عملیات Undoرا انجام می دهد
Redo
متن انتخابی را پاک کرده ،در حافظه نگه می دارد تا جای دیگری آن را قرار دهد
Cut
متن انتخابی را در حافظه کپی می کند تا در جای دیگری قرار داده شود
Copy
محتوای حافظه ( )Clipboardرا در جای انتخابی قرار می دهد
Paste
Pasteهمرا@ه@ ب@@ا ا@ن@تخابن@@وع Pasteاز ن@@ظر ف@@رم@تم@تن
Paste Special
تمامی محتویات پنجره فعال را انتخاب می کند تا بتوان از آن در کپی و یا برش استفاده کرد
Select All
جستجوی قسمتی از رشته ی متنی در پنجره ی فعال
Find
جستجوی رشته ی متنی مشابه بعدی در متن که قبال توسط Findپیدا شده
Find Next
جابجا کردن رشته های متنی با متن جدید بصورت دلخواه
Replace
حرکت دادن ( Cursorنشانگر صفحه کلید) به شماره خط دلخواه از پنجره فعال
Go To Line
پرانتز های بسته را که با پرانتز های باز انتخاب شده ،متناظر هستند ،پیدا م@ی کند
Match Parenthesis
توابع داخلی لینگو را در جای مشخص شده ،قرار می دهد .بعد از انتخاب این فرمان ،زیر منوی دیگری باز می شود که
شامل گروه بندی های مختلفی از توابع است
Paste Function
انتخاب قلم دلخواه با فرمت دلخواه (پس از Selectکردن متن فعال می شود)
Select Font
افزودن لینک از نرم افزار های دیگر (به عنوان مثال یک اسالید )PowerPoint
Insert New Object
کنترل ارتباطات عناصر خارجی موجود در Document
Links
خاصیت دادن به عناصر موجود در Document
Object Properties
)(LINGO Menu
Menus
مدل مربوط به پنجره فعال را برای حل ،به حل کننده لینگو می فرستد
Solve
جعبه محاوره ای ( ، )Dialog Boxگزینه هایی از گزارش حل را باز می کند ،که امکان تعیین چگونگی ظاهر مورد
نظر گزارش حل را فراهم می کنند
Solution
یک گزارش حد (تحلیل حساسیت) ارائه می کند .این گزارش نشان می دهد که تغییرات ضرایب می تواند در چه
محدوده ای باشد ،بدون اینکه مقادیر بهینه عوش شوند
Range
امکان مشاهده و تغییر پرامترهای مختلفی را که در هنگام استفاده از لینگو درگیر هستند ،فراهم می کند
Options
ویرای@ش دیگری از مدل را ب@ه ص@ورت ج@بری ،تح@ت لیندو و ی@ا س@اختار MPSتولی@د م@ی کند .ای@ن فرمان م@ی تواند برای
شماره گذاری س@طر ه@ا و نمای@ش مدل ب@ه ص@ورتی ک@ه کاربر بتوان@د راح@ت ت@ر ب@ا آ@ن کار کند ،مورد اس@تفاده قرار می
گیرد .فرمان ، GENاز پنجره فرمان نیز ،دارای قابلیت مشابهی از این نوع است
Generate
مدل را بصورت ماتریسی نمایش می دهد
Picture
خطاهای موجود در مدل را یافته و توضیح می دهد
Debug
اطالعاتی راجع به مدل در اختیار قرار می دهد (مانند تعداد متغیرها ،تعداد سطرها و)...
Model Statistics
تمام و یا قسمتی از سطرهای انتخابی مدل را نمایش می دهد
Look
)(Window Menu
Menus
امکان دسترسی به رابط کاربر با خط فرمان لینگو را فراهم می آورد .در اینجا می توانید
فرمان ها را در مقابل عالمت :وارد کنید
Command
Window
پنجره وضعیت حل کننده لینگو را که نمایش دهنده اطالعاتی در مورد وضعیت بهینه سازها
از قبیل تعداد تکرارها و زمان اجرای صرف شده است ،باز می کند
Status Window
پنجره ی رویی را به پشت می فرستد
تمام@ی پنجره های باز را می بندد
تمامی پنجره های باز را به گونه ای مرتب می کند که همگی فضای مساوی را در پنجره
برنام@ه اشغال کنند
تمامی پنجره های باز را به صورت آبشاری ،از سمت چپ -باال تا سمت راست-پایین مرتب
کرده و پنجره فعال را نیز در باال قرار می دهد
آیکون هایی را که نشانه پنجره های کوچک شده است ،در امتداد پایین صفحه نمایش،
مرتب می کند
Send to Back
Close All
Tile
Cascade
Arrange Icons
)(Help Menu
Menus
راهنمای موضوعی ،امکان جستجو نیز وجود دارد
ثبت لینگو بصورت آنالین
شما را از ورژن های جدید و به روز رسانی نرم افزار بصورت آنالین آگاه می سازد
صفحه آغازین لینگو را به همراه اطالعات عمومی مربوط به آن نمایش می دهد
Help Topics
Register
AutoUpdate
About
LINGO
پنجره مدل
نویسی( ) Lingo Model
لینگ@و زبان برنام@ه نویس@ی خاص خود را دارد ،همانن@د زبان های برنامه
نویس@ی دیگ@ر لینگ@و نی@ز دارای اص@ول و قواع@د نگارش@ی و منطق@ی در برنامه
نویس@ی م@ی باش@د ،ب@ا اس@تفاده از Helpجام@ع نرم افزار و همچنی@ن با بهره
گیری از پیغام های خط@ا و س@عی در رف@ع آنه@ا م@ی توان ب@ه تدری@ج بر آن
مسلط شد .پنجره ی برنامه نویسی را در زیر مشاهده می کنید :
پیاده سازی مدل در لینگو
توسعه ی یک مدل بهینه س@ازی
ی@ک شرک@ت کامپیوتری@ دو نوع کامپیوت@ر اس@تاندارد و تورب@و تولی@د م@ی کند .س@ود ه@ر کامپیوتر
استاندارد برای@ این شرکت@ 100$و هر دستگاه توربو برابر 150$است@ .در شرکت@ ،خط
تولی@د کامپیوت@ر اس@تاندارد حادکث@ر ت@ا 100دس@تگاه در روز م@ی توان@د تولی@د کند .همچنین
حداکثر توان تولید خط توربو برابر 120دستگاه در روز اعالم شده است .شرکت نیروی
کار محدود 160نف@ر س@اعت در ه@ر روز در اختیار دارد .کامپیوترهای@ اس@تاندارد یک
س@اعت نیروی کار الزم دارن@د در حال@ی ک@ه کامپیوترهای@ تورب@و 2ساعت نیروی کار نیاز
دارند .مس@اله ای ک@ه شرک@ت ب@ا آ@ن روبروس@ت ای@ن اس@ت@ ک@ه ترکیبی از کامپیوترهای@
اس@تاندارد و تورب@و را برای@ تولی@د انتخاب کن@د ک@ه س@ودش را بیشین@ه کن@د در حال@ی که از
محدودیت های@ توان خطوط تولید و ظرفیت نیروی@ کار تجاوز نکند.
یک مدل بهینه سازی شامل موارد زیر است :
تابع هدف – فرمولی است که دقیقا آنچه را که می خواهید بهینه
کنید ،بیان می کند .در مدل های مربوط به کسب و کار این یک
تابع سود است که می خواهید آن را بیشینه کنید و یا یک تابع هزینه
اس@ت که می خواهید آن را کمینه کنید .مدل ها ممکن است
حداکثر یک تابع هدف داشته باشد .در مثالی که داریم ،تابع هدف،
سود شرکت را به صورت تابعی از خروجی کامپیوترهای استاندارد و
توربو محاسبه می کند.
متغیرها – کمیت هایی هستند که تحت کنترل شما هستند و شما باید
تصمیم بگیرید که بهترین مقادیر این متغیر ها کدامند؛ به همین دلیل
گاها به آنها متغیر های تصمیم گیری نیز می گویند .هدف بهینه س@ازی
یافتن مقادیری برای متغیرهای مدل است که با توجه به همه شرایط
محدود کننده که روی متغیرها اعمال می شوند ،بهترین مقدار را
برای تابع هدف تولید کنند .در این مثال ما دو متغیر تصمیم گیری
یکی مربوط به تعداد کامپیوترهای استاندارد و دیگری مربوط به
تعداد کامپیوترهای توربو داریم.
محدودیت ها – تقریبا بدون استثنا ،برخی محدودیت ها برای
مقادیری که متغیرها می توانند اتخاذ کنند خواهد بود .حداقل یک
منبع محدود خواهد بود( .برای مثال زمان ،مواد اولیه ،بودجه
دپارتمان شما و )...این محدودیت ها به وسیله توابعی از متغیرهای
مدل بیان می شوند .این فرمول ها به عنوان محدودیت شناخته می
شود ،چون مقادیری را که متغیرها می توانند بگیرند ،محدود می
کنند.
در ای@ن مثال م@ا برای ه@ر خ@ط تولی@د ی@ک محدودیت و برای
کل نیروی کار استفاده شده نیز یک محدودیت داریم.
متغیرهای Standardو Turboرا به عنوان تعداد
کامپیوترهای اس@تاندارد و تورب@و ک@ه شرک@ت م@ی خواهد
تولی@د کن@د در نظ@ر م@ی گیریم .هدف شرک@ت بیشینه کردن
س@ود ک@ل اس@ت ک@ه ای@ن س@ود برابر مجموع س@ود حاصل از
کامپیوترهای استاندارد و توربو است :
;Max = 100 * Standard + 150 * Turbo
حال محدودیت مربوط به ظرفیت خطوط تولید را اعمال می کنیم :
;Standard <= 100
;Turbo <= 120
محدودیت مربوط به نیروی کار نیز بصورت زیر است :
! ;Our labor supply is limited
;Standard + 2 * Turbo<= 160
توسعه مدل بهینه سازی در لینگو
همانن@د اکث@ر زبان های برنام@ه نویس@ی ،ه@ر برنام@ه ی لینگ@و نیز
دارای ی@ک س@اختار کل@ی م@ی باشد .در ای@ن قس@مت قال@ب اصلی
ی@ک برنام@ه ب@ه زبان لینگ@و را معرف@ی م@ی کنی@م ،تا خواننده دیدی
کل@ی از آ@ن بدس@ت آورد .آنچ@ه در ای@ن فص@ل م@ی بایست مورد
توج@ه قرار گیرد اصول کلی است که بدان پرداخته شده است؛
در فص@ل های بعدی مطال@ب ب@ا تفص@یل بیشتری مطرح خواهند
شد.
ی@ک برنام@ه در لینگ@و ب@ا کلم@ه “ ”Modelآغاز و ب@ه کلم@ه “ ”Endخت@م می
شود و معموال از چهار بخش زیر تشکیل می شود :
بخش مجموعه ها؛
بخش داده ها؛
تابع هدف؛
بخش محدودیت ها؛
همچنی@ن م@ی توان در ی@ک برنام@ه ،تاب@ع هدف را بع@د از نوشت@ن محدودیت
ها آورد.
مجموعه ها در لینگو
مجموع@ه ه@ا در لینگ@و در واق@ع قالب@ی برای تعری@ف متغیرهای برنام@ه می
باشن@د (ای@ن متغیره@ا م@ی توانن@د متغی@ر تص@میم گیری و یا پارامترهای عددی
مدل باشند) .در لینگو دو نوع مجموعه داریم :
مجموعه های مستقل؛ Primitive Sets
مجموعه های وارث ؛ Derived Sets
مجموع@ه های مس@تقل برای تعری@ف متغیرهای آرای@ه ای یک بعدی و
مجموع@ه های وارث برای تعری@ف آرای@ه های چن@د بعدی مورد استفاده
قرار می گیرند.
مجموعه های مستقل
ساختار کلی تعریف مجموعه های مستقل در لینگو به صورت زیر می باشد :
; نام متغیرها / :عناصر مجموعه /نام مجموعه
ب@ه عنوان مثال در برنام@ه قب@ل ،مجموع@ه ای ب@ه نام Hourب@ا 24عنصر
تعریف شده است و دو متغیر Xو Needنیز دو متغیر با 24عنصر هستند.
برای درک بهت@ر مطل@ب ب@ه مثال زی@ر ک@ه ی@ک خ@ط از ی@ک برنام@ه اس@ت توجه
کنید :
;Factory /1 .. 3 /:Setup_Cost
Factoryو Setup_Costم@ع@رفی@@کآرا@ی@ه@ ت@@@کب@@@ع@دیش@@ام@ل 3خ@ان@ه@ ا@ند،
ب@@ا ا@ی@نت@@فاو@تک@@ه@ ب@@@ه@ خ@ان@ه@ های Factoryم@قدارد@هین@@م@یک@@نی@م و آن@ه@ا را در
م
ع@م@لیاتر@یاض@یش@@رکتن@@مید@هی .
برای مقدارده@ی ب@ه متغی@ر Setup_Costبای@د در بخ@ش مقدارده@ی س@ه عدد به
آ@ن نس@بت@ داد ک@ه ای@ن اعداد ب@ه ترتی@ب در خان@ه های اول ت@ا س@وم آ@ن قرار می
گیرند.
)Setup_Cost(3
)Setup_Cost(2
)Setup_Cost(1
نکت@ه قاب@ل ذک@ر در مورد عناص@ر مجموع@ه ای@ن اس@ت ک@ه اس@م عناص@ر م@ی تواند
عدد ،رشته ای از اعداد و یا حروف باشد( .فقط باید با حرف شروع شود).
برای آشنایی بیشتر چند مجموعه در پایین آمده است :
Department / Industrial, Mechanic, Civil,
;Electronic, Computer, Material/: Average
;WAREHOUSE / WH1, WH2, WH3/: CAPACITY
;CUSTOMER / C1, C2, C3, C4/: DEMAND
مجموعه های وارث
در لینگ@و نم@ی توان ب@ه ص@ورت مس@تقیم ماتری@س و آرای@ه های چند بعدی را
تعری@ف کرد .برای تعری@ف آرای@ه های چن@د بعدی از مجموعه های وارث
استفاده می کنیم.
ساختار کلی مجموعه های وارث بصورت زیر است :
Sets:
@ث
;آرا@یه@ /ا@سمم@جموعه@ هایوار /
)(Set1
;Car/1..3/
)م@ثا@ل
; متغیرها ) Set1, Set2, Set3, … , Setn ( :اسم مجموعه وارث
;Demand (Car, City): Dem
)م@ثا@ل
Endsets
برای درک بهتر به مثال های کلی زیر توجه کنید :
فرض کنی@د کارخان@ه ای س@ه نوع ماشی@ن مختل@ف تولی@د م@ی کن@د و مشتریان پنج
شه@ر مختل@ف نی@ز س@فارش های متفاوت@ی از ه@ر نوع ماشی@ن ب@ه کارخان@ه می
دهند .حال زیر برنامه ی زیر را در نظر بگیرید:
Sets:
;Car/1..3/
;City/1..5/
;Demand (Car, City): Dem
Endsets
ای@ن زی@ر برنام@ه مجموع@ه ای مس@تقل ار نوع Carب@ه ص@ورت آرای@ه تک
بعدی 3خان@ه ای و مجموع@ه ای مستقل از نوع Cityبه ص@ورت ی@ک آرایه
ت@ک بعدی 5خان@ه ای تولی@د م@ی کند( .دق@ت کنی@د که متغیری از نوع
Carیا Cityنداریم).
در خ@ط چهارم ای@ن زی@ر برنام@ه ،مجموع@ه وارث Demandب@ه صورت
ی@ک ماتری@س 5*3و ماتری@س Demاز نوع Demandتعری@ف می
شود؛ بنابرای@ن در بخ@ش مقدارده@ی ،م@ی بایس@ت 15عدد ب@ه متغیر Dem
نس@بت داد ،ک@ه در ای@ن حال@ت مقدار تقاضای شه@ر jاز ماشی@ن iدر خانه ای
واقع در سطر iام و س@تون jام ماتریس Demقرار می گیرد.
در قس@مت داخ@ل اس@لش ه@ا (اندی@س های@ی ک@ه ب@ا ه@م ارتباط دارن@د) می
توانی@م اندی@س های@ی را ذک@ر کنی@م ک@ه ارتباطشان ب@ا ه@م تعری@ف شده است.
در ص@ورت حذف قس@مت بی@ن اس@لش ه@ا ،فرض بر ای@ن اس@ت که ارتباط تمام
اندی@س ه@ا در تمام بع@د ه@ا ،ب@ا ه@م تعری@ف شده اس@ت و متغیرهای وابس@ته به
مجموع@ه ،ب@ا تمام اندی@س های خود م@ی توانن@د مقدار بگیرند .استفاده از
قس@مت اندی@س های@ی ک@ه ب@ا ه@م ارتباط دارن@د ب@ه خص@وص در مسائل کنترل
پروژ@ه کاربرد دارد ک@ه خود مبحث@ی جداگان@ه اس@ت .مثال پی@ش رو مطالب
را بیشتر برای ما روشن می سازد:
SETS:
TASK/A B C D E F G H I J K/: T;
PRED (TASK, TASK) / A,B B,C C,F C,G F,J G,J
J,K D,E E,H E,I H,J I,J/;
STATION /1..4/;
TXS (TASK, STATION): X;
ENDSETS
در مثال فوق مجموع@ه TASKاز 11عض@و تشکی@ل یافت@ه اس@ت و مجموعه
STATIONاز 4عضو .ب@ا ای@ن وجود مجموع@ه PREDبه جای
11*11=121عض@و تنه@ا از 12عض@و مشخ@ص شده ،تشکی@ل ش@ده در حال@ی که
TXSشامل 8*4=32عضو می باشد.
توج@ه کنی@د ک@ه در برنام@ه های مختل@ف گاه@ی مواردی پی@ش م@ی آی@د که
هنگام کار ب@ا مجموع@ه ه@ا (در تعری@ف مجموع@ه ه@ا و ی@ا هنگام استفاده از
توابع forو یا ) sumبرخی از اندیس های مجموعه را می بایست نادیده
گرف@ت و ی@ا ه@ر شرط خاص دیگری را بای@د ب@ا برخ@ی از اندیس های
مجموع@ه ه@ا (و ن@ه تمام@ی آنه@ا) اعمال کرد؛ در ای@ن حالت از عملگرهای
مختلف و عبارات شرطی استفاده می کنیم که در فصل های آتی در مورد
آنها به تفصیل بحث خواهیم کرد.
بخش داده ها
بخ@ش داده ه@ا ب@ه م@ا ای@ن امکان را م@ی ده@د ک@ه داده ها
را از بقی@ه مدل جدا کنیم .ای@ن کار باع@ث می شود در
هنگام تغیی@ر و ی@ا توس@عه مدل راح@ت ت@ر و ک@م اشتباه تر
عم@ل کنیم .در بخ@ش داده ک@ه مابی@ن دو کلمه کلیدی
DATAو@ ENDDATAاس@ت م@ی توانی@م مقادیر
پارامتره@ا و اس@م عناص@ر مجموع@ه های@ی را ک@ه در بخش
قبلی تعریف شده اند مقداردهی کنیم.
: مثال زیر توجه کنید3 به
1)
SETS:
SET1 / A, B, C/: X, Y;
ENDSETS
DATA:
X = 1, 2, 3;
Y = 4, 5, 6;
ENDDATA
2)
SETS
SET1 / A, B,
C/: X, Y;
ENDSETS
DATA
X, Y = 1, 4,
2, 5,
3, 6;
ENDDATA
3)
SETS
SET1 : X, Y;
ENDSETS
DATA
SET1, X, Y = A
14
B25
C 3 6;
ENDDATA
در هر سه مثال فوق مجموعه SET1دارای سه عنصر A ، Bو Cاست که دو
خصیصه Xو Yبه آن نسبت داده شده و جواب هر سه برابر است با :
) Y ( A ) = 4, Y ( B
X ( A ) = 1, X ( B ) = 2, X ( C ) = 3
= 5, Y ( C ) = 6
پارامترهای 1*1را می توان مستقیما در قسمت داده ها تعریف و مقداردهی
کرد .مثال :
DATA
;INTEREST_RATE = .085
ENDDATA
و یا
DATA
;INTEREST_RATE, INFLATION_RATE = .085, .03
ENDDATA
INTEREST_RATEدر هر دو م@ثا@لف@@وقب@@را@بر 085.و در م@ثا@لدو@م
@ست
INFLATION_RATEب@@را@بر 03.ا .
تحلیل What if
برخی مواقع مقدار دقیق یک پارامتر را نداریم و می خواهیم برای
محدوده ای از اعداد ای@ن پارامت@ر را مقداردهی کرده و مدل را
ح@ل کنیم .در ای@ن مواق@ع در قس@مت داده ه@ا ب@ه جای اینکه مقدار
عددی آ@ن پارامت@ر را وارد کنی@م عالم@ت س@وال “ ? ” قرار می
دهیم .در ای@ن ص@ورت ه@ر بار ک@ه م@ی خواهی@م مدل را ح@ل کنیم،
لینگ@و مقدار عددی ای@ن پارامت@ر را از م@ا م@ی پرس@د و سپس شروع
به حل مدل می کند .به مثال زیر توجه کنید.
DATA:
? = INFLATION_RATE
ENDDATA
در ای@ن مثال ،در ه@ر بار ح@ل مدل ،لینگو مقدار
INFLATION_RATEرا ب@ه وس@یله پنجره ای از ما
می خواهد.
ب@ه مثال های زی@ر در مورد مقدارده@ی تک@ی ب@ه متغیرها و
پارامتر ها توجه کنید :
SETS
DAYS / MO, TU, WE, TH, FR, SA, SU/:
NEEDS;
ENDSETS
DATA:
NEEDS = 20;
ENDDATA
. می گیرند20 مقدارNEEDS در این مثال همه اعضای
SETS
DAYS / MO, TU, WE, TH, FR, SA, SU/:
NEEDS, COST;
ENDSETS
DATA:
NEEDS, COST = 20, 100;
ENDDATA
و همه اعضای20 مقدارNEEDS در ای@ن مثال هم@ه اعضای
. می گیرند100 مقدارCOST
در بخ@ش داده ه@ا اگ@ر مقدار برخ@ی از متغیره@ا وارد نشده باشد،
آنه@ا ب@ه ص@ورت متغیرهای تص@میم در نظ@ر گرفت@ه م@ی شون@د نه
اعداد ثابت .به مثال زیر توجه کنید :
SETS
;YEARS / 1..5 /: CAPACITY
ENDSETS
DATA
; CAPACITY = 34, 34, , ,
ENDDATA
در این مثال ) CAPACITY (1و ) CAPACITY (2برابر
34در نظ@ر گرفته م@ی شون@د و عناصر س@وم تا پنجمCAPACITY
متغیر به حساب می آیند.
بخش جواب اولیه
در بعض@ی از مس@ائل ،م@ا جواب@ی نس@بتا خوب و نزدی@ک@ به
بهین@ه را داری@م و ب@ه دنبال یافت@ن جواب بهین@ه و ی@ا بهتر
هس@تیم .در ای@ن موارد (خصوصا در مدل های عدد
ص@حیح و غی@ر خط@ی) ب@ا دادن جواب اولی@ه ب@ه لینگو،
س@ریعتر ب@ه جواب بهین@ه و ی@ا بهت@ر خواهی@م رس@ید .این کار
ک@ه اختیاری م@ی باش@د در بخ@ش جواب اولی@ه و مابین دو
کلمه کلیدی INITو ENDINITصورت می گیرد.
توابع و عملگرها در لینگو
برای تس@هیل مدل س@ازی ،در لینگ@و تواب@ع و عملگرهای متفاوتی
وجود دارند .حت@ی اگ@ر ب@ا شک@ل کل@ی اس@تفاده از ای@ن توابع
آشنای@ی نداشت@ه باشی@د ،لینگ@و ای@ن شک@ل کل@ی را در اختیار شما
قرار م@ی دهد .برای ای@ن منظور در منوی Editگزینه Paste
Functionرا انتخاب نمایی@د ،مالحظ@ه م@ی کنی@د ک@ه لیستی از
انواع توابع برای شما نمایش داده می شود.
: این لیست به شرح زیر می باشد
External Files Function
Financial Function
Mathematical Function
Probability Function
Set Function
Variable Domain Function
Other Function
بررس@ی ت@ک ت@ک ای@ن تواب@ع از س@طح کار ما فرات@ر اس@ت؛ همچنین
ب@ه خاط@ر عدم نیاز ب@ه تواب@ع مال@ی و احتمال@ی در برنامه ریزی
خط@ی در اینج@ا فق@ط ب@ه تشری@ح برخ@ی تواب@ع دس@ته پنج@م و ششم
می پردازیم.
(در ص@ورتی ک@ه مایلی@د اطالعات بیشتری در ارتباط ب@ا س@ایر توابع
لینگ@و بدس@ت آوری@د در منوی Helpگزینه Help Topicsرا
انتخاب نمایی@د و پنجره محاوره ای باز شده را در حالت
Indexقرار دهی@د؛ س@پس کلم@ه Functionرا تای@پ کنید ،در
ای@ن حال@ت لینگ@و اطالعات مفی@د بس@یاری در اختیار شم@ا قرار می
دهد).
نکته :
قب@ل از معرف@ی تواب@ع ب@ه ای@ن نکت@ه مه@م توج@ه کنی@د که در
لینگو هنگام ب@ه کار بردن تواب@ع ،میبایست قبل از نام تاب@ع
از عالمت @ استفاده کرد.
در اینجا به بررسی دو تابع FORو SUMمی پردازیم.
تابعFOR
ای@ن تاب@ع در دس@ته Set Loopingیعن@ی تواب@ع حلقه ای قرار
دارد و شکل کلی آن بصورت زیر می باشد :
;)@FOR( Set : expression
در صورت استفاده از عبارات شرطی به صورت زیر عمل کنید :
;)@FOR( Set | condition: expression
وجود تاب@ع Forدر لینگ@و در واق@ع یک@ی از برتری های بارز این
زبان م@ی باشد .از ای@ن تاب@ع برای نس@بت دادن ی@ک ویژگ@ی به تمام
ی@ا بخش@ی از اعضای ی@ک مجموع@ه اس@تفاده م@ی کنیم .به مثال های
زیر توجه کنید :
فرض کنی@د انباری داری@م ک@ه در آ@ن هف@ت قلم کاالی متفاوت
نگهداری می کنیم:
SETS:
;Items /1..7/: Capacity
ENDSETS
حال فرض کنی@د ظرفی@ت انبار محدود بوده و حداکث@ر 12واحد از
ه@ر قل@م م@ی توان در آ@ن نگهداری کرد .برای وارد کردن این
محدودیت به صورت زیر عمل می کنیم :
@);For(Items (i): Capacity (i) <= 12
این عبارت در واقع معادل عبارت زیر است :
;Capacity (1) <= 12
;Capacity (2) <= 12
;Capacity (3) <= 12
;Capacity (4) <= 12
;Capacity (5) <= 12
;Capacity (6) <= 12
;Capacity (7) <= 12
از آنج@ا ک@ه تمام متغیرهای ب@ه کار رفت@ه در مجموع@ه Itemsقرار دارند،
عبارت باال را به صورت زیر نیز می توان نوشت :
;)@For(Items: Capacity <= 12
توج@ه کنی@د ک@ه در ص@ورتی ک@ه متغیرهای ب@ه کار رفت@ه در Forمتعل@ق به
مجموعه های متفاوت باشند نمی توان از شکل خالصه شده باال استفاده کرد.
حال فرض کنی@د ظرفی@ت انبار فق@ط برای دو قل@م کاالی آخر
(اقالم 6و ) 7محدودی@ت داشت@ه باش@د؛ برای وارد کردن این
محدودی@ت از عبارات شرط@ی و عملگرهای منطق@ی استفاده
می کنیم :
@)For(Items (i) | i#GT#5: Capacity (i
);<= 12
تابعSUM
ای@ن تاب@ع نی@ز همانن@د تاب@ع Forدر دس@ته توابع Set Looping
قرار دارد و شکل کلی کاربرد آن به صورت زیر می باشد :
;)@SUM (Set: expression
در صورت استفاده از عبارات شرطی به صورت زیر عمل کنید :
;)@SUM (Set | condition: expression
از ای@ن تاب@ع برای محاس@به حاص@ل جم@ع اعضای ی@ک مجموع@ه یا
عبارت@ی شام@ل اعضای ی@ک مجموع@ه اس@تفاده می کنیم .برای
روشن شدن مطلب به مثال های زیر توجه کنید :
فرض کنی@د 5مشتری مختل@ف تقاضاهای متفاوت@ی از کاالی Xدارند؛ حال
این زیر برنامه را در نظر بگیرید :
SETS:
;Customers /1 2 3 4 5/: Demand, cost
ENDSETS
DATA
;Cost = 5 1 3 4 6
ENDDATA
حال اگ@ر بخواهی@م مجموع تقاضاه@ا برای کاالی Xرا محاس@به نماییم،
کافیست عبارت زیر را به برنامه بیافزاییم :
Total_Demand = @Sum (Customers (i): Demand
));(i
در واقع این عبارت معادل عبارت زیر می باشد :
Total_Demand = Demand (1) + Demand (2) +
;)Demand (3) + Demand (4) + Demand (5
می توانستیم از عبارت خالصه شده زیر نیز استفاده کنیم :
Total_Demand
=
@Sum
(Customers:
;)Demand
» بخش سوم « حل مسائل
• انواع مسائل
• – Case Studyب@@@یانم@سئله@
• تحلیل خروجی
• تحلیل حساسیت
انواع مسائل
لینگو قادر به ح@ل مسائل مختل@ف بهینه س@ازی از جمل@ه برنامه های خطی،
کوآدراتی@ک ،خط@ی عدد ص@حیح ،کوآدراتی@ک عدد صحیح ،عدد
ص@حیح خط@ی خال@ص ،عدد ص@حیح کوآدراتی@ک خال@ص ،غی@ر خط@ی ،غیر
خط@ی عدد ص@حیح و غی@ر خط@ی عدد ص@حیح خال@ص می باش@د .مدل
های فوق توس@ط لینگ@و تشخی@ص داده شده و در گزارش خروجی مدل
پ@س از ح@ل آ@ن ب@ه ترتیب فوق LP، QP، ILP، IQP، PILP،
PIQP، NLP، INLP، PINLPخواهی@م داشت .در اینج@ا به
پیاده سازی و تحلیل یک مدل خطی می پردازیم.
Case Study
شرک@ت داکوت@ا فرنیچ@ر ،تولی@د کننده می@ز تحری@ر ،می@ز و ص@ندلی است.
تولی@د ه@ر کدام از انواع مبلمان ب@ه الوار و دو نوع نیروی کار ماهر در
دو زمین@ه نجاری و پرداخ@ت نیاز دارد .انواع مبلمان به الوار و دو نوع
نیروی کار ماه@ر در دو زمین@ه نجاری و پرداخ@ت نیاز دارد .مقدار هر
ی@ک از مناب@ع مورد نیاز برای تولی@د ه@ر یک از انواع مبلمان در جدول
ذیل آمده است :
منبع
میز تحریر
میز
صندلی
الوار (فوت تخته)
8
6
1
زمان پرداخت (ساعت)
4
2
5/1
زمان نجاری (ساعت)
2
5/1
5/0
در حال حاض@ر 48 ،فوت تخت@ه از الواره@ا 20 ،س@اعت زمان پرداخت و 8
س@اعت زمان نجاری موجود اس@ت .ه@ر می@ز تحری 60دالر ،میز 30دالر و
ص@ندلی 20دالر ب@ه فروش م@ی رس@د .ب@ا فرض اینک@ه مناب@ع در دس@ترس به
تازگ@ی تدارک دیده شده باشن@د ،شرک@ت داکوت@ا م@ی خواه@د ک@ل سود
خود را به حداکثر برساند.
متغیر های تصمیم بصورت ذیل تعریف شده اند :
: Deskت@@ع@داد م@یز ت@@حریرهایت@@ول@ید ش@@ده@
: Tableت@@ع@داد م@یزهایت@@ول@ید ش@@ده@
: Chairت@@ع@داد ص@@ندل@یهایت@@ول@ید ش@@ده@
شرکت داکوتا به ح@ل مدل خطی زیر نیاز دارد :
Max z = 60 Desk + 30 Table + 20 Chair
s.t
@ت8 Desk + 6 Table + Chair <= 48
م@حدیدی (
)ا@لوار
@ت 4 Desk + 2 Table + 1.5 Chair <= 20
م@حدود@ی (
)پ@@ردا@خ@ت
@ت 2 Desk + 1.5 Table + 0.5 Chair <= 8
م@حدود@ی (
)ن@@جار@ی
)م@حدود@ی@تت@@قاضایم@یز( Table <= 5
Desk, Table, Chair >= 0
مدل فوق به زبان لینگو در قسمت Lingo Modelوارد می شود :
با استفاده از گزینه Solveجواب نهایی سیمپلکس بصورت زیر خواهد بود :
تحلیل خروجی
Objective value: 280.0000
مشخص می کند که مقدار بهینه تابع هدف 280است.
Valueم@قدار م@تغیر در ج@وا@بب@@@هینه@ م@دلخ@طیرا م@ید@هد .ب@@@نابرا@ینج@وا@ب
@ست
@ی .
ب@@@هینه@ دا@کوتا ت@@ول@ید 2م@یز ت@@حریر ،ص@@فر م@یز ،و 8ص@@ندل ا
Reduced Costض@@ری@بم@تغی@ر در س@@طر ص@@فر ج@دو@لب@@@هین@ه@ را م@ی
@ی همان@گ@ون@ه@ ک@@ه@ م@یدا@ن@ید ب@@ای@د هزین@ه@ ک@@اهش
د@ه@د (م@س@ئله@ م@اکزیم@مس@@از ).
ی@@اف@ته@ هر م@تغیر پ@@ای@ه@ ب@@را@بر ص@@فر ب@@اشد .ب@@را@یی@@کم@تغیر غ@یر پ@@ایه@ ،xj
@ی@ستک@@ه@ ا@گ@ر xj ، 1وا@حدا@ضاف@ه@ ش@@ود ،ب@@@ه@ آن
هزین@ه@ ک@@اهشی@@اف@ته@ م@قدار ا
ا@نداز@ه@ ،ج@وا@بب@@@هین@ه@ ک@@اهشم@یی@@اب@د (در@حا@لیک@@ه@ ب@@@قی@ه@ م@تغیرهایغ@یر
پ@@ایه@ ب@@را@بر ص@@فر ب@@@مان@ند) .در خ@رو@ج@یل@@ینگ@و ب@@را@یم@سئله@ دا@کوتا ،هزینه@
@ی@گ@ر دا@کوت@ا ب@@@خوا@ه@د ی@@کم@یز
@تا@ی@نی@@عن ا
ک@@اهشی@@اف@ت@ه@ م@ی@ز ب@@را@بر 5ا@س .
@ت
ت@@ول@ید ک@@ند ،درآمد ب@@@ه@ ا@نداز@ه@ 5د@الر ک@@اهشخ@وا@هد ی@@اف .
در قس@مت بعدی از خروج@ی ی@ا Reportمشاهده م@ی کنی@م ک@ه ه@ر خط
مدل ب@ا شماره ای مشخ@ص شده و در مقاب@ل آن دو عبارت Slack or
Surplusو Dual Priceمشاهده می شود :
Slack or Surplusم@قدار ک@@مبود ی@@ا ا@ضاف@ی(م@ازاد) در ج@وا@بب@@@هینه@
را ن@@ش@انم@ید@هد .ب@@@نابرا@ی@ن 24ف@@وتت@@خت@ه@ ا@لوار و 5ع@دد م@یز ب@@@ه@ ص@@ور@ت
@شت
م@ازاد و@جود خ@وا@هد دا .
@یت
س@@متا@ستم@حدود ،
ر
@ی@ستک@@ه@ ا@گ@ر
Dual Priceی@@ا ق@@یم@تس@@ایه@ م@قدار ا
آن@نداز@ه@ ج@وا@بب@@@هین@ه@ ،ب@@@هبود م@یی@@اب@د ( ب@@ا
ی@@کوا@ح@دا@ضاف@ه@ ش@@ود ،ب@@@ه@ ا
ف@@رضا@ینک@ه@ ا@ی@نت@@غییرا@تب@@اع@ثاز د@س@تر@ف@ت@نپ@@ای@ه@ ب@@@هین@ه@ ف@@عل@ین@@می
@تپ@@ای@ه@ ف@@علی
ش@@ون@د ) .ا@گ@ر ب@@@ع@د از ی@@کت@@غیی@ر در ط@رفرا@س@تم@حدود@ی ،
م@مکن@ستت@@غییر ک@@ند.
ا
د@یگ@ر ب@@@هینه@ ن@@ماند ،ق@@یمتهایس@@ایه@ م@حدود@یتها
تحلیل حساسیت
پ@س از ح@ل مدل توس@ط Solveب@ا اس@تفاده از گزینه Rangeموجو@د در منوی
LINGOگزارش خروج@ی تحلی@ل حس@اسیت مدل را مشاهده م@ی کنی@م ،در صورت
مشاهده خط@ا وارد LINGO Optionشده و گزینه Dual Computationsاز
قسمت General Solverرا در حالت@ سوم قرار دهید.
تحلی@ل حس@اسیت نشان م@ی ده@د ک@ه ضرای@ب تاب@ع ت@ا چه میزان
م@ی توانن@د افزای@ش ی@ا کاه@ش یابن@د بدون اینک@ه پای@ه بهین@ه مسئله
(مجموع@ه متغیرهای غی@ر ص@فر) عوض شود .تحلی@ل حساسیت
شام@ل دو بخ@ش اس@ت ،یک@ی مربوط ب@ه تابع هدف و دیگری
مربوط ب@ه محدودی@ت ه@ا ،ک@ه در ه@ر کدام ب@ه تفکیک مقدار
واقعی و مقادیر کاهش و افزایش قید شده است.
در پایان با استفاده از گزینه Solutionدر منوی LINGO
م@ی توانی@د نمای@ش گرافیک@ی از ه@ر یک از متغیرهای موجود در
مدل را داشته باشید.
u
u
o
o
Y
Y
k
k
n
n
a
a
h
T
Th