- صورتبندی سوال
- الگوریتم بهینهسازی
- محدودیتها
- ایدههای گسترش
- روند اجرا
- نحوه استفاده
- وابستگیها
- نویسندگان
صورت برنامهریزی :
تابع نرم صفر یک تابع غیر محدب و ناپیوسته است و میتوان نشان داد که برنامه ریزی بالا
با پیاده سازی این بخش در جومپ میتوان به یک جواب شدنی رسید. اما برای بیشتر کردن تعداد سطر های صفر دو روش مختلف به کار گرفتیم :
روش اول : وزن دار کردن تابع هدف و به روز رسانی وزن ها
ایدهی کلی این است که هر درآیه از بردار تابع هدف را وزن دار کنیم و با بزرگ شدن اندازهی آن بردار وزن متناظر با آن را آپدیت کنیم به گونه ای که اثر درآیه ها بزرگتر در تابع هدف کمتر شود. این ایده در
این مقاله
بررسی شده است.
روش دوم :
استفاده از خروجی قسمت قبل و اضافه کردن سطر های صفر شده به عنوان قید به تابع هدف.
این ایده توسط متین امینی مطرح شد و تعداد سطر های صفر را کمی افزایش داد.
روش ها و رفرنس در بخش قبلی ذکر شدند.
محدودیتی در این بخش وجود ندارد و با نصب پکیج های مورد نظر میتوان یک جواب شدنی برای هر ۳ ورودی مسابقه به دست آورد.
در ایدهی آپدیت کردن وزن ها شاید بتوان از تابع موثر تری برای به روزرسانی وزن ها استفاده کرد. در این صورت کافیست تابع
نوت بوک شامل دو بخش است. بخش اول، پیاده سازی ایدهی اضافه کردن قید سطر صفر و بخش دوم پیاده سازی ایدهی آپدیت کردن وزن هاست. هر بخش یک خروجی میدهد که تعداد سطر های صفر در آن ها تفاوت اندکی دارد. در نهایت خروجی بهتر را سابمیت کردیم.
ابتدا بخش خواندن ورودی در نوت بوک ها را اجرا کنید. سپس میتوانید پیاده سازی هر ایده را که در نوت بوک به صورت جداگانه مشخص است ران بگیرید و خروجی در همان مسیر اجرایی ذخیره میشود.
برنامه در زبان جولیا نوشته شده و لیست پکیج های مورد نیاز در ادامه آمده است :
MAT
JuMP
GLPK
SparseArrays
DelimitedFiles
ایدهی آپدیت کردن وزن ها توسط آیدا افشارمحمدیان مطرح و پیاده سازی شد.
ایدهی اضافه کردن قید های سطر صفر توسط متین امینی مطرح و پیاده سازی شد.
متاسفانه خانم مهرانی به دلیل مشکلاتی نتوانستند به همکاری در مسابقه ادامه دهند.