کتاب ها ، جزوات ، مقالات و سایت های آمورش متلب

javad ta

عضو جدید
کاربر ممتاز
دانلود فايل جامع آموزشی الگوريتم ژنتيك و نوشتن ام فايل آن در متلب

دانلود فايل جامع آموزشی الگوريتم ژنتيك و نوشتن ام فايل آن در متلب

[FONT=&quot]الگوریتم ژنتیک ([FONT=&quot]Genetic Algorithm - GA[/FONT][FONT=&quot]) تکنیک جستجویی در علم رايانه برای یافتن راه‌حل تقریبی برای بهينه سازي و مسائل جستجو است. الگوریتم ژنتیک نوع خاصی از الگوريتم هاي تكامل است که از تکنیکهای زیست‌شناسی فرگشتي مانند وراثت و جهش استفاده می‌کند. این الگوریتم برای اولین بار توسط جان هلند معرفی شد.[/FONT][FONT=&quot][/FONT] [FONT=&quot]الگوریتم‌های ژنتیک، به عنوان یکی از راه‌حل‌های یافتن جواب مسئله در بین روش‌های مرسوم در هوش مصنوعی مطرح است. در حقیقت بدین روش می توانیم در فضای حالت مسئله حرکتی سریع‌تر برای یافتن جواب‌های احتمالی داشته باشیم؛ یعنی می توانیم با عدم بسط دادن کلیه حالات، به جواب‌های مورد نظر برسیم. [/FONT][FONT=&quot][/FONT] [FONT=&quot]الگوريتم‏هاي ژنتيكي در حل بسياري از مسائل علمي و مهندسي به كار گرفته شده ‏اند.[/FONT][FONT=&quot] [/FONT][FONT=&quot]در اين تاپيك فايل آموزشي آشنايي با اين الگوريتم توام با نوشتن ام فايل و كار با جعبه ابزار آن در نزم افزار متلب در اختيار كاربران قرار مي گيرد. برای دانلود روی لینک زیر کلیک نمایید...[/FONT][FONT=&quot][/FONT] [/FONT]


دانلود فايل آموزش الگوريتم ژنتيك و پياده سازی آن در MATLAB


منبع: matlabsite.com​

 

javad ta

عضو جدید
کاربر ممتاز
الگوریتم pso

الگوریتم pso

الگوریتم تجمع ذرات که به نام انگلیسی Particle Swarm Optimization معرف است یا به اختصار به آن PSO هم می گویند برگرفته از تجمع انبوهی از ذرات است
که از حرکت دسته جمعی پرندگانٰ، ماهی ه و غیره الهام گرفته است.
در حرکت حمعی هر جز خود هوشمندی ندارد ولی رفتار گروه یک هوشمندی رو دنبال می کند.
برای فهم این الگوریتم من یک مثال انسانی برای شما می آورم:
فرض کنید که شما دانشجو هستید و می خواهید رشد تحصیلی داشته باشید و در یک مقطعی رشد تحصیلی شما خوب بوده است و همچنین در همون مقطع یک شاگرد اول کلاس هم وجود دارد که می توان از روش درس خوندن اون الگو برداری کرد.
حال برای اینکه شما در رشد تحصیلی پیشرفت داشته باشید دو کار می توانید انجام بدهید یا اینکه بر اساس تجربیات خود پیش بروید یا اینکه از تجربیات شخص الگو پیروی کنید. که هر دو این کار ضرر هایی دارید اگر به دنبال تجربیات خود بروید یک تصمییم خودخواهانه گرفتید که ناشی از این است که به دانش خود اعتماد کامل دارید و چه بسا که ممکن است دانش شما اشتباه باسد و اگر فقط از تجربه ی شخص الگو استفاده کنید یک خودباختگی برای شما پیش خواهد آمد که به دانش خود اعتماد ندارید. بهترین کار این است که از ترکیب این دو استفاده کنید.
حال با این مثال وارد الگوریتم pso می شویم.
در این الگوریتم ما np تا ذره داریم که در فضای مسئله به صورت تصادفی پخش شده اند و هر ذره برای خود یک موقعیت و یک هزینه دارد.
برای جابجایی هر ذره از همون قضیه بالا (ترکیب خطی تجربیات خود و تجربیات الگو) استفاده می شود:
xi_jadid=xi_ghadim + Vi_jadid
که V‌سرعت حرکت ذره می باشد که به صورت زیر بدست می آید:
Vi_jadid=c1r1(xi_localBest - xi_ghadim) +c2r2 (x_globalBest - xi_ghadim) + wvi_ghadim
که x_localBest همون تجربیات خود و x_globalBest تجربیات شخص الگو است.
دقت داشته باشید که ما برای هر ذره یک x_LocalBest و برای تمام ذرات یک x_globalBest داریم
c1 , c2‌ضریب های تصمییم گیری هستند که کدام یک برای ما بیشتر اولویت دارد اینکه بیشتر به سمت تجربیات خود حرکت کنیم یا به سمت تجربیات شخص الگو که در پیاده سازی ها معمولا c1+c2=4 در نظر می گیرند مثلا c1=c2=2
r1,r2 هم اعداد تصادفی هستند که از توزیع یگنواخت بین صفر و یک بدست می آیند که معادل همون دستور rand در متلب می باشد.
wv_ghadim هم به ضریب اینرسی معروف هست. در الگوریتم pso دو ضریب اول مهم هستند و می توان از ضریب اینرسی چشم پوشی کرد.
حال اگر بخواهیم این روند را برای تعدادی از ذرات اعمال کنیم به صورت زیر می شود.
در ابتدا ما np تا ذره رو در فضای جستجو به صورت تصادفی قرار می دهیم سپس برای هر ذزه نسبت به موقعیتش هزینه اش رو محاسبه می کنیم.
حال برای جابجایی موقعیت هر ذره باید از فرمول بالا کمک بگیریم:
نکته ای که در همین ابتدا باید به آن اشاره کنم این است که در گام اول مقدار x_localBest و x_globalBest‌چیست؟
برای x_LocalBest در گام اول مقدار خود ذره می باشد و برای x_globalBest بهترین مقداری ذزه بین تمام ذرات.
با داشتن این پارامترها نوبت به نوبت به آپدیت کردن ذره ها داریم .طبق فرمول بالا موقعیت هر ذره و هزینه آن آپدیت می شود بعد از آپدیت شدن موقعیت هر ذره نوبت می رسد به موقعیت آپدیت کردن نقاط x_LocalBest و x_GlobalBest .
برای هر ذره تصمیم می گیریم که آیا هزینه موقعیت جدید از x_localBest آن بهتر است یا نه اگر بهتر بود x_localBest رو آپدیت می کنیم. و در نهایت موقعیت بهترین ذره رو در x_globalBest قرار می دهیم و این فرآیند رو به تعداد مشخصی تکرار می کنیم.


انشاالله در اولین فرصت آموزش ژنتیک رو هم بروی سایت قرار خواهم داد ............مشاهده پیوست PSO Continious General.rar
 
آخرین ویرایش:

javad ta

عضو جدید
کاربر ممتاز
کاربرد الگوریتم ژنتیک در طراحی و تنظیم کنترل کننده های فازی

کاربرد الگوریتم ژنتیک در طراحی و تنظیم کنترل کننده های فازی

در این مطلب می خواهیم مثالی از کاربرد الگوریتم ژنتیک را نشان دهیم.برای این منظور پروژه ای از مرحوم پروفسور ولی الله طحانی (شاگرد پروفسور زاده) را مطرح می کنیم. بلوک دیاگرام کنترل یک سروموتور DC در شکل زیر نشان داده شده است:
می توان برای سادگی معادله دینامیکی فرآیند تحت کنترل را با نرخ نمونه برداری t=0.2sec بصورت گسسته زیر نوشت:
فرضیات مسئله: ساختار کنترل کننده فازی: ۱) ضرایب Scale Factor بصورت زیر می باشد:
۲) دستورi ام کنترل کننده بصورت زیر می باشد:
IF e is A[SUB]i[/SUB] and ∆e is B[SUB]i[/SUB] Then u is C[SUB]i[/SUB]​
که A[SUB]i[/SUB],B[SUB]i[/SUB],C[SUB]i[/SUB] مقادیر زبانی متغیرهای e,∆e,u برای دستور i ام می باشند.فرض کنید رنج تغییرات متغیرهای بازه [-۲,۲] است.همچنین فرض کنید مقادیر زبانی A[SUB]i[/SUB],B[SUB]i[/SUB],C[SUB]i[/SUB] متعلق به مجموعه زیر هستند:
A=B=C={LN,SN,ZE,SP,LP}​
۳) فرض کنید کنترل کننده متقارن است و دستورات طبق جدول زیر است:
I’C[SUB]i[/SUB]=6- IC[SUB]i[/SUB]​
که IC[SUB]i[/SUB] ها کد مقدار زبانی C[SUB]i[/SUB] است.این کدها عبارتنداز: ۴) توابع عضویت مقادیر زبانی A[SUB]i[/SUB],B[SUB]i[/SUB],C[SUB]i[/SUB] نسبت به مبدا متقارن و پارامتریک هستند.شکل آنها و پارامترهای مربوطه در زیر آمده است:
تابع عضویت مقدار زبانی را بصورت زیر در نظر بگیرید:
ساختار یک دنباله (کروموزم) در الگوریتم ژنتیک: براساس مطالب فوق،می خواهیم s[SUB]i[/SUB],d[SUB]i[/SUB] مربوط به توابع عضویت e,∆e,u را همزمان با مقادیر IC[SUB]i[/SUB] محاسبه کنیم.بنابراین یک دنباله از مجموع پارامتر(ژن)های زیر تشکیل می شود:
بنابراین طول دنباله ۲۶ ژن است.توجه کنید که IC[SUB]i[/SUB] اعداد صحیح متعلق به مجموعه {۱،۲،۳،۴،۵} می باشند و s[SUB]i[/SUB]ها و d[SUB]i[/SUB]ها اعداد حقیقی هستند. تابع هدف:
چون می خواهیم تابع ضرایب کنترل کننده فازی را برای ورودی پله تنظیم کنیم لذا برای پاسخ شکل زیر تابع هدف را بصورت زیر تعریف می کنیم:
p[SUB]i[/SUB] دنباله iام جمعیت دنباله ها است.همچنین در رابطه فوق W[SUB]i[/SUB] وزن اهمیت ترم مربوطه را نشان می دهد.بدین معنی که چون می خواهیم تابع هدف را بهینه (حداکثر) کنیم،لذا با بالا قرار دادن وزن W[SUB]i[/SUB] (مثلا وزن W[SUB]4[/SUB]) اهمیت و نقش ترم مربوطه (مثلا خطای حالت دائم) بیشتر مورد تاکید است.فاکتورهای MT و ME جهت هم مقیاس سازی ترم های بکارگرفته در تابع هدف است.در این مثال پارامترها را بصورت زیر در نظر بگیرید: در رابطه تابع هدف P میزان جریمه (Penalty) در نظر گرفته شده است.بدین معنی که پاسخ هایی که یا ناپایدار هستند و یا در فاصله زمانی MT تثبیت نگردند،طبق شکل زیر،میزان جریمه را بصورت زیر در نظر می گیریم:
الگوریتم ژنتیک را با پارامترهای زیر اجرا کرده و پارامترهای بهترین کنترل کننده طراحی شده مشخص کنید.همچنین تابع هزینه بهترین دنباله را رسم کنید تا مطمئن شوید که الگوریتم بسمت بهترین جواب همگرا می شود.
جمعیت دنباله ها P=40
نرخ ترکیب Pc=0.6
نرخ جهش Pm=0.01
 

javad ta

عضو جدید
کاربر ممتاز
طراحی کنترل کننده با تولباکس Matlab (بخش اول)

طراحی کنترل کننده با تولباکس Matlab (بخش اول)

همان طور که می دانید یکی از مهمترین قسمت‌های کنترل یک فرآیند انتخاب نوع کنترل کننده و همچنین تنظیم آن می باشد. تولباکس (Toolbox) تنظیم سیستم کنترلی متلب محیطی مناسب برای طراحی کنترل کننده و مشاهده رفتار سیستم می باشد. در این قسمت قصد آموزش یکی از مهم ترین تولباکس های نرم افزار Matlab یعنی تولباکس Control System Tuning را داریم. شکل زیر محیط این تولباکس را نشان می دهد: همان طور که مشخص است این تولباکس از ۵ قسمت تشکیل شده است:
  • محیط تعیین ساختار سیستم (Architecture)
  • محیط ویرایش جبرانساز (Compensator Editor)
  • محیط گرافیکی تنظیم (Graphical Tuning)
  • محیط آنالیز منحنی ها (Analysis Plots)
  • محیط تنظیم اتوماتیک (Automated Tuning)
همان طور که مشخص است در قسمت ساختار، بلوک دیاگرام کلی یک سیستم نشان داده شده است: که F تابع پیش‌فیلتر، C تابع جبرانساز (کنترل کننده)، G تابع تبدیل سیستم (Plant) و H تابع تبدیل فیدبک می باشند. قسمت ساختار برای کارهای زیر مورد استفاده قرار می گیرد:
  • تغییر دادن ساختار بلوک دیاگرام
  • پیکربندی حلقه ها
  • وارد کردن مدل
  • تعیین زمان نمونه برداری
  • پیکر بندی چند مدل
با کلیک بر روی گزینه Control Architecture می توانید ساختار بلوک دیاگرام و علامت بلوک ها را مطابق شکل زیر تغییر دهید: هم چنین برای تغییر دادن نام بلوک ها روی تب Blocks and Signals کلیک کنید: اگر ساختار شما دارای چند حلقه و کنترل کننده می باشد و می خواهید تاثیر کنترل کننده ای ای را بر روی حلقه فیدبک از بین ببرید می توانید با انتخاب گزینه Loop Configuration و انتخاب جبرانساز مورد نظر اثر آن را حذف کنید: اگر از قبل تابع تبدیل قسمت های مختلف را ایجاد کرده اید می توانید با کلیک بر روی گزینه System Data فایل خود را انتخاب و وارد محیط کنید: برای تعیین زمان نمونه برداری روی گزینه Sample Time Conversion کلیک کرده و مقدار آن را مشخص کنید. در این قسمت می توانید انواع نگهدارنده مرتبه صفر،یک و… را برای قسمت های مختلف سیستم مشخص کنید: اگر مدل آماده ای که وارد کرده اید خود دارای چند مدل باشد گزینه Multimodel Configuration فعال بوده و می توانید تنظیمات مربوط به آن را انجام دهید.
تا الآن ساختار سیستم کنترلی را تعیین کردیم. حال با استفاده از قسمت ویرایشگر جبرانساز می توانیم بهره، صفر و قطب برای جبرانساز تعیین نماییم. برای این کار بر روی Dynamics راست کلیک کرده و با انتخاب صفر یا قطب آن را به جبرانساز اضافه می کنیم: برای تغییر دادن مختصات قطب یا صفر می توانید پس از انتخاب آن، از قسمت Edit Selected Dynamics استفاده کنید: از قسمت Graphical Tuning می توانید منحنی هایی که برای طراحی استفاده می کنید را انتخاب کنید: برای مشاهده محیط طراحی روی گزینه Show Design Plot کلیک کنید. با تغییر مقادیر مربوط به جبرانساز منحنی های محیط SISO Design Task بصورت خودکار بروز می شوند. همچنین می توانید با کشیدن صفرها و قطب ها روی منحنی بصورت دلخواه پارامترهای جبرانساز را تغییر دهید یا با راست کلیک کردن بر روی منحنی ها می توانید صفر و قطب اضافه کنید: توجه کنید که برای پاسخ سیستم حلقه باز سه منحنی زیر موجود می باشد:
  • منحنی روت لوکاس (Root locus)
  • منحنی نیکولز (Nichols)
  • منحنی بود (Bode)
و برای پاسخ سیستم حلقه بسته فقط منحنی بود (Bode) وجود دارد.
اگر می خواهید مثلاً بجای پاسخ ورودی به خروجی، پاسخ نویز به ورودی را در نظر بگیرید با کلیک بر روی گزینه Select New Open/Closed Loops to Tune می توانید حلقه مورد نظر را انتخاب کنید: در قسمت Analysis Plots می توانید حداکثر ۶ منحنی مختلف برای مشاهده پاسخ حلقه های مختلف انتخاب کنید و با کلیک بر گزینه Show Analysis Plot منحنی های مورد نظر نشان داده می شود: برای تنظیم کردن پاسخ سیستم وارد قسمت Automated Tuning می شویم: همان طور که مشخص است برای تنظیم کردن ۵ روش زیر وجود دارد:
  1. تنظیم بر اساس بهینه سازی (Optimization-Based Tuning): در این روش پارامترهای جبرانساز بر اساس نیاز با روش های بهینه‌سازی تنظیم می شود.
  2. تنظیم کنترل کننده PID : در این روش با انتخاب نوع کنترل کننده و روش تنظیم کردن (روش کلاسیک یا روش زمان پاسخ مقاوم)، جبرانساز تنظیم می شود.
  3. تنظیم به روش کنترل مدل داخلی (IMC) : در این روش با استفاده از روش طراحی IMC یک فیدبک پایدارکننده طراحی می شود.
  4. تنظیم به روش (LQG) : در این روش یک فیدبک پایدارکننده بر اساس دنبال کننده LQG طراحی می شود.
  5. تنظیم به روش (Loop Shaping) : در این روش با استفاده از پهنای باند حلقه باز یک فیدبک پایدارکننده طراحی می شود.
برای هر روشی که انتخاب می کنید باید مراحل زیر را انجام دهید:
  • انتخاب جبرانساز
  • مشخص کردن رفتار مورد نظرتان برای پاسخ سیستم
  • کلیک بر روی گزینه Update Compensator برای اعمال تنظیمات بر روی جبرانساز
در قسمت بعدی نحوه تنظیم کردن با این روش ها را توضیح می دهیم.
 

javad ta

عضو جدید
کاربر ممتاز
طراحی کنترل کننده با تولباکس Matlab (بخش دوم)

طراحی کنترل کننده با تولباکس Matlab (بخش دوم)

در قسمت قبل نحوه ایجاد ساختار یک سیستم کنترلی را با تولباکس Control System Tuning شرح دادیم. معمولاً یکی از مهمترین مشکلات در مورد کنترل کننده ها نحوه تنظیم کنترل کننده می باشد زیرا با تنظیم نامناسب کنترل کننده ممکن است سیستم ناپایدار شود. برای حل این مشکل از محیط تنظیم اتوماتیک (Automated Tuning) کمک می گیریم.
برای تنظیم کردن کنترل کننده ۵ روش زیر وجود دارد:
  • تنظیم بر اساس بهینه سازی (Optimization-Based Tuning): در این روش پارامترهای جبرانساز بر اساس نیاز مورد نظر با روش های بهینه‌سازی تنظیم می شود.
  • تنظیم کنترل کننده PID : در این روش با انتخاب نوع کنترل کننده و روش تنظیم کردن (روش کلاسیک یا روش پاسخ زمانی مقاوم)، جبرانساز را تنظیم می کنید.
  • تنظیم به روش کنترل مدل داخلی (IMC) : در این روش با استفاده از روش طراحی IMC یک فیدبک پایدارکننده طراحی می شود.
  • تنظیم به روش (LQG) : در این روش یک فیدبک پایدارکننده بر اساس دنبال کننده LQG طراحی می شود.
  • تنظیم به روش (Loop Shaping) : در این روش با استفاده از پهنای باند حلقه باز یک فیدبک پایدارکننده طراحی می شود.
برای هر روشی که انتخاب می کنید باید مراحل زیر را انجام دهید:
  • انتخاب جبرانساز
  • مشخص کردن رفتار مورد نظرتان برای پاسخ سیستم
  • کلیک بر روی گزینه Update Compensator برای اعمال تنظیمات بر روی جبرانساز
روش Optimization-Based Tuning :
برای تنظیم کنترل کننده به روش بهینه سازی پس از انتخاب این روش روی گزینه Optimize Compensator کلیک کرده تا وارد قسمت زیر شوید: در تب Compensators می توانید مشخص کنید که از کدام پارامترها برای بهینه سازی استفاده شود. با انتخاب هر پارامتر می توانید حدود تغییرات آن را نیز مشخص کنید: در قسمت Design Requirements بر روی گزینه Add new design requirement کلیک کنید تا صفحه زیر باز شود: در این قسمت نیازهای خود از کنترل کننده را انتخاب کنید. برای مثال اگر می خواهید پاسخ خروجی به ورودی پله دارای زمان جهش ۵ ثانیه و زمان نشت ۱۰ ثانیه و اورشوت ۱۰درصد باشد مانند بالا تنظیمات را انجام دهید. پس از انجام تنظیمات شکل زیر نشان داده می شود: می توانید با کشیدن خطوط (باندها) پارامترهای مورد نیاز را تغییر دهید.
در تب Optimization بر روی گزینه Optimization Options کلیک کنید تا بتوانید تنظیمات مربوط به روش بهینه سازی را انتخاب کنید: حال بر روی گزینه Start Optimization کلیک کنید تا بصورت اتوماتیک پارامترهای کنترل کننده تنظیم شوند. در هنگام بهینه سازی شکل پاسخ در هر مرحله نشان داده می شود. پس از پایان بهینه سازی روی تب Compensator بروید تا مقادیر بهینه سازی شده برای پارامترهای انتخاب شده را مشاهده کنید: روش PID Tuning :
روش دیگر تنظیم کنترل کننده روش PID Tuning می باشد که مناسب کنترل کننده های PID می باشد. با انتخاب این روش صفحه زیر نمایش داده می شود: در ابتدا نوع کنترل کننده P,PI,PD,PID را انتخاب کنید.
همان طور که مشخص است دو روش برای تنظیم پارامترهای کنترل کننده PID وجود دارد:
۱) روش Robust response time :
این روش پارامترهای کنترل کننده را بر اساس پهنای باند و حاشیه فازی که مشخص می کنیم طوری تنظیم می کند که سیستم پایدار شود. توجه کنید که اگر گزینه Automatic را انتخاب کنید روش پهنای باند و حاشیه فاز را خود انتخاب می کند: ۲) روش Classical design formulas :
این روش بر اساس فرمول های کلاسیک که شامل ۶ روش می شود کنترل کننده را تنظیم می کند که معروفترین این روش ها روش پاسخ پله و پاسخ فرکانسی زیگلرنیکولز می باشند:
توجه کنید که پس از انتخاب هر روش گزینه Update Compensator را بزنید تا کنترل کننده تنظیم شود.
روش IMC :
روش بعدی برای تنظیم پارامترهای کنترل کننده روش IMC می باشد. این روش یک کنترل کننده تمام درجه را طوری طراحی می کند که پایداری سیستم تضمین شود. همان طور که از شکل زیر مشخص است برای طراحی کنترل کننده IMC دو پارامتر را می توان تغییر داد: در قسمت Dominant closed-loop time constant باید مقدار ثابت زمانی غالب سیستم را مشخص کنید. بطور کلی افزایش این مقدار سیستم حلقه بسته را کند می کند و آن را مقاوم تر می کند.
بعد ازاینکه فیدبک کنترل کننده تمام درجه طراحی شد در قسمت Desired controller order می توانید با کاهش مقدارش، درجه کنترل کننده را کاهش بدهید. توجه کنید که ممکن است با کاهش درجه پایداری سیستم از دست برود.
روش LQG Synthesis :
روش بعدی روش LQG Synthesis می باشد که در این روش نیز یک کنترل کننده فیدبک تمام درجه طوری طراحی می شود که پایداری سیستم تضمین شود: همان طور که مشخص است در قسمت Controller response می توانید پاسخ کنترلر را انتخاب کنید. هرچقدر به سمت aggressive بروید پاسخ کنترلر تهاجمی تر می شود بدین معنی که اورشوت بیشتری خواهیم داشت. اگر مدل ما دقیق و متغیر قابل دستکاری دارای رنج وسیع باشد استفاده از کنترلر تهاجمی پیشنهاد می شود.
در قسمت بعد باید میزان نویز اندازه گیری شده را مشخص کنید. اگر خروجی سیستم دارای نویز کمی می باشد به سمت Small و اگر نویز زیاد بود به سمت Large می رویم. هرچقدر به سمت نویز زیاد برویم کنترلر در مقابل نویز اندازه گیری شده مقاوم تر می شود.
در قسمت آخر نیز می توانید درجه کنترل کننده را انتخاب کنید.
روش Loop Shaping :
روش آخر تنظیم پارامترهای کنترل کننده روش Loop Shaping می باشد. این روش نیز یک کنترل کننده فیدبک پایدار ساز را طوری طراحی می کند که تا حد امکان به شکل حلقه مورد نظر شبیه شود. برای مشخص کردن شکل حلقه پهنای باند یا پاسخ فرکانسی حلقه باز را باید مشخص کرد.
برای طراحی کنترل کننده با این روش دو گزینه موجود می باشد:
۱) طراحی به روش پهنای باند هدف (Target bandwidth) : باید پهنای باند هدف مانند شکل زیر مشخص شود: ۲) طراحی به روش شکل حلقه هدف (Target loop shape) : باید شکل حلقه باز هدف بصورت تابع تبدیل یا معادلات حالت و … مشخص شود: توجه کنید که پس از انتخاب هر روش حتماً گزینه Update Compensator را برنید تا پارامترهای کنترل کننده تنظیم شوند.
در قسمت بعد کنترل کننده یک موتور DC را بوسیله این تولباکس طراحی می کنیم.
 

javad ta

عضو جدید
کاربر ممتاز
آموزش شبیه سازی (قسمت اول)

آموزش شبیه سازی (قسمت اول)

برای وارد شدن به محیط سیمولینک بر روی آیکون آن کلیک کنید یا در قسمت Command دستور simulink را وارد کنید تا محیط سیمولینک نمایش داده شود: همان طور که مشخص است در محیط Library کتابخانه های مختلفی برای شبیه سازی قرار داده شده است که با کلیک بر روی هر کتابخانه محتوای آن نمایش داده می شود. ممکن است هر زیرکتابخانه ای نیز دارای بخش های مختلفی باشد که با کلیک بر روی هر کدام محتوای آن قسمت در سمت راست نمایش داده می شود: در پست های آینده محتوای هر کتابخانه را توضیح خواهیم داد.
برای رسم بلوک دیاگرام می توانید از قسمت File وانتخاب گزینه New و Model یک محیط جدید را باز کنید. قبل از اینکه شبیه سازی را شروع کنید بهتر است تنظیمات حل (Solve) شبیه سازی را مشخص کنید.
همان طور که می دانید نرم افزار متلب مبتنی بر روش های عددی می باشد بدین معنی که معادلات خود را بر اساس روش های عددی حل می کند و چون روش های عددی متنوع می باشد بر اساس دقت و سرعت حل بهتر است گزینه مناسبی را انتخاب کنید.
برای انتخاب نوع روش حل و تغییر دادن تنظیمات آن دکمه Ctrl+E را زده یا مطابق شکل زیر گزینه مشخص شده را بزنید تا صفحه مربوط به تنظیمات باز شود: همان طور که مشخص است این قسمت دارای بخش های مختلف می باشد: در قسمت Simulation time می توانید زمان شروع و پایان شبیه سازی را انتخاب کنید.
در قسمت Solver option می توانید تنظیمات مربوط به شبیه سازی را انجام دهید. در این قسمت ابتدا باید نوع حل که خود دو روش می باشد را انتخاب کنید:
روش گام متغیر (Variable-step) :
بعضی از روش های حل بسته به پاسخ دینامیکی مقدار گام را تغییر می دهند تا بتوانند سریع تر به جواب برسند. روش های گام متغیر برای مدل هایی که حالت ها در آن سریع تغییر می کنند یا شامل المان های discontinue هستند پیشنهاد می شود. بنابراین برای دقیق بودن جواب اگر حالت ها سریع تغییر می کنند بهتر است میزان گام را کاهش دهیم در غیر این صورت اگر حالت ها به آرامی تغییر می کردند بهتر است میزان گام را افزایش داده تا گام های غیر لازم را حل نکند.
نرم افزار متلب بصورت پیش فرض (auto) مقادیری را برای بیشترین، کمترین و مقدار اولیه گام در نظر گرفته است.برای مثال اگر در قسمت Max step size مقدار auto را قرار دهید بدین معنی است که نرم افزار مقدار پیش فرض خودش که در این مورد از رابطه زیر حساب می شود را قرار می دهد: در قسمت Solver نیز می توانید روش های حلی که مبتنی بر گام متغیر هستند را انتخاب کنید که عبارت اند از:
Discrete (no continuous states)
ode45 (Dormand-Prince)
ode23 (Bogacki-Shampine)
ode113 (Adams)
ode113
ode15s (stiff/NDF)
ode23s (stiff/Mod. Rosenbrock)
ode23t (Mod. stiff/Trapezoidal)
ode23tb (stiff/TR-BDF2)​
هر کدام از روش ها خاصیت خود را دارا می باشند ولی معروف ترین آن ها روش ode45 می باشد که برای حل بیشتر مسائل مورد استفاده قرار می گیرد. روش ode15s نیز برای مسائلی که روش ode45 نمی تواند آن را حل کند پیشنهاد شده است.
دو گزینه خطای نسبی (Relative) وخطای مطلق (Absolute) نیز بطور پیش فرض مقدار دهی شده اند.
روش گام ثابت (Fixed-step) :
در این روش بر خلاف روش بالا میزان گام در طول شبیه سازی ثابت در نظر گرفته می شود. در قسمت Fixed-step size می توانید مقدار گام را مشخص کنید: در قسمت Solver نیز می توانید روش های حلی که مبتنی بر گام ثابت هستند را انتخاب کنید که عبارت اند از:

Discrete (no continuous states)
ode3 (Bogacki-Shampine)
ode8 (Dormand-Prince RK8(7))
ode5 (Dormand-Prince)
ode4 (Runge-Kutta)
ode2 (Heun)
ode1 (Euler)
ode14x (extrapolation)​
پس اگر مدلی را شبیه سازی کردید و جواب نگرفتید سعی کنید تنظیمات مربوط به روش حل آن را تغییر دهید.
پس از انتخاب روش حل به سراغ شبیه سازی می رویم. برای وارد کردن بلوک ها داخل مدل پس از کلیک کردن بر روی بلوک دکمه Ctrl+I را بزنید یا می توانید بلوک را گرفته و داخل مدل رها کنید.
در این قسمت برای مثال نحوه شبیه سازی موتور DC را به سه روش آموزش می دهیم:
۱) همان طور که در پست مدل موتور DC اشاره شد می توان مدار معادل موتور را بصورت زیر در نظر گرفت: ۲) تابع انتقال موتور را می توان بصورت زیر نمایش داد: به ازای مقادیر زیر تابع انتقال برابر است با: ۳) می توان تابع انتقال را بفرم معادلات دیفرانسیل بصورت زیر نوشت:
می خواهیم پاسخ پله موتور را بدست آوریم. بلوک های مورد نیاز برای شبیه سازی را می توانید از قسمت های زیر انتخاب کنید:

Simulink>>Commonly Used Blocks>>Constant
Simulink>>Commonly Used Blocks>>Gain
Simulink>>Commonly Used Blocks>>Integrator
Simulink>>Commonly Used Blocks>>Scope
Simulink>>Commonly Used Blocks>>Sum
Simulink>> Continuous >>Transfer Fcn​
خروجی بلوک Constant یک مقدار ثابت می باشد. این مقدار ثابت می تواند یک عدد اسکالر باشد یا یک ماتریس ثابت: در اینجا چون بعنوان ورودی پله می باشد مقدار یک را درآن قرار می دهیم.
بلوک Gain نیز ورودی خود را در مقدارش ضرب کرده و به خروجی خود می فرستد. همانند بلوک قبلی این بلوک نیز می تواند بصورت ضرب اسکالر عمل کند یا بصورت ضرب ماتریسی. برای انتخاب نوع عملیات ضرب مطابق با شکل زیر عمل کنید: گزینه اول مربوط به ضرب اسکالر و سه گزینه دیگر مربوط به ضرب ماتریسی می باشد (از سمت راست یا چپ و یا بصورت برداری). توجه کنید که در صورتی که ضرب ماتریسی را انتخاب کردید باید ابعاد ماتریس ورودی با ابعاد ماتریس ضرب متناسب باشد در غیر این صورت با پیام خطا مواجه خواهید شد.
بلوک Integrator همان عمل انتگرال گیری را برای ما انجام می دهد. برای مقدار دهی اولیه انتگرال می توانید از قسمت Initial condition استفاده کنید. همچنین اگر می خواهید انتگرال را صفر کنید می توانید از قسمت External reset استفاده کنید. صفر کردن انتگرال بیشتر مواقع برای پارامترهایی مناسب می باشد که متناوب هستند. برای مثال زمانی که از سرعت موتور انتگرال می گیرید خروجی که زاویه روتور می باشد نباید بیشتر از ۲π شود. می توانید با بلوکی ساده زمانی که خروجی انتگرال گیر بیشتر از ۲π شد مقدار آن را دوباره صفر کنید. همچنین می توانید حد اشباع برای انتگرال گیر تعریف کنید: یکی از پرکاربردترین بلوک ها، بلوک Scope می باشد که برای مشاهده خروجی بلوک ها استفاده می شود. با دو بار کلیک کردن بر آن و انتخاب کلیک Parameters می توانید تنظیمات مربوط به آن را انجام دهید: همان طور که از شکل مشخص است تنظیمات اسکوپ سه قسمت دارد: ۱) در قسمت General می توانید تعداد منحنی ها را مشخص کنید.
۲) در قسمت History می توانید مشخص کنید که چه مقدار از داده ها نمایش یا ذخیره شوند.
۳) در قسمت Style می توانید رنگ نمودارها و ضخامت خطوط را مشخص کنید.
بلوک بعدی بلوک Sum یا جمع کننده می باشد. با دو بار کلیک کردن بر آن می توانید تنظیمات مربوط به آن را انجام دهید: در قسمت Icon shape نوع شکل بلوک را می توانید مشخص کنید و در قسمت List of sign با قرار دادن علامت مثبت و منفی می توانید تعداد ورودی های جمع کننده و علامت آن ها را مشخص کنید.
بلوک آخری که برای شبیه سازی نیاز دارید بلوک Transfer Fcn می باشد. این بلوک برای تابع انتقال در حوزه S مورد استفاده قرار می گیرد. با وارد شدن به بخش تنظیمات شکل زیر نمایش داده می شود: در قسمت Numerator ضرایب معادله صورت و در قسمت Denomirator ضرایب معادله مخرج را بصورت ماتریسی می توانید قرار دهید. توجه کنید که برای استفاده از این بلوک، درجه مخرج حتماً باید بیشتر از صورت باشد.
برای شبیه سازی هر سه روش مطابق شکل زیر بلوک ها را به هم متصل کرده و مقدار دهی کنید: نتیجه شبیه سازی بصورت زیر می باشد:
 
Similar threads
Thread starter عنوان تالار پاسخ ها تاریخ
Mehdi_tsu دانلود کتاب آموزشی etap 7 در 3800 صفحه نرم افزارهای مهندسی برق 3

Similar threads

بالا