البرمجة التربيعية المتسلسلة

البرمجة التربيعية المتسلسلة ( SQP ) هي طريقة تكرارية لتحسين المعادلات غير الخطية المقيدة ، وتُعرف أيضاً باسم طريقة لاغرانج-نيوتن. تُستخدم طرق SQP في المسائل الرياضية التي تكون فيها دالة الهدف والقيود قابلة للتفاضل مرتين بشكل مستمر ، ولكن ليس بالضرورة أن تكون محدبة .

تحلّ طرق البرمجة التربيعية المتسلسلة (SQP) سلسلة من مسائل التحسين الفرعية، حيث تعمل كل منها على تحسين نموذج تربيعي للدالة الهدف مع مراعاة خطية القيود. إذا كانت المسألة غير مقيدة، فإن الطريقة تُختزل إلى طريقة نيوتن لإيجاد النقطة التي ينعدم عندها تدرج الدالة الهدف. أما إذا كانت المسألة تحتوي على قيود مساواة فقط، فإن الطريقة تُكافئ تطبيق طريقة نيوتن على شروط الأمثلية من الدرجة الأولى، أو شروط كاروش-كون-تاكر ، للمسألة.

أساسيات الخوارزميات

رسم تخطيطي عام يوضح خوارزمية SQP الأساسية

لنفترض مسألة برمجة غير خطية على النحو التالي:

مينxو(x)رهناً بـح(x)0ز(x)=0.{\displaystyle {\begin{array}{rl}\min \limits _{x}&f(x)\\{\mbox{subject to}}&h(x)\geq 0\\&g(x)=0.\end{array}}}

أينxRن{\displaystyle x\in \mathbb {R} ^{n}}،و:RنR{\displaystyle f:\mathbb {R} ^{n}\rightarrow \mathbb {R} }،ح:RنRمأنا{\displaystyle h:\mathbb {R} ^{n}\rightarrow \mathbb {R} ^{m_{I}}}وز:RنRمهـ{\displaystyle g:\mathbb {R} ^{n}\rightarrow \mathbb {R} ^{m_{E}}}.

دالة لاغرانج لهذه المسألة هي [ 1 ]

ل(x،λ،σ)=و(x)+λح(x)+σز(x)،{\displaystyle {\mathcal {L}}(x,\lambda ,\sigma )=f(x)+\lambda h(x)+\sigma g(x),}

أينλ{\displaystyle \lambda }وσ{\displaystyle \sigma }هي مضاعفات لاغرانج .

حالة القيد على المساواة

إذا لم تتضمن المسألة قيودًا على عدم المساواة (أي،مأنا=0{\displaystyle m_{I}=0}) شروط الأمثلية من الدرجة الأولى (المعروفة أيضًا باسم شروط KKT )ل(x،σ)=0{\displaystyle \nabla {\mathcal {L}}(x,\sigma )=0}هي مجموعة من المعادلات غير الخطية التي يمكن حلها بشكل تكراري باستخدام طريقة نيوتن . تعمل طريقة نيوتن على تحويل شروط كاروش-كون-تاكر إلى شروط خطية عند التكرار الحالي.[xك،σك]تي{\displaystyle \left[x_{k},\sigma _{k}\right]^{T}}، مما يوفر التعبير التالي لخطوة نيوتن[دx،دσ]تي{\displaystyle \left[d_{x},d_{\sigma }\right]^{T}}:

[دxدσ]=-[xx2ل(xك،σك)]-1xل(xك،σك)=-[xx2ل(xك،σك)ز(xك،σك)زتي(xك،σك)0]-1[و(xك)+σكز(xك)ز(xك)]{\displaystyle {\begin{bmatrix}d_{x}\\d_{\sigma }\end{bmatrix}}=-[\nabla _{xx}^{2}{\mathcal {L}}(x_{k},\sigma _{k})]^{-1}\nabla _{x}{\mathcal {L}}(x_{k},\sigma _{k})=-{\begin{bmatrix}\nabla _{xx}^{2}{\mathcal {L}}(x_{k},\sigma _{k})&\nabla g(x_{k},\sigma _{k})\\\nabla g^{T}(x_{k},\sigma _{k})&0\end{bmatrix}}^{-1}{\begin{bmatrix}\nabla f(x_{k})+\sigma _{k}\nabla g(x_{k})\\g(x_{k})\end{bmatrix}}}،

أينxx2ل(xك،σك){\displaystyle \nabla _{xx}^{2}{\mathcal {L}}(x_{k},\sigma _{k})}يرمز إلى مصفوفة هيسيان لدالة لاغرانج، ودx{\displaystyle d_{x}}ودσ{\displaystyle d_{\sigma }}يمثلان الإزاحتين الأولية والثنائية على التوالي. تجدر الإشارة إلى أنه لا يتم عكس مصفوفة لاغرانج الهيسية بشكل صريح، ويتم حل نظام خطي بدلاً من ذلك.

عندما يكون الهيسي اللاغرانجي2ل(xك،σك){\displaystyle \nabla ^{2}{\mathcal {L}}(x_{k},\sigma _{k})}إذا لم تكن المصفوفة موجبة تمامًا ، فقد لا توجد خطوة نيوتن، أو قد تُشير إلى نقطة ثابتة ليست صغرى محلية (بل كبرى محلية أو نقطة سرجية). في هذه الحالة، يجب تنظيم مصفوفة هيسيان لاغرانج، على سبيل المثال، يمكن إضافة مضاعف لمصفوفة الوحدة إليها بحيث تصبح المصفوفة الناتجة موجبة تمامًا.

تتمثل إحدى وجهات النظر البديلة للحصول على الإزاحات الثنائية الأولية في بناء وحل نموذج تربيعي محلي للمسألة الأصلية عند التكرار الحالي:

ميندxو(xك)+و(xك)تيدx+12دxتيxx2ل(xك،σك)دxs.ت.ز(xك)+ز(xك)تيدx=0.{\displaystyle {\begin{array}{rl}\min \limits _{d_{x}}&f(x_{k})+\nabla f(x_{k})^{T}d_{x}+{\frac {1}{2}}d_{x}^{T}\nabla _{xx}^{2}{\mathcal {L}}(x_{k},\sigma _{k})d_{x}\\\mathrm {s.t.} &g(x_{k})+\nabla g(x_{k})^{T}d_{x}=0.\end{array}}}

تتوافق شروط الأمثلية لهذه المسألة التربيعية مع شروط كاروش-كون-تاكر الخطية للمسألة الأصلية. لاحظ أن الحدو(xك){\displaystyle f(x_{k})}يمكن حذف في التعبير أعلاه، لأنه ثابت تحتميند{\displaystyle \min \limits _{d}}المشغل.

الحالة المقيدة بعدم المساواة

في ظل وجود قيود عدم المساواة (مأنا>0{\displaystyle m_{I}>0}), يمكننا بشكل طبيعي توسيع تعريف النموذج التربيعي المحلي الذي تم تقديمه في القسم السابق:

ميندو(xك)+و(xك)تيد+12دتيxx2ل(xك،λك،σك)دs.ت.ح(xك)+ح(xك)تيد0ز(xك)+ز(xك)تيد=0.{\displaystyle {\begin{array}{rl}\min \limits _{d}&f(x_{k})+\nabla f(x_{k})^{T}d+{\frac {1}{2}}d^{T}\nabla _{xx}^{2}{\mathcal {L}}(x_{k},\lambda _{k},\sigma _{k})d\\\mathrm {s.t.} &h(x_{k})+\nabla h(x_{k})^{T}d\geq 0\\&g(x_{k})+\nabla g(x_{k})^{T}d=0.\end{array}}}

خوارزمية SQP

تبدأ خوارزمية SQP من التكرار الأولي(x0،λ0،σ0){\displaystyle (x_{0},\lambda _{0},\sigma _{0})}في كل تكرار، يتم بناء وحل المسألة الفرعية QP؛ واتجاه خطوة نيوتن الناتج[دx،دλ،دσ]تي{\displaystyle [d_{x},d_{\lambda },d_{\sigma }]^{T}}تُستخدم لتحديث التكرار الحالي:

[xك+1،λك+1،σك+1]تي=[xك،λك،σك]تي+[دx،دλ،دσ]تي.{\displaystyle \left[x_{k+1},\lambda _{k+1},\sigma _{k+1}\right]^{T}=\left[x_{k},\lambda _{k},\sigma _{k}\right]^{T}+[d_{x},d_{\lambda },d_{\sigma }]^{T}.}

تُكرر هذه العملية لـك=0،1،2،...{\displaystyle k=0,1,2,\ldots }إلى أن يتم استيفاء معيار التقارب.

التطبيقات العملية

تُعدّ التطبيقات العملية لخوارزمية SQP أكثر تعقيدًا بكثير من نسختها الأساسية المذكورة أعلاه. ولتكييف SQP مع التطبيقات الواقعية، يجب معالجة التحديات التالية:

  • إمكانية وجود مشكلة فرعية غير قابلة للحل في البرمجة التربيعية.
  • مشكلة فرعية في البرمجة التربيعية تؤدي إلى خطوة سيئة: خطوة إما تفشل في تقليل الهدف أو تزيد من انتهاك القيود.
  • انهيار التكرارات بسبب الانحراف الكبير للأهداف/القيود عن نماذجها التربيعية/الخطية.

وللتغلب على هذه التحديات، يتم عادةً استخدام استراتيجيات متنوعة:

  • استخدام دوال الجدارة، التي تقيّم التقدم نحو حل مقيد، أو خطوات غير رتيبة، أو أساليب التصفية.
  • تعتمد طرق البحث عن المناطق أو الخطوط على إدارة الانحرافات بين النموذج التربيعي والهدف الفعلي.
  • مراحل خاصة لاستعادة الجدوى لمعالجة المشكلات الفرعية غير القابلة للحل، أو استخدام المشكلات الفرعية المعاقبة من المستوى الأول لتقليل عدم الجدوى تدريجيًا

يمكن دمج هذه الاستراتيجيات بطرق عديدة، مما ينتج عنه مجموعة متنوعة من أساليب SQP.

مناهج بديلة

التطبيقات

تم تطبيق طرق البرمجة التربيعية المتسلسلة (SQP) في بيئات عددية معروفة مثل MATLAB و GNU Octave . كما توجد العديد من مكتبات البرامج، بما في ذلك البرامج مفتوحة المصدر.

  • يحتوي SciPy (المعيار الفعلي لـ Python العلمي) على محلل scipy.optimize.minimize(method='SLSQP').
  • NLopt (تنفيذ بلغة C/C++، مع العديد من الواجهات بما في ذلك Julia وPython وR وMATLAB/Octave)، تم تنفيذه بواسطة Dieter Kraft كجزء من حزمة للتحكم الأمثل، وتم تعديله بواسطة SG Johnson. [ 2 ] [ 3 ]
  • برنامج ALGLIB لحل مسائل SQP (C++، C#، Java، واجهة برمجة تطبيقات Python)
  • يقوم برنامج acados (C مع واجهات لـ Python و MATLAB و Simulink و Octave) بتنفيذ طريقة SQP مصممة خصيصًا لبنية المشكلة الناشئة في التحكم الأمثل ، ولكنه يعالج أيضًا البرامج غير الخطية العامة.

وتجاري

انظر أيضاً

ملحوظات

  1. خورخي نوسيدال وستيفن ج. رايت (2006). التحسين العددي . سبرينغر. ISBN 978-0-387-30303-1.
  2. كرافت، ديتر (سبتمبر 1994). "الخوارزمية 733: TOMP - وحدات فورتران لحسابات التحكم الأمثل" . معاملات ACM في البرمجيات الرياضية . 20 (3): 262-281 . CiteSeerX 10.1.1.512.2567 . doi : 10.1145/192115.192124 . S2CID 16077051. تاريخ الاسترجاع: 1 فبراير 2019 .  
  3. "خوارزميات NLopt: SLSQP" . اقرأ الوثائق . يوليو 1988. تم الاطلاع عليه في 1 فبراير 2019 .
  4. دليل مستخدم KNITRO: الخوارزميات

مراجع