**بهینه‌سازی نیمه معین** یا SDP یک مسئله بهینه‌سازی برای تابع هدف خطی است.

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

مقدمات
------

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

{\displaystyle {\begin{array}{rl}{\displaystyle \min \_{x^{1},\ldots ,x^{n}\in \mathbb {R} ^{n}}}&{\displaystyle \sum \_{i,j\in [n]}c\_{i,j}(x^{i}\cdot x^{j})}\\{\text{subject to}}&{\displaystyle \sum \_{i,j\in [n]}a\_{i,j,k}(x^{i}\cdot x^{j})\leq b\_{k}\qquad \forall k}.\\\end{array}}}

روابط معادل
-----------

ماتریس M با سایز {\displaystyle n\times n} را مثبت نیمه معین می‌نامیم در صورتی که ماترس گرادیان مجموعه‌ای از بردارها باشد (یعنی بردارهای {\displaystyle x^{1},\ldots ,x^{n}} وجود داشته باشند که که {\displaystyle m\_{i,j}=x^{i}\cdot x^{j}} به ازای همهٔ مقادیر {\displaystyle i,j}). در این صورت داریم {\displaystyle M\succeq 0}. (توجه کنید که مثبت نیمه معین بودن تعاریف مختلف دارد.)

فرض کنید {\displaystyle \mathbb {S} ^{n}} فضای تمام ماتریس‌های حقیقی متقارن {\displaystyle n\times n} باشد. در اینصورت تعریف می‌کنیم

{\displaystyle \langle A,B\rangle \_{\mathbb {S} ^{n}}={\rm {tr}}(A^{T}B)=\sum \_{i=1,j=1}^{n}A\_{ij}B\_{ij}.}

با این تعریف می‌توان مسئله بهینه‌سازی معرفی شده در قسمت قبل را اینبار به اینصورت بازنویسی کرد:

{\displaystyle {\begin{array}{rl}{\displaystyle \min \_{X\in \mathbb {S} ^{n}}}&\langle C,X\rangle \_{\mathbb {S} ^{n}}\\{\text{subject to}}&\langle A\_{k},X\rangle \_{\mathbb {S} ^{n}}\leq b\_{k},\quad k=1,\ldots ,m\\&X\succeq 0\end{array}}}
با اضافه کردن متغیرهای اضافی می‌توان مسئله را به اینصورت عوض کرد:

{\displaystyle {\begin{array}{rl}{\displaystyle \min \_{X\in \mathbb {S} ^{n}}}&\langle C,X\rangle \_{\mathbb {S} ^{n}}\\{\text{subject to}}&\langle A\_{i},X\rangle \_{\mathbb {S} ^{n}}=b\_{i},\quad i=1,\ldots ,m\\&X\succeq 0.\end{array}}}
با داشتن تعریف استاندارد SDP می‌توان پاسخ آن را در {\displaystyle O(n^{3})} بدست آورد (با تجزیه چولسکی ماتریس X).

فرم دیگر (dual)
---------------

با داشتن فرم اولیه

{\displaystyle {\begin{array}{rl}{\displaystyle \min \_{X\in \mathbb {S} ^{n}}}&\langle C,X\rangle \_{\mathbb {S} ^{n}}\\{\text{subject to}}&\langle A\_{i},X\rangle \_{\mathbb {S} ^{n}}=b\_{i},\quad i=1,\ldots ,m\\&X\succeq 0\end{array}}}
می‌توان فرم دیگر مسئلهٔ فوق (P-SDP) را می‌توان به صورت زیر نوشت:

{\displaystyle {\begin{array}{rl}{\displaystyle \max \_{y\in \mathbb {R} ^{m}}}&\langle b,y\rangle \_{\mathbb {R} ^{m}}\\{\text{subject to}}&{\displaystyle \sum \_{i=1}^{m}}y\_{i}A\_{i}\preceq C\end{array}}}
که در آن {\displaystyle P\succeq Q} یا {\displaystyle P-Q\succeq 0}.

مثال‌ها
-------

کاربردها
--------

روشهای بهینه‌سازی نیمه معین کاربردهای بسیاری در مسائل بهینه‌سازی ترکیبیاتی مثلاً مسئلهٔ برش بیشینه دارند. همچنین کاربردهای بسیار در کنترل دارند.

منابع
-----

* Lieven Vandenberghe, Stephen Boyd, "Semidefinite Programming", SIAM Review 38, March 1996, pp.  49–95. pdf
* Monique Laurent, Franz Rendl, "Semidefinite Programming and Integer Programming", Report PNA-R0210, CWI, Amsterdam, April 2002. optimization-online
* E. de Klerk, "Aspects of Semidefinite Programming: Interior Point Algorithms and Selected Applications", Kluwer Academic Publishers, March 2002, ISBN 1-4020-0547-4.
* Robert M. Freund, "Introduction to Semidefinite Programming (SDP), SDP-Introduction

پیوند به بیرون
--------------

* Links to introductions and events in the field
* Lecture notes from Laszlo Lovasz on Semidefinite Programming

نرم‌افزارها
* JOptimizer: open source java library for convex optimization
* Overview of existing software
* NEOS Solvers: A server that runs multiple algorithms for solving SDPs and other optimization problems
* SeDuMi: (Self-Dual-Minimization) solves optimization problems over symmetric cones (this includes semidefinite optimization).
* YALMIP: MATLAB optimization toolbox and frontend for many sdp solver
* PICOS: a simple python interface for sdp solvers
* cvx: a MATLAB frontend that uses either SeDuMi or SDPT3
* cvxopt: a python solver

| * ن
* ب
* و
بهینه‌سازی: تئوری، روش‌ها، و ابتکارها |
| --- |
| 

| برنامه‌سازی نامقید غیرخطی: روش‌ها با استفاده از |
| --- |
| 

|  |  |
| --- | --- |
| … تابع‌ها | 
* Golden section search
* Interpolation methods
* Line search
* روش نلدر - مید
* Successive parabolic interpolation

 |
| … و گرادیان‌ها | 

|  |  |
| --- | --- |
| Convergence | 
* Trust region
* Wolfe conditions

 |
| Quasi–Newton | 
* روش بی‌اف‌جی‌اس and L-BFGS
* DFP
* Symmetric rank-one (SR1)

 |
| Other methods | 
* Gauss–Newton
* Gradient
* الگوریتم لونبرگ-مارکارد
* Conjugate gradient

 |

 |
| … و هشین‌ها | 
* Newton's method

 |

 |

 | The graph of a strictly concave quadratic function is shown in blue, with its unique maximum shown as a red dot. Below the graph appears the contours of the function: The level sets are nested ellipses.Optimization computes maxima and minima. |
| 

| برنامه‌سازی مقید غیرخطی |
| --- |
| 

|  |  |
| --- | --- |
| کلی | 
* Barrier methods
* روش پنالتی

 |
| مشتق‌پذیر | 
* Augmented Lagrangian methods
* Sequential quadratic programming
* Successive linear programming

 |

 |

 |
| 

| بهینه‌سازی محدب |
| --- |
| 

|  |  |
| --- | --- |
| بهینه‌سازی محدب | 
* Cutting-plane method
* Reduced gradient (Frank–Wolfe)
* Subgradient method

 |
| برنامه‌ریزی خطی ودرجه دو | 

|  |  |
| --- | --- |
| برنامه‌ریزی خطی | 
* Ellipsoid algorithm of Khachiyan
* الگوریتم کارمارکار

 |
| Basis-الگوریتم حریصانه | 
* الگوریتم غیر مرکب
* Revised simplex algorithm
* Criss-cross algorithm
* Principal pivoting algorithm of Lemke

 |

 |

 |

 |
| 

| بهینه‌سازی ترکیبیاتی |
| --- |
| 

|  |  |
| --- | --- |
| الگو‌ها | 
* الگوریتم تقریبی
* برنامه‌ریزی پویا
* الگوریتم حریصانه
* بهینه‌سازی خطی عدد صحیح
	+ شاخه و حد یا شاخه و برش

 |
| الگوریتم‌هایگراف | 

|  |  |
| --- | --- |
| درخت پوشای کمینه | 
* الگوریتم بلمن–فورد
* الگوریتم بروکا
* الگوریتم دیکسترا
* الگوریتم فلوید-وارشال
* الگوریتم جانسون
* الگوریتم کراسکال

 |

 |
| شبکه شاره | 
* الگوریتم دینیک
* الگوریتم ادموندز کارپ
* الگوریتم فورد–فالکرسون
* الگوریتم ارسال-برچسب

 |

 |

 |
| 

| الگوریتم‌های فراابتکاری |
| --- |
| 
* الگوریتم تکاملی
* الگوریتم تپه‌نوردی
* الگوریتم جستجوی محلی (بهینه‌سازی)
* الگوریتم تبرید شبیه‌سازی شده
* الگوریتم جستجوی ممنوعه

 |

 |
| 
* **رده‌ها**
	+ روش‌ها
	+ ابتکارها
* **نرم‌افزارها**

 |