اجرای دسته ای و گروهی کدهای cplex

 

مدتی است دوستان علاقه‌مند به وب‌سایت ortimes درخواست‌های مکرری جهت ارائه سازوکار مشخص و باثباتی جهت حل دسته‌ای (گروهی) مسائل در نرم‌افزار cplex به همراه چندین دیتاست مختلف داشته‌اند.

توجه !
روی سخن ما کاربرانی که از conert technology بهره می‌برند، نیست. طبیعتاً راه‌های ساده‌تری برای انجام این مهم با استفاده از این فناوری وجود دارد.

برای کاربرانی که از محیط IBM ILog CPLEX Optimization Studio استفاده می‌کنند یک راه‌حل موقتی در همین وب‌سایت ارائه گردید:

فایل اکسل اجرای کد CPLEX در تکرارهای مختلف

در این پست قصد داریم راه‌حل کاراتر دیگری را ارائه دهیم.

بیشتر بخوانید

شمارش تعداد جواب‌های مربع جادویی در CP Optimizer

 

 

مسایل برنامه‌ریزی عدد صحیح اغلب دارای جواب‌های بهینه یا شدنی چندگانه هستند و برای طراحی الگوریتم‌های کارا این جواب‌های چندگانه و ساختارهای موازی شناسایی می‌شوند. در این پست قصد داریم تعداد جواب‌های شدنی مساله‌ی مربع جادویی magic square را نه به کمک روش‌های تحلیلی بلکه به کمک نرم‌افزار CPLEX و توابع جستجوی موجود در آن، شمارش کنیم.

بیشتر بخوانید

فراخوانی ماتریس سه بعدی از اکسل در CPLEX

اخیرا سوالات و مشکلات زیادی در خصوص نحوه‌ی تعامل نرم‌افزار CPLEX با نرم‌افزار اکسل دریافت نموده‌ایم. در این پست قصد داریم نحوه‌ی ارتباط اساسی این دو نرم‌افزار و نحوه‌ی ورود و فراخوانی پارامترهای سه بعدی از نرم‌افزار اکسل را تشریح کنیم.

بیشتر بخوانید

محدودیت های تنبل در CPLEX


بسته به شرایط فضای شدنی و تابع هدف، محدودیت‌ها عملکردهای متفاوتی از خود نشان می‌دهند: محدودیت‌های کارکردی، غیرکارکردی، الزام‌آور، غیرالزام‌آور، فعال، زائد و غیره. محدودیت‌های دیگری نیز در این فضا قابل ارائه است که برخی از خواص محدودیت‌های سنتی را دارا هستند: هم الزام‌آور و هم غیرالزام‌آور. جای تعجب نیست که چنین محدودیت‌هایی در علم بهینه‌سازی محاسباتی نقش‌آفرینی می‌کنند. یک دسته از این محدودیت‌ها به محدودیت‌های تنبل lazy constraints مشهور هستند. در این پست قصد داریم این دسته محدودیت‌ها را معرفی و با ویژگی‌ها و کارکردهای آن در نرم‌افزار CPLEX آشنا شویم.

بیشتر بخوانید

تحقیق در عملیات: خلط جایگاه پژوهش و توسعه و تاثیر آن در معرفت پژوهشی

«تاکید بیش از حد بر روی شرایط رقابتی توسعه‌ی الگوریتم‌های سریع، اصولا غیرعقلانی بوده و در درازمدت بینشی جهت دستیابی به الگوریتم‌‌های مفید در پی نخواهد داشت.»، جان هوکر [۱]. مهمترین معضل شرایط رقابتی توسعه‌ی الگوریتم‌های کارا، ایجاد شرایط منصفانه جهت مقایسه است. شاید اولین ایده‌ای که به نظر می‌رسد این است که الگوریتم‌های پیشنهادی بر روی رایانه‌هایی با قدرت پردازش مساوی یا با قابلیت تنظیم اجرا شوند. لیکن فایق گشتن بر ابعاد پنهانی این معضل مانند مهارت‌های کدنویسی و تنظیمات اولیه قدری طاقت‌فرسا خواهد بود.

بیشتر بخوانید

مساله حداکثر برش MAXCUT: مقایسه رهاسازی نیمه معین Semi-definite programming با رهاسازی خطی


برنامه‌ریزی نیمه‌معین semi-definite programming یا به‌اختصار SDP کلاسی از بهینه‌سازی محدب convex optimization است که کاربرد آن در علم تحقیق در عملیات بسیار موفق بوده است. پوسته عدد صحیح مسائل برنامه‌ریزی عدد صحیح را می‌توان با دقت بالایی با برنامه‌ریزی نیمه معین تقریب زد. در این پست قصد داریم به مسئله حداکثر برش MAXCUT در تئوری گراف پرداخته و رهاسازی نیمه‌معین آن را با رهاسازی خطی مقایسه نماییم.

بیشتر بخوانید

نحوه ایجاد متغیر تصمیم چند بعدی در پلتفرم ++C با رابط Concert Technology

در این پست قصد داریم نحوه ایجاد یک دسته متغیر تصمیم سه بعدی را بررسی نماییم. در زبان OPL یک متغیر سه بعدی باینری به صورت زیر تعریف می‌شود:

i in 1..sizeSet1;
j in 1..sizeSet2;
k in 1..sizeSet3;
dvar Boolean x[i][j][k];

در زبان ++C از عبارت <>IloArray می‌توان جهت ایجاد لیستی از متغیرها (یک بردار متغیر تصمیم) و بدین ترتیب ماتریس‌های متغیر چند بعدی بهره گرفت. به عنوان مثال یک دسته متغیر تصمیم سه بعدی به صورت رویه‌ای که در ادامه آمده است، تعریف می‌شود. ابتدا لیست‌های مورد نظر تعریف می‌شود.

بیشتر بخوانید

رفع مشکل تحدب در مسایل درجه دو در نرم‌افزار IBM Ilog CPLEX

در این پست قصد داریم یکی از خطاهای مهمی که کاربران به دلیل مشکلات تحدب به آن دچار می‌شوند را بررسی و راهکارهایی برای رفع آن ارائه دهیم.

CPLEX Error 5002: Q in objective is not positive semi-definite (psd)

در صورتی که منبع ایجاد این خطا ناشی از وجود عبارات درجه دو در تابع هدف باشد، جای نگرانی نیست. بایستی خاطر نشان شویم که حالت پیش‌فرض نرم‌افزار CPLEX قادر به حل مسایل کمینه‌سازی با تابع هدف درجه دو محدب و مسایل بیشینه سازی با تابع هدف درجه دو مقعر است. از طرفی محدودیت‌ها هم‌چنان بایستی مفروضات برنامه‌ریزی محدب را ارضا نمایند.

بیشتر بخوانید

نحوه شناسایی تک کالبدی بودن ضرایب فنی

به ماتریس مربعی که دارای عناصر عدد صحیح ۰ یا ۱- یا ۱+ و دترمینان ۱- یا ۱ باشه، ماتریس تک کالبدی (unimodular matrix) گفته می‌شود. از طرفی، ماتریس کاملا تک کالبدی (totally unimodular) ماتریسی است که تمامی زیرماتریس‌های مربعی آن معکوس‌پذیر و تک کالبدی باشند. به عبارتی در صورتی که یک ماتریس ۸×۸ داشته باشیم، بایستی ۲۰۴ زیرماتریس آن را به لحاظ تک کالبدی بودن بررسی نماییم.
مزیت عمده این خاصیت این است که در برنامه ریزی تمام عدد صحیح، در صورتی که ماتریس ضرایب فنی دارای خاصیت کاملا تک‌کالبدی باشند، در اینصورت جواب‌های رهاشده خطی مساله عدد صحیح، همان جواب‌های مساله اصلی خواهند بود (تمامی متغیرها مقادیر صحیح می گیرند). به بیان دگر، پوسته محدب تمامی نقاط گوشه‌ای آن صحیح خواهند بود. برای بررسی کاملا تک‌کالبدی بودن یک برنامه‌ریزی عدد صحیح کافی است ماتریس ضرایب فنی آن را استخراج و تحلیل کرد.

بیشتر بخوانید

آشنایی با برنامه ریزی مخروطی درجه دوم

رده خاصی از مسائل غیرخطی، جز دسته مسائل برنامه ریزی مخروطی درجه دوم (second order conic programs) قرار می‌گیرند که در زمینه‌های متعدد علوم کنترل، سرمایه‌گذاری، علوم مهندسی و پزشکی و عیره کاربرد دارند. امروزه با پیشرفت علوم رایانشی، این دسته مسایل با استفاده از الگوریتم‌های تخصصی نقطه درونی (interior point) که در اکثر نرم‌افزارهای تجاری توسعه داده شده‌اند قابل حل هستند.

 

بیشتر بخوانید