\documentclass[12pt,a4paper]{report}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{fixltx2e}
\usepackage{amsmath,amssymb,mathtools}
\usepackage{MnSymbol}
\usepackage{hyperref}
\usepackage{setspace}
\onehalfspacing
\usepackage{float}
\usepackage{xepersian}
\DeclareGraphicsExtensions{.pdf,.png,.jpg}
\settextfont{XB Zar}
\definecolor{a}{RGB}{84,109,204}
\defpersianfont\myfont{IranNastaliq}
\newcommand{\myhyperref}[2]{\hyperref[#1]{#2\ref*{#1}}}


\begin{document}



\section{چکیده}
\doublespacing
بسیاری از فرآیند ها در دنیای واقعی ماهیت غیر خطی \LTRfootnote{Non Linear}دارند ، فرآیند های غیر خطی رفتار بسسیار متفاوتی از خودشان نشان می دهند.سیستم های غیر خطی متفاوت با توجه به نوع و ماهیت آن ها و رفتاری که از خو نشان میدهند در شرایط خاص می توانیم کنترل کننده های غیر خطی برایشان طراحی کنیم.  در روش DMC اگر یک فرآیند نزدیک به خطی داشته باشیم و یا از یک فرآیند غیر خطی در شرایط خاص استفاده کنیم میتوانیم با اعمال ورودی پله به فرآیند  و اندازه گیری پاسخ پله فرآیند یک مدل از این فرآیند بدست آوریم .ولی در فرآیند های غیر خطی که می خواهیم در یک رنج وسیعی از آن ها استفاده کنیم در یک ناحیه  ممکن است بهره ی ورودی به خروجی دارای یک بهره متفاوتی با تغییر شرایط سیستم ایجاد شود مثلاًاگر ورودی را افزایش می دهیم خروجی هم با یک بهره یک افزایش پیدا می کند ولی اگر شرایط کار عوض شود حالت های سیستم عوض می شود و ما در یک شرایط دیگری از سیستم قرار داشته باشیم وقتی ورودی را افزایش می دهیم خروجی ممکن است با بهره ی چهار افزایش پیدا کند و یا حتی خروجی کاهش پیدا کند یعنی بهره  منفی شده باشد . به همین جهت ما نمی توانیم کنترل کننده خطی را برای فرآیند غیر خطی  اعمال کنیم . بنابراین لازم است کنترل کنننده هم با تغییر شرایط فرآیند غیر خطی تغییر کند. پس ما نیازمند تغییر کنترل کننده با تغییر رفتار فرآیند هستیم. \\
همانطور که میدانیم کنترل پیش بین بر اساس مدل با توجه به مدلی که ما از فرآیند برای آن تعریف کردیم طراحی می شود . بنابراین تغییر کنترل کننده لازمه اش تغییر مدل فرآیند است که ما آن را به کنترل کننده پیش بین می دهیم  و با پیش بینی که این مدل برای کنترل کننده انجام میدهد کنترل کننده طراحی می شود . مدل مورد بحث در این پروژه از مقاله ی دکتر حائری که در فایل های مورد نظر ارائه شده ، برداشته شده است. در این پروژه ابتدا روش کنترل پیش بین تطبیقی  ارائه شده است سپس روش کنترل پیش بین EDMC  ارائه شده  که یک روش بر پایه DMC است که در سال 1992 توسط آقای Peterson ارائه شده است  البته این روش یک سری محدودیت هایی دارد که نمی توانیم برای هر سیستم غیر خطی اعمال کنیم.\\[30pt]


\section{ساختار DMC}
ما یک فرآیند داریم که رفتار غیر خطی دارد  و از این فرآیند یک مدل خطی بدست آوردیم( همان مدل پاسخ پله فرآیند ) ، در روش DMC ابتدا بهره کنترلی را محاسبه می کردیم و مقدار آن را  در اختلاف سیگنال مرجع  و خروجی های گذشته فرآیند منهای $D_*$  که در واقع اختلاف بین خروجی فرآیند و خروجی مدل بود و ما چون در لحظه ی t این اختلاف را داشتیم و ما برای پیش بینی رفتار آینده فرآیند به این اختلاف در زمان های آینده نیاز داشتیم ، این اختلاف را به آینده فرآیند تعمیم می دادیم و این فرض را در نظر می گرفتیم که در آینده هم این اختلاف ثابت باقی می ماند و عملکرد DMC  برای حذف اغتشاش های ثابت و عدم قطعیت های بین مدل و فرآیند که ثابت بوده اند عملکرد مطلوبی از خودش نشان میدهد ولی در فرآیند های غیر خطی چنین اتفاقی شکل نمی گیرد به عبارت دیگر اگر یک ورودی مشخصی به فرآیند اعمال کنیم این اختلاف در لحظه ی t مسلما ً با لحظه ی t+1  و t+2  متفاوت خواهد بود و تعمیم دادن اختلاف این مدل و فرآیند به لحظات آینده در عملکرد کنترلی سیستم شدیداً تاثیر خواهد گذاشت .\\
\begin{figure}[h!]
\centering
\includegraphics [width = 13cm]{feedback.pdf}
\caption{ساختار الگوریتم DMC}
\label{feed.1}
\end{figure}
\newpage
\section{مبدل DC/AC}
مدل مورد نظر از مقاله دکتر حائری انتخاب شده است . در واقع روش کنترل پیش بین تطبیقی که ارائه می شود بخشی از روش EDMC هست که یک روش کنترل پیش بین غیر خطی بر پایه روش DMC هست که در سال 1992 توسط آقای    Petrerson ارائه شده است . این روش یک محدودیت های خاصی دارد که نمی توانیم برای هر سیستم غیر خطی اعمال کنیم و این یکی از ویژگی های سیستم غیر خطی است که هر کلاسی از سیستم غیرخطی را می توانیم یک کنترل کننده مشخصی برای آن طراحی کنیم .\\
همانطور که می دانیم در الگوریتم DMC  مدل خطی فرآیند را داشتیم و پاسخ پله را بدست می آوردیم یا فرض می کردیم یک فرآیند را در یک شرایط خاصی می خواهیم کنترل کنیم و در آن شرایط خاص حول نقطه کار مشخص مدل خطی فرآیند را داشتیم و از روی آن پاسخ پله فرآیند را بدست می آوردیم ولی وقتی یک سیستم غیر خطی داریم و اگر بخواهیم مدل پاسخ پله را بدست بیاوریم باید از روش تقریب اویلر برای مشتق استفاده کنیم و برای حالت های اولیه سیستم و ورودی پله که به فرآیند اعمال می شود خروجی سیستم را محاسبه می کنیم و از روی خروجی سیستم مدل پاسخ پله فرآیند را بدست آوریم .\\[20pt]
\begin{subequations}
\begin{align}
\dot{x_1}(t) &= -\frac{x_2^2(t)}{x_1(t)} - 5x_1(t) + 5u(t)\\
\dot{x_2}(t) &= -\frac{x_2^3(t)}{x_1^2(t)} - 7x_2(t) + \left(\frac{5x_2(t)}{x_1(t)} + 2x_1(t)\right)u(t)\\
y(t) &= x_2(t)
\end{align}
\end{subequations}
\newpage
حالت $\dot{x_1}$را به صورت زیر می نویسیم :\\[10pt]
\begin{equation}
\dot{x_1} = \frac{x_1(t+T)-x_1(t)}{T}
\end{equation}
همانطور که می دانیم کنترل پیش بین چون در کامپیوتر محاسبات بصورت گسسته است هر چه\\$T\rightarrow 0$
میل کند تقریب ما دقیق تر است و شبیه سازی به واقعیت به مراتی نزدیک تر خواهد بود .\\
برای حالت $\dot{x_2}$ هم به همین روش مشتق را تقریب می زنیم  و وقتی مشتق را محاسبه کردیم می توانیم با توجه به شرایط اولیه و مقدار مشتق که با توجه به شرایط اولیه حالت ها و ورودی کنترلی بدست آمده $X_1(t+T)$ و $X_2(t+T)$ یعنی $x_1  $ و $x_2$ لحظه ی بعد را محاسبه کنیم و از روی آن خروجی فرآیند را بدست آوریم. از این مدل غیر خطی هم برای محاسبه ی پاسخ پله فرآیند و بدست آوردن مدل پاسخ پله و هم برای بروزرسانی خروجی فرآیند با توجه به سیگنال کنترلی فرآیند استفاده خواهیم کرد .
با اجرای برنامه Nonlinear DMC که در پیوست می باشد نتایج زیر بدست می آید .\\
\begin{figure}[h!]
\centering
\includegraphics[width =9cm]{fig1.pdf}
\caption{پاسخ پله سیستم }
\label{fig1}
\end{figure}

\newpage
شکل  2 پاسخ پله فرآیند را نشان می دهد . می توانستیم g  های بیشتری در نظر بگیریم چون هنوز به زمان نشست نرسیده ایم یعنی به حالت ماندگار نرسیدیم . مدل تقریبی از مدل اصلی است ولی چون فرآیند پایدار است این مدل معتبر است .\\

\begin{figure}[h!]
\centering
\includegraphics[width =11cm]{fig2.pdf}
\caption{خروجی مدل DMC }
\label{fig1}
\end{figure}
با توجه به پاسخ فرآیند در دنبال کردن سیگنال مرجع می بینیم که عملکرد کنترلی خوبی ندارد یعنی اگر سیستم به حالت سیگنال مرجع نزدیک می  شود به علت اختلافی که بین مدل و مدل غیر خطی وجود دارد اغتشاشاتی در نقاط مختلف میبینیم که دوباره کنترل کننده سعی می کند اغتشاش ها را دفع کند که رفته رفته دامنه ی اغتشاشات کم شده و به صفر نزدیک می شود . پس اختلاف بین رفتار مدل غیر خطی و مدل خطی باعث ایجاد اغتشاش در مسیر کنتررل می ششود . این اغتشاش هم به این خاطر است که پاسخ آزاد را برای اینکه این اغتشاششی که به فرآیند وارد می شود در کل فرآیند ثابت هست محاسبه کردیم ولی این اغتشاش بین مدل خطی فرآیند و غیر خطی ثابت نیست و باعث بروز چنین اغتشاش هایی در مسیر کنترل می شود .
\subsection{چگونه می توانیم مدل را دقیق تر کنیم ؟}
روش آقای Peterson به این صورت می باشد که در فاصله ی بین دو زمان نمونه برداری پاسخ پله ی مدل فرآیند را بدست آوریم بعد  با توجه به پاسخ پله ی مدل بدست آمده ما سیگنال کنترلی و پاسخ آزاد را بدست می آوریم و از روی آن سیگنال کنترلی محاسبه می شود و در واقع مدل ما در هر لحظه بروز می شودیعنی با تغییرات فرآیند غیر خطی  و فاصله ی بین هر زمان نمونه برداری مدل هم تغییر می کند یهنی ماتریس دینامیکی که از مدل پاسخ پله فرآیند در خارج از حلقه کنترلی بدست آمده و ثابت هست این را در فاصله ی بین نمونه برداری تغییر می دهیم .\\[20pt]
\begin{equation}
\Delta U(t) =\underbrace{ \left( G^T G +\gamma I     \right)^{-1}  G^T}_{\textrm{بهره ی DMC}}\times  E\left( t+1\right)
\label{eq.3}
\end{equation}

\begin{equation}
E(t+1) = Y_d (t+1) - Y_{past}(t+1) - D(t+1)
\label{eq.4}
\end{equation}

\begin{equation}
\begin{cases}
y_d(t) = y(t)\\
y_d(t+i) &= \alpha y_d(t + i - 1) + (1 - \alpha) r(t) , \qquad i = 1,\cdots , p \\
Y_d^T(t+1) &= [y_d(t+1)\quad y_d(t+2)\quad  \cdots \quad y_d(t+p)]
\end{cases}
\end{equation}\\[40pt]
\newpage
\begin{equation}
g_i = \frac{y_{per}(t +  i) - y_{past}(t + i )}{\delta}
\label{eq.6}
\end{equation}
\begin{equation}
\mathbf{G} = \begin{bmatrix}
g_0&0&0&\cdots&0\\
g_1&g_0&0&\cdots&0\\
\vdots&\vdots&\vdots&\ddots&\vdots\\
g_{p-1}&g_{p-2}&g_{p-3}&\cdots&g_{p-m}\\
\label{eq.7}
\end{bmatrix}
\end{equation}
این کار را با فرمول \eqref{eq.6} انجام میدهیم. با توجه به این رابطه ابتدا ورودی کنترلی را صفر فرض می کنیم و خروجی فرآیند را حساب می کنیم و باید یک مدل غیر خطی از فرآیند در دست داشته باشیم . \\
یک ورودی صفر به فرآیند اعمال می کنیم و با توجه به  اینکه حالت ها چه مقداری دارند مقدار$y_{past}$ محاسبه می شود. سپس ما یک ورودی $\delta$ که به اندازه ی ثابت (اندازه ورودی پله ) باز به مدل غیر خطی  فرآیند اعمال می کنیم  و با توجه به حالت ها  که الان در آن قرار داریم و فرآیند دارد کنترل می شود $y_{per}$ بدست می آید . اختلاف بین $y_{past}$ و $y_{per}$ تقسیم بر دامنه ی سیگنال پله که به $y_{per}$ اعمال شده $g_i$ ها را بدست می دهد. پس $g_i$ ها را بدست می آوریم و در ماتریس دینامیکی $G$  فرمول\eqref{eq.7} قرار می دهیم و از آن ها برای محاسبه ی پاسخ آزاد سیستم استفاده می کنیم.\\
طبق فرمول\eqref{eq.3}مقدار $ \Delta U$برابر است با بهره ی DMC ضبدر $E(t + 1)$  که خود$ E(t + 1)$  هم طبق فرمول \eqref{eq.4} برابر اختلاف بین سیگنال مرجع و سیگنال پاسخ آزاد منهای $D(t+ 1)$ که اغتشاش بین مدل و فرآیند هست که آن هم در بخش پاسخ آزاد محاسبه می شود . پس بدین ترتیب  در شرایطی که کار می کنیم مدل ما به روز می شود  و سیگنال کنترل با توجه به مدل جدید محاسبه می شود و به فرآیند اعمال می شود .\\
\newpage
\subsection{بهبود روش }        
مشکلی در این این قسمت وجود دارد این است که  در فرمول \eqref{eq.4}$D(t+1)$  که در واقع طبق فرمول \eqref{eq.8} اختلاف بین مدل و مقدار اندازه گیری شده فرآیند هست در DMC برای کل افق پیش بینی ثابت در نظر گرفته می شود ولی به این طریق اگر یک اغتشاش متغیری به فرآیند وارد شود که ناشی از دینامیک سیستم هست و شدیدا اغتشاش تغییر پیدا می کند این روش تطبیقی باز در بعضی مواقع دچار مشکل خواهد شد که به همین جهت است که روش EDMC مطرح شده است که یک روش کنترل پیش بین غیر خطی است و در این روش می توانیم D  را بهبود دهیم یعنی اغتشاشی که اختلاف بین مدل خطی و غیر خطی فرآیند را نشان می دهد و مقدارش ثابت نیست . یعنی مقدارش در طول افق پیش بینی تغییر می کند و انطباق بیشتری بین مدل خطی و غیر خطی ایجاد می شود .\\
\begin{equation}
d( t + i) = d(t) = y(t) - y_{m}(t) ,\qquad  i = 1 , \cdots,p
\label{eq.8}
\end{equation}
\newpage
\subsection{طراحی کنترل پیش بین تطبیقی}
در برنامه ی$ DMC-Adaptive$ که در پیوست موجود می باشد یک کنترل کننده پیش بین تطبیقی برای مدل غیر خطی فرآیند طراحی می کنیم . نتیجه این طراحی را در شکل \ref{fig.3} می بینیم . \\
\begin{figure}[h!]
\centering
\includegraphics[width =10cm]{fig3.pdf}
\caption{خروجی مدل DMC-Adaptive}
\label{fig.3}
\end{figure}\\[15pt]
همانطور که مشاهده می کنید ما تغییرات پله را که در ماتریس دینامیکی ساده داشتیم ، در اینجا نداریم .ولی باز در بخش هایی یک عدم انطباقی بین مدل و مدل غیر خطی فرآیند وجود دارد که باعث برآمدگی های خاصی شده است ولی در کل زمان شبیه سازی ، عملکرد کنترلی بهتری نسبت به حالت قبل مشاهده می کنید . ولی آنچه مسلم هست یک اختلافی بین پاسخ حالت ماندگار و سیگنال مرجع مشاهده می کنیم . هر چند سیگنال کنترلی تغییرمی کند ولی این تغییرات بسیار کند هست و به دلیل اختلاف بین مدل و فرآیند هست و اگر می خواهیم عملکرد کنترلی به مراتب بهتری داشته باشیم  باید آن اختلاف را هم وارد مدل پیش بینی کننده کنیم که این اختلاف در طول افق پیش بینی هم تغییر کند .\\
در قسمت EDMC اغتشاش D(t+1)  را به جای اینکه ثابت در نظر بگیریم که برای اختلاف بین $y(t)-y_m(t)$ بود این را در طول افق پیش بینی محاسبه می کنیم تا انطباق بیشتری بین مدل خطی و فرآیند غیر خطی در نقطه ی کار  ایجاد شود.\\[30pt]
\subsection{روش EDMC}
در این روش ما نیازمند مدل غیر خطی فرآیند هستیم که با ترکیب این مدل غیر خطی با روش کلاسیک DMC  الگوریتمی بدست خواهد آمد که می توانیم آن را بر کلاس خاصی از سیستم های غیر خطی پیاده سازی  و شبیه سازی کنیم . روش EDMC  در سال 1990 میلادی توسط آقای Peterson  ارائه شد . همانطور که گفته شد روش DMC  برای کنترل فرآیند های خطی پایدار استفاده می شد . از آن جا که بسیاری از فرآیند های طبیعی دارای ماهیت غیر خطی هستند در بخش قبل از مدل غیر خطی فرآیند استفاده کردیم و یک روش تطبیقی را برای استفاده از روش DMC  ارائه کردیم . سپس ما یک مدل غیر خطی داریم  که از این مدل استفاده  خواهیم کرد و با استفاده از پاسخ پله ی این مدل غیر خطی ما مدل خطی محلی بدست خواهیم آورد  که این مدل خطی محلی در آن شرایط کار رفتاری مشابهه با مدل غیر خطی خواهد داشت . \\
تا اینجای کار دقیقاً منطبق بر روش الگوریتمی کنترل پیش بین تطبیقی هست . روش EDMC  در واقع از این به بعد شروع می شود یعنی ما سعی خواهیم کرد در فاصله ی بین دو نمونه برداری مدل غیر خطی را از اطلاعاتش استفاده کنیم و مدل خط را بهبود بدهیم  بطوریکه این مدل خطی دقیق تر و بهتر مدل غیر خطی فرآیند را توصیف کند. برای این کار ما از خروجی مدل غیر خطی و خروجی مدل خطی استفاده  میکنیم . این روش برای سیستم های غیر خطی قابل پیاده سازی است  همانطور که اشاره کردیم در فاصله ی بین دو نمونه برداری یک مسئله ی بهینه سازی حل می کنیم که این مسئله ی بهینه سازی می آید پارامتری را بهینه میکند تا مدل خطی محلی بتواند دقیق تر مدل غیر خطی را توصیف کند . برای همگرا شدن به این مقدار بهینه آن مدل غیر خطی باید مشخصات خاصی را داشته باشد . برای حل این مسئله ی بهینه سازی  از الگوریتم های تکرار شونده استفاده می شود که این تکرارشوندگی تحت شرایط خاصی به نقطه ی بهینه همگرا می شود .\\[30pt]
\subsubsection{ساختار EDMC}
یک فرآیند داریم که این فرآیند رفتار خطی از خودش نشان می دهد . این فرآیند ممکن است اغتشاش هم به آم وارد شود . این اغتشاش فرض می کنیم اغتشاش قابل اندازگیری یا غیر قابل اندازگیری باشد . ما یک مدل غیر خطی از فرآیند خواهیم داشت که این مدل غیر خطی خروجی اش را همراه با سیگنال کنترلی که به فرآیند اعمال می شود اندازه می گیرد . ما می توانیم از اختلاف بین خروجی مدل غیر خطی و مدل خروجی اندازه گیری شده اغتشاش های غیر قابل اندازه گیری که در خروجی خودش  را نشان داده اندازه بگیریم و آن را وارد الگوریتم DMC  کنیم .\\
سییگنال مرجع هم وارد می شود و ما می توانیم از مدل غیر خطی استفاده کنیم  و خروجی های گذشته فرآیند یا پاسخ آزاد را بدست بیاوریم حالا می توانیم از الگوریتم DMC کلاسیک سیگنال کنترلی را محاسبه کنیم و آن را به فرآیند اعمال کنیم .
\begin{figure}[h!]
\centering
\includegraphics[width = 9cm]{fig4.pdf}
\caption{ساختار EDMC }
\label{fig.4}
\end{figure}
\newpage
سرآغاز الگوریتم EDMC  در واقع در شکل \ref{fig.5} نشان داده شده است . که تفاوتش با الگوریم های DMC  و Adaptive-DMC  هست . ما با استفاده از مدل خطی که هر لحظه پاسخ پله فرآیند با استفاده از مدل غیر خطی بدست می آید می توانیم خروجی مدل خطی را بدست آوریم و این سیگنال کنترلی که به فرآیند اعمال می شود هم به مدل خطی و هم به مدل غیر خطی فرآیند اعمال  می شود . با محاسبه ی اختلاف مدل خطی و غیر خطی می توانیم به میزان دقت مدل خطی پی ببریم . این اختلاف را به عنوان یک اغتشاش خطی سازی وارد الگوریتم DMC  می کنیم و این اغتشاش را همراه با الگوریتم به عنوان سیگنال کنترلی به فرآیند اعمال می کنیم که باعث بهبود عملکرد و کنترل بهتر فرآیند های غیر خطی می شود .\\
\begin{figure}[h!]
\centering
\includegraphics[width = 10cm]{fig5.pdf}
\caption{تفاوت الگوریتم EDMC با الگوریتم های DMC  و Adaptive-DMC}
\label{fig.5}
\end{figure}
\newpage
\subsubsection{پیاده سازی الگوریتم EDMC}

این الگوریتم بسیار شبیه روش DMC هست یعنی از همان روش استفاده می کنیم . سیگنال کنترلی با استفاده از فرمول\eqref{eq.3} بدست می آید که در آن با استفاده از ماتریس دینامیکی سیستم محاسبه می شود که ماتریس دینامیکی هم با استفاده از ضرایب پاسخ پله فرآیند طبق فرمول \eqref{eq.7}بدست می آید . ضرایب پاسخ پله فرآیند هم طبق فرمول \eqref{eq.6}در واقع اختلاف بین خروجی مدل غیر خطی با یک $\delta$و خروجی مدل غیر خطی در شرایط کار سیستم هست .\\
در واقع سیگنال کنترلی و شرایط کار مشخص هست . یعنی سیگنال های کنترلی که قبلاً به فرآیند اعمال شده اند . با اعمال آن به مدل غیر خطی $y_{past}$ را بدست می آوریم و در همین شرایط کار سیگنال کنترلی به همراه $\delta$ یعنی $U+\delta$ به مدل غیر خطی اعمال می کنیم و $y_{per}$ را بدست می آوریم .با استفاده از فرمول \eqref{eq.6} می توانیم ضرایب پاسخ پله را در هر لحظه بدست می آوریم . وقتی $g_i$ ها را بدست آوردیم ماتریس دینامیکی سیستم بدست می آید .\\
سیگنال خطا $E(t+1)$هم که طبق فرمول \eqref{eq.4} که شامل چندین عامل هست یکی سیگنال مرجع که از فیلتر مرتبه اول عبور می کند .$\alpha$ هم ضریب هموارسازی تغییرات نقطه مطلوب هست . \\
سیگنال خطا در واقع شامل سیگنال مرجع هست و سیگنال های گذشته یا پاسخ آزاد که نحوه ی محاسبه آن را اشاره کردیم .در واقع طبق فرمول \eqref{eq.9}برای $i<0$   عبارت $y_m(t+i)$ ولی برای $i>0$برابر هست با سیگنال کنترلی لحظه آخر که به فرآیند اعمال شده با $\Delta U = 0$پس پاسخ آزاد سیستم را می توانیم بدست بیاوریم .\\

\begin{equation}
\mathbf{y_{past}(t+1)  } =
\begin{Bmatrix}
y_m(t+i)&for\quad i<0\\y_m(t+i)|_{\Delta U(t+i) =0}&for\quad i \ge 0\\
\end{Bmatrix}
\label{eq.9}
\end{equation}
\newpage
عبارت $D(t)$ که در الگوریتم کلاسیک DMC طبف فرمول \eqref{eq.8} به عنوان اختلاف بین خروجی فرآیند و مدل خطی استفاده می شد این جا اختلاف بین خروجی فرآیند  و خروجی مدل هست و آن را تعمیم می دهیم به زمان های آینده با فرض اینکه این اغتشاش ثابت هست .\\
در الگوریتم EDMC  به جای این اغتشاش یک اغتشاش خطی سازی هم به فرآیند اعمال می شود که الگوریتم را توسعه می دهد . در واقع الگوریتم EDMC  به این شکل است که یک اغتشاش مربوط  به تفاوت بین مدل غیر خطی و خروجی فرآیند هست و یک اغتشاش هم مربوط به اغتشاش خطی سازی است  که در DMC محاسبه می شود . این اغتشاش در واقع سعی می کند یک مقدار ثابتی را به  خروجی مدل خطی در یک افق پیش بینی مشخص اضافه کند  و مقدار خروجی مدل خطی را به مدل غیر خطی نزدیک تر کند حالا مقدار بهینه ی $D_{nl}$ ها در افق پیش بینی چقدر هست باید محاسبه کنیم . برای محاسبه ی  این یک الگوریتم بهینه سازی لازم داریم هدف این است که  طبق فرمول \eqref{eq.10}خروجی مدل غیر خطی منهای خروجی مدل خطی مینیمم شود.\\
\begin{equation}
min(y_{non} - y_{lin})
\label{eq.10}
\end{equation}
\begin{equation}
\begin{cases}
D(t+1) = D_*(t+1) + D_{nl}(t+1)\\
D_*^T(t+1) = [d_*(t+1)\quad d_*(t+2) \cdots d_*(t+p)]\\
D_{nl}^T(t+1) = [d_{nl}(t+1) \quad D_{nl}(t+2)\cdots d_{nl}(t+p)]
\end{cases}
\end{equation}






 یعنی اگر این دوتا خروجی با هم برابر باشد مدل غیر خطی و خطی منطبق هست  که در عمل چنین چیزی اتفاق نمی افتد که یک مدل خطی بتواند دقیقاً منطبق بر مدل غیر خطی باشد پس ما باید $D-{nl}$  ها را به عنوان متغیر بهینه سازی به گونه ایی پیدا کنیم  که تابع هزینه مینیمم شود برای این کار ما باید به  این ترتیب مطابق شکل\ref{fig.6} عمل کنیم .\\
ابتدا  $D_{nl}$ اولیه را صفر در نظر می گیریم و الگوریتم DMC  کلاسیک را حل میکنیم و $\Delta U $را محاسبه میکنیم و $\Delta U$ محاسبه شده را هم به مدل خطی و هم به مدل غیر خطی اعمال می کنیم و از یک الگوریتم تکرار شونده که در اینجا الگوریتم Fixed Point  هست اختلاف بین مدل خطی و غیر خطی $(y_{nl} - y_{el})$ را در ضریب همگرایی $(\beta)$ ضرب می کنیم . ضریب همگرایی را معمولاً کوچک در نظر میگیریم که بتوانیم همگرایی به کندی به مقدار مورد نظر همگرا شود .با $D_{nl}$ اولیه جمع می کنیم  و $D_{nl}$ لحظه ی بعد را محاسبه می کنیم اگر اختلاف بین دو $D_{nl}$ از یک تلرانسی کوچکتر باشد یعنی $D_{nl}$ متغیر بهینه سازی به مقدار بهینه همگرا شده است . آن را به عنوان $D_{nl}$ نهائی در نظر می گیریم  و آن را وارد الگوریتم DMC  میکینم و آن را به فرآیند اعمال می کنیم و سیگنال کنترلی تولید شده و به فرآیند غیر خطی اعمال می شود . ولی اگر این تلرانس کوچک نباشد  این $D_{nl}$  دوباره وارد مسئله ی DMC  می شود و $\Delta U$ دوباره محاسبه می شود  و این پروسه دوباره تکرار می شود تا این خطا از یک مقداری کمتر شود اگر مسئله شرایط خاصی داشته باشد این همگرایی اتفاق  می افتد و در داقع می توانیم مدل خطی توصیف بهتری از مدل غیر خطی باشد و کنترلی با عملکرد بهتر را ارائه خواهیم داد . \\
می دانیم در کنترل پیش بین هر چه مدل دقیق تر باشد عملکرد بهتری خواهد داشت و بسیاری از کارایی که در کنترل پیش بین بر اساس مدل انجام می شود  بر روی افزایش دقت مدل در طراحی الگوریتم کنترلی می باشد .
\begin{figure}[h!]
\centering
\includegraphics[width = 10cm]{fig6.pdf}
\caption{پیدا کردن متغیر بهینه سازی}
\label{fig.6}
\end{figure}\\
\newpage
\subsubsection{بهینه سازی}
در این بخش در مورد الگوریتم تکرار شونده برای رسیدن به جواب بهینه صحبت می کنیم . طبق رابطه \eqref{eq.11} یک نرم F  از متغیر بهینه سازی داریم که می خواهیم آن را به گونه ایی محاسبه کنیم که طبق رابطه \eqref{eq.12}اختلاف بین مدل غیر خطی و خطی هر دو مینیمم شود .یک روشی
که در مقالات استفاده شده روش $Fixed Point$ هست . در بعضی از مقلات هم از الگوریتم $Secant$ استفاده شده که این هم یک الگوریتم تکرار شونده است که شما می توانید اگر مسئله شما با روش $Fixed Point$ همگرا نشد از این الگوریتم استفاده کنید و تکرار کنید . برای ایننکه بهینه سازی خیلی مهم است  و تائیر بسزایی دارد در کدی که خواهیم نوشت از الگوریتم های  بهینه سازی متلب هم استفاده خواهیم کرد و نشان خواهیم داد آن ها هم بطور دقیق تر و بهتری می توانند بهینه سازی را انجام دهند .\\
\begin{equation}
min_{\Delta U(t)}f[D-{nl}(t+1)]
\label{eq.11}
\end{equation}
\begin{equation}
D_{nl}(t+1) = Y_{nl}(t+1) -Y_{li}(t+1)
\label{eq.12}
\end{equation}
\begin{equation}
\begin{cases}
D_{nl}^{j+1}(t+1) = D_{nl}^j(t+1) + \beta[Y_{nl}^j(t+1) - Y_{li}^j(t+1)] \quad Fixed Point\\
D_{nl}^{j+1}(t+1) = D_{nl}^j(t+1) - \frac{D_{nl}^j(t+1) - D_{nl}^{j-1}(t+1)}{f[D_{nl}^j(t+1)] - f[D_{nl}^{j-1}(t+1)]}\quad Secant
\end{cases}
\end{equation}\\
برای پیاده سازی الگوریتم کنترلی یک چالش همین مسئله ی بهینه سازی است که  در بین دو فاصله ی نمونه برداری بتوانیم این مسئله ی بهینه سازی  را حل کنیم  و به جواب دقیقی برسیم . بنابراین برای مسائلی که دینامیک سریع دارند یا دینامیک آن ها با $Sample$ نمونه برداری کوچکی باید  کنترل شود این الگوریتم کنترلی مناسب به نظر نمی رسد بیشتر این الگوریتم کنترلی را برای فرآیند های پالایشگاهی مثل $CSTR$ که دینامیک کندی دارند  و تغییرات کندی دارند و نمونه برداری می تواند با پریود نمونه برداری بزرگ انجام شود استفاده می شود .\\
\subsubsection{چالش های روش EDMC}

این روش کنترلی هم چالش های مخصوص به خودش را خواهد داشت یعنی اینکه نمی توانیم ادعا کنیم که این روش را می توانیم به هر فرآیندی اعمال کنیم .

\begin{itemize}
\item
 برای فرآیند هایی که دارای بهره حالت ماندگار  با تغییرات  زیاد هستن در این حالت همگرایی مشگل هست . الگوریتم های بهینه ایی که وجود دارند به علت تغییر بهره ی حالت ماندگار  ورودی به خروجی با تغییرات زیاد همگرایی آن ها به شکل مناسبی اتفاق نمی افتد و عملکرد کنترلی تحت تاثیر واقع می شود .معمولاً برای اینکه همگرایی اتفاق بیافتد  $\gamma$که همان مجازات سیگنال کنترلی هست را بزرگ در نظر می گیرند که سیگنال کنترلی بتواند به آرامی تغییر کند . وقتی $\gamma$  را بزرگ می گیریم به معنی این است  که سیسگنال کنترلی تغییرات زیادی نداشته باشد . این تغییرات کنترلی آرام باعث می شود  که الگوریتم  همگرایی $D_{nl}$ بتواند بهتر همگرا شود به مقدار مورد نظرش  چون تغییرات  کند هست  ولی این باعث می شود عملکرد کنترلی تحت تاثیر واقع بشود .
 \item
مسئله تغییر علامت در بهره ی حالت ماندگار ، در واقع اگر بهره ی ورودی به خروجی علامتش از مثبت به منفی یا بالعکس تغییر کند این الگوریتم بهینه سازی به هیچ وجه همگرا نمی شود پس نمی توانیم این الگوریتم را برای چنین فرآیند هایی پیاده سازی کنیم . 
\item
اگر در افق پیش بینی سیگنال   SetPoint یا مرجع تغییر کند این الگوریتم کنترلی همگرایی اش دچار مشکل می شود پس بهتر است سیگنال مرجع در طول افق پیش بینی ثابت باقی بماند .

\end{itemize}
\newpage
\subsubsection{روش مقاله دکتر حائری}
این روش توسط دکتر حائری مطرح شد برای فرآیند هایی که تغییر علامت دارند یا تغییر شدید در بهره ی فیدبک حالت ماندگار دارند . همانطور که اشاره کردیم تغییرات شدید حالت ماندگار باعث می شود که همگرایی خوب اتفاق بیافتد  و ما نیازمند $\gamma$  بزرگ هستیم که باعث تحت تاثیر قرار گرفتن عملکرد می شود . بنابراین در فرآیند های که رابطه بین ورودی و خروجی یک رابطه مشخصی هست  مطابق شکل \ref{fig.8}می آیند معکوس این رابطه را قبل از سیگنال کنترلی قرار می دهند . بطوریکه رابطه بین $y , v$ یک بهره ثابت دارد . دوباره برای این فرآیند ما می توانیم الگوریتم EDMC  را اعمال کنیم . سپس ما یک تابع غیر خطی بصورت مجازی تولید می کنیم  آن را در ابتدای فرآیند قرار می دهیم و آن را رابططه ی بین $y , v  $ را به عنوان بهره ی حالت ماندگار در نظر می گیریم که در این حالت بهره ثابت می شود  و تعریف خود تابع غیر خطی خود یک مسئله هست .\\
\begin{figure}[h!]
\centering
\includegraphics[width = 10cm]{fig8.pdf}
\caption{روش دکتر حائری}
\label{fig.8}
\end{figure}
\begin{equation}
U(t) = f(v(t),u(t-1),v(t-1))
\label{eq.15}
\end{equation}
در حالت هایی هم که تغییر علامت وجود دارد و ما نمی توانیم معکوس بهره حالت ماندگار را قرار بدهیم مطابق رابطه \eqref{eq.15} یک تابع غیر خطی از $v(t)$  و $u(t-1)$ و $v(t-1)$ در نظر میگیریم  و در اینجا دیگر یک بهره ی استاتیک ثابتی را نداریم   و تغییر می کند .  تا بتواند رابطه ی بین $y,v$ را تقریباً ثابت  در نظر بگیرد و این تغییر علامت در بهره ی حالت ماندگار اتفاق نیافتد  و بتواند الگوریتم بهینه سازی به مقدار بهینه نزدیک شود . چالش دیگر این است که مسئله ی DMC  همانطور که می دانیم به فرآیند های پایدار اعمال میشود و گفتیم که اگر بخواهیم به فرآیند های غیر پایدار اعمال کنیم باید یک پایدار ساز طراحی کنیم . برای این فرآیند های غیر خطی هم به این شکل است ما اگر فیدبک خروجی داشته باشیم می توانیم یک پایدار ساز طراحی کنیم . در اینجا طراحی پایدار ساز هدفش فقط پایدار سازی نیست و می تواند این را بگونه ایی طراحی کند که علاوه بر پایدار سازی بهره ی حالت ماندگار تغییرات شدید نداشته باشد .\\
\subsubsection{نتایج طراحی کنترل کننده به روش EDMC}
با اجرای برنامه $EDMC-1$ که در پیوست آمده است نتایج بصورت زیر حاصل می شود . \\
\begin{figure}[h!]
\centering
\includegraphics[width = 10cm]{fig9.pdf}
\caption{تغییرات $D_{nl}$نهایی}
\label{fig.9}
\end{figure}
\newpage
شکل \ref{fig.9} تغییرات $D_{nl}$ نهایی را نشان می دهد که مینیمم تغییرات آن چنانی نیست و در لحظات خاصی تغییر کرده است . علت آن این است که در نقطه کار سیستم نزدیک به صفر است به مدل نگاه می کنیم  و چون مدل تقریبا رفتارش با مدل غیر خطی شبیه هم هست  تغییرات آنچنانی در $D_{nl}$ شاهد نیستسم . اگر بهره ی نقطه مطلوب  را افزایش دهیم تغییرات بیشتری را روی $D_{nl}$شاهد خواهیم بود.\ref{fig.10} .\\
\begin{figure}[h!]
\centering
\includegraphics[width = 10cm]{fig10.pdf}
\caption{نتایج روش EDMC با الگوریتم بهینه سازی FixedPoint}
\label{fig.10}
\end{figure}
\newpage
با اجرای برنامه $EDMC-2$ که در پیوست موجود می باشد داریم .\\
برای اینکه بتوانبم  با یک روش دیگر بهینه سازی را ارائه  کنیم  از توابع بهینه سازی داخل متلب استفاده می کنیم . پس برای حل مسئله ی بهینه سازی و محاسبه ی متغیر بهینه سازی که همان $D_{nl}$ هست از الگوریتم های بهینه سازی متلب استفاده می کنیم . \\[20pt]
\begin{figure}[h!]
\centering
\includegraphics[width = 10cm]{fig11.pdf}
\caption{تغییرات $D_{nl}$نهایی}
\label{fig.11}
\end{figure}\\[15pt]
در شک\ref{fig.11} تغییرات روی سیگنال$D_{nl}$در لحظات اولیه مشاهده می کنید  . شاهد هستیم  که به علت  این که در لحظات اولیه سیگنال کنترلی مقدار پائینی دارد و سیگنال های کنترل پاوین تغییرات ضریب بهره زیاد هست . همگرایی این مسئله آهسته است .\\
\newpage
در شکل\ref{fig.12} مشاهده می کنیم در لحظه ی اول به خخاطر همین تغییرات بسیار زیاد و سیگنال کنترلی بزرگی به فرآیند اعمال شده است و این بزرگ بودن سیگنال کنترلی باعث شده تغییرات زیادی در خروجی فرآیند شاهد باشیم . ولی خروجی سیستم توانسته سیگنال کنترلی را دنبال کند و به هدف برسد .\\
\begin{figure}[h!]
\centering
\includegraphics[width = 10cm]{fig12.pdf}
\caption{نتایج روش EDMC با الگوریتم های بهینه سازی Matlab}
\label{fig.12}
\end{figure}\\[15pt]


\end{document}
