Gekko (نرم افزار بهینه سازی)

بسته پایتون **GEKKO**  معادلات جبری اعداد صحیح مختلط و دیفرانسیل در مقیاس بزرگ را با حل کننده های برنامه نویسی غیرخطی ( IPOPT ، APOPT ، BPOPT، SNOPT ، MINOS ) حل می کند. حالت‌های عملیات شامل یادگیری ماشین، تطبیق داده‌ها، بهینه‌سازی بلادرنگ، شبیه‌سازی پویا و کنترل پیش‌بینی مدل غیرخطی است. علاوه بر این، این بسته برنامه‌نویسی خطی (LP)، برنامه‌ریزی درجه دوم (QP)، برنامه‌ریزی درجه دوم محدود (QCQP)، برنامه‌نویسی غیرخطی (NLP)، برنامه‌نویسی عدد صحیح مختلط (MIP) و برنامه‌ریزی خطی عدد صحیح مختلط (MILP) را حل می‌کند. GEKKO در پایتون موجود است و با pip از PyPI بنیاد نرم‌افزار پایتون نصب می‌شود.

pip install gekko

GEKKO روی همه پلتفرم ها و با پایتون 2.7 و 3+ کار می کند. به طور پیش فرض، مشکل به یک سرور عمومی ارسال می شود که در آنجا راه حل محاسبه می شود و به پایتون باز می گردد. گزینه های پردازنده Windows، MacOS، Linux و ARM (Raspberry Pi) بدون اتصال به اینترنت قابل حل هستند. GEKKO یک توسعه از مجموعه بهینه سازی APMonitor است اما مدل سازی و تجسم راه حل را مستقیماً در پایتون ادغام کرده است. یک مدل ریاضی بر حسب متغیرها و معادلات بیان می‌شود، مانند مسئله معیار Hock & Schittkowski #71  برای آزمایش عملکرد حل‌کننده‌های برنامه‌ریزی غیرخطی استفاده می‌شود. این مسئله بهینه سازی خاص یک تابع هدف دارد \min_{x\in\mathbb R}\; x_1 x_4 (x_1+x_2+x_3)+x_3 و مشروط به محدودیت نابرابری x_1 x_2 x_3 x_4 \ge 25 و محدودیت برابری {x_1}^2 + {x_2}^2 + {x_3}^2 + {x_4}^2=40 . چهار متغیر باید بین کران پایینی 1 و کران بالایی 5 باشند. مقادیر حدس اولیه هستند x_1 = 1, x_2=5, x_3=5, x_4=1 . این مشکل بهینه سازی با GEKKO مطابق شکل زیر حل می شود.

## کاربرد های gekko
کاربردها عبارتند از تولید همزمان (قدرت و گرما) ،  اتوماسیون حفاری ،  کنترل فشار شدید،  تولید انرژی حرارتی خورشیدی،  سلول های سوختی اکسید جامد ،   تضمین جریان،  بازیافت نفت پیشرفته ،  استخراج اسانس ،  و وسایل نقلیه هوایی بدون سرنشین (UAVs) .  ارجاعات زیادی به APMonitor و GEKKO به عنوان نمونه ای از انواع برنامه های کاربردی قابل حل وجود دارد. GEKKO از کمک مالی تحقیقاتی بنیاد ملی علوم (NSF) به شماره 1547110     توسعه یافته است و در مجموعه شماره ویژه برنامه ریزی و کنترل ترکیبی به تفصیل آمده است.  سایر موارد قابل توجه GEKKO فهرستی در درخت تصمیم برای نرم افزار بهینه سازی،  پشتیبانی اضافه شده برای حل کننده های APOPT و BPOPT،  گزارش پروژه های دوره آنلاین بهینه سازی پویا از شرکت کنندگان بین المللی است.  GEKKO موضوعی در انجمن های آنلاین است که در آن کاربران در حال حل مسائل بهینه سازی و کنترل بهینه هستند.   GEKKO برای کنترل پیشرفته در آزمایشگاه کنترل دما (TCLab)  برای آموزش کنترل فرآیند در 20 دانشگاه استفاده می شود.    

from gekko import brain

import numpy as np

()b=brain.Brain

(1)b.input_layer

b.layer(linear=3)

b.layer(tanh=3)

b.layer(linear=3)

b.output_layer(1)

x=np.linespace(-np.pi,3*np.pi,20)

y=2-np.cos(x)

b.learn(x,y)

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

## یادگیری ماشین
یکی از کاربردهای یادگیری ماشین ، انجام رگرسیون از داده های آموزشی برای ایجاد یک همبستگی است. در این مثال، یادگیری عمیق یک مدل از داده های آموزشی تولید می کند که با تابع تولید می شود 1-\cos(x) . برای این مثال از یک شبکه عصبی مصنوعی با سه لایه استفاده شده است. لایه اول خطی، لایه دوم تابع فعال سازی مماس هذلولی و لایه سوم خطی است. این برنامه وزن پارامترهایی را تولید می کند که مجموع مجذور خطاهای بین نقاط داده اندازه گیری شده و پیش بینی های شبکه عصبی در آن نقاط را به حداقل می رساند. GEKKO از بهینه‌سازهای مبتنی بر گرادیان برای تعیین مقادیر وزن بهینه به جای روش‌های استاندارد مانند انتشار پس‌انداز استفاده می‌کند. شیب ها با تمایز خودکار، مشابه سایر بسته های محبوب، تعیین می شوند. این مسئله به عنوان یک مسئله بهینه سازی محدود حل می شود و زمانی همگرا می شود که حل کننده '''شرایط کاروش–کون–تاکر''' را برآورده کند. استفاده از یک بهینه ساز مبتنی بر گرادیان، محدودیت های اضافی را امکان پذیر می کند که ممکن است با دانش دامنه از داده ها یا سیستم اعمال شود.

## کنترل بهینه
کنترل بهینه استفاده از بهینه سازی ریاضی برای به دست آوردن یک خط مشی است که توسط دیفرانسیل محدود می شود \left(\frac{d\,x_1}{d\,t}=u\right) ، برابری \left(x_1(0) = 1\right) ، یا نابرابری \left(-1 \le u(t) \le 1\right) معادله می کند و یک تابع هدف/پاداش را به حداقل می رساند \left(\min_u \frac{1}{2} \int_0^2 x_1^2(t) \, dt\right) . کنترل بهینه اولیه با GEKKO با ادغام هدف و رونویسی معادله دیفرانسیل به شکل جبری با هم‌آمیزی متعامد بر روی عناصر محدود حل می‌شود.

## منابع

رده:مقاله‌های ایجادشده توسط ایجادگر
رده:زبان‌های برنامه‌نویسی عددی