نسخه جدید CPLEX با طعم یادگیری ماشینی !

 

بالاخره پس از سال‌ها گفتمان در خصوص امکان حل مسایل بهینه‌سازی با استفاده از مفاهیم یادگیری ماشینی، نرم‌افزار CPLEX از نسخه جدید ۱۲٫۱۰ با امکان بهره‌گیری از ابزارهای یادگیری ماشینی machine learning رونمایی کرد. این رویکرد مزایای فراوانی در پی دارد، مانند تخمین توابع هدف مبهم unknown objective functions، تخمین فضای حل نامحدب، مسایل بهنیه‌سازی ترکیبیاتی با تعداد متغیر بسیار زیاد یا محدودیت‌های سخت ارضاشونده اشاره کرد. در این پست قصد داریم گام به گام یک مساله ساده را با اتصال نرم‌افزار به فضای ابری IBM Watson حل نماییم.

از طرفی این رونمایی را می‌توان یک گام مثبت در جهت بهینه‌سازی داده محور ضمنی implicit data-driven optimization تلقی نمود. لیکن در مستندات نرم‌افزار تاکنون در خصوص عمکرد ذاتی این ویژگی صحبتی نشده و همچنین در خصوص اینکه مدل در ضمن فرایند بهینه‌سازی به چه نحوی به سرویس‌دهنده خورانده می‌شود اطلاعاتی در دسترس نیست. تنها شواهد در دسترس حاکی از این است که این ویژگی مسایل برنامه ریزی درجه دو مختلط MIQP را هدف قرار می‌دهد. نرم‌افزار CPLEX قبل از نسخه جدید، ابتدا مساله MIQP با تابع هدف غیرمحدب را به یک مساله برنامه‌ریزی عدد صحیح MIP تبدیل و تجزیه می‌کرد. طبق مستندات ارائه شده از IBM، در این نسخه الگوریتم گزینه‌ی دیگری نیز یعنی خطی‌سازی تابع هدف را در کنار الگوریتم تبدیل‌سازی گنجانده است. به‌عبارتی الگوریتم اصلی در سر دوراهی بررسی می‌کند که کدام یک از این دو روش برای ادامه کار مناسب است. تیم توسعه‌دهنده اذعان نموده است که سرعت حل تحت این شرایط ۱٫۸x بهبود می‌یابد.

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

قبل از شروع به حل یک مساله ابتدا بایستی در cloud.ibm.com ثبت‌نام کرده و سرویس watson machine learning و سرویس storage را ایجاد نمایید. برای هر کدام این دو سرویس credential جهت تبادل اطلاعات امن از طریق api ها این سرویس‌دهنده نیازمندیم.

 

ساختار api های credential دو سرویس در فرمت JSON و به صورت زیر خواهد بود.

 

سپس پس از نصب نرم‌افزار، بر روی پروژه‌ی مورد نظر خود گزینه run on watson machine learning را انتخاب می‌کنیم.

 

با کپی کردن اطلاعات api در پنجره زیر مدل آماده وصل شدن به سرویس‌دهنده ابری خواهد بود.

 

یک مساله ساده MIQP با تابع هدف غیرمحدب را به سرویس‌دهنده ارسال می‌کنیم. اطلاعات حل مدل در engine log نرم‌افزار به شرح زیر است. همانطور که واضح است ابزار یادگیری ماشینی خطی‌سازی را ترجیح نداده و به روش سنتی به حل ادامه داده است.

دیدگاه بگذارید