نوشتن پروژه شبکه عصبی در متلب
نوشتن پروژه شبکه عصبی در متلب : آموزش متلب
آموزش متلب : ایجاد شبکه عصبی :
برای ایجاد توابع فازی بهینه از شبکه عصبی استفاده می گردد که در طول مرحله آموزش شبکه عصبی خطای مجموعه آموزش بسیار کوچک باید باشد ولی هنگامی که داده های جدید را به شبکه معرفی می کنیم خطای آموزش بالا می رود و این پروسه تا زمانیکه خطای آموزش مقدار خیلی کوچک نرسد متوقف نمی شود.
روش حل الگوریتم :
الگوریتم حل شامل چندین مرحله است :
۱- تولید مجموعه اولیه برای قسمت حقیقی و موهومی بار در هر باس به صورت تصادفی
۲- تشکیل بردار ورودی X
۳- تعریف بردار ورودی که Uk مربوط به قسمت حقیقی بارهای k باس سیستم مذکور می باشد
۴- تعریف وزن های w از ورودی سیستم شبکه عصبی به خروجی شبکه که مدل تعریف وزن ها بصورت زیر است :
۵- تعریف وزن های ورودی شبکه
۶- تعیین مقادیر ورودی شبکه عصبی
۷- تعیین فاصله اقلیدسی بین بردار های ورودی شبکه که بصورت زیر تعریف می گردد:
و نرون های با کمترین فاصله بعنوان وزن نرون انتخاب می گردد.
۸- بروز رسانی وزن های نرون ها بوسیله قانون کاهنن که بصورت زیر تعریف می گردد:
که در معادله فوق پارامتر در محدوده زیر تعریف می گردد:
آموزش متلب که مراحل تکرار آموزش می باشد.
و الگوریتم تا شرط ادامه می یابد.
۹- انتخاب کلاستر اول برای تعیین وزن نرون با قانون کاهنن
۱۰- محاسبه فاصله اقلیدسی بین بردار Uk
۱۱- آموزش شبکه عصبی با استفاده از داده های ورودی سیستم که بصورت زیر است:
۱۲- آزمایش شبکه و تست خروجی شبکه با استفاده از داده های آزمایش
و پارامترهای فازی و مقادیر آن در سیستم با ۳۰ باس بصورت زیر تعریف می گردد:
و توابع عضویت بصورت زیر تعریف می گردد:
و زمان آموزش و آزمایش سیستم بصورت زیر در می آید :
شبیه سازی برنامه بصورت زیر در می آید :
مدل svc بصورت زیر در mfile نوشته می شود آموزش متلب که برنامه بصورت زیر در می آید که در اینجا از معادلات پارک برای نوشتن SVC استفاده می گردد:
function [epqdot,efddot,bldot,deltadot,wdot] = fcn(pm,vtref,vrefsvc,u,epq,efd,bl,delta,w)
% This block supports an embeddable subset of the MATLAB language.
% See the help menu for details.
%System Parameters
vb=1;
x1=0.2;
x2=0;
xq=2;
xd=2;
xpd=0.271;
tdo=4.95;
h=2.5;
d=0;
ke=100;
te=0.1;
ks=40;
ts=0.1;
bc=-0.275;
xsvc=1/(bc+bl);
id=(xsvc/(x1+xsvc)*vb*cos(delta)-epq)/(xpd+x2+(xsvc*x1)/(x1+xsvc));
iq=(xsvc/(x1+xsvc)*vb*sin(delta))/(xq+x2+(xsvc*x1)/(x1+xsvc));
vtq=epq+xpd*id;
vtd=-xq*iq;
pe=vtq*iq+vtd*id;
vt=sqrt(vtq^2+vtd^2);
if x2~=0
vsvc=(vb/x1+vt/x2)/(1/xsvc+1/x1+1/x2);
else
vsvc=vt;
end
deltadot=w;
wdot=2*pi*60/(2*h)*(pm-d*w/(2*pi*60)-pe);
epqdot=1/tdo*(-epq+(xd-xpd)*id+efd);
efddot=1/te*(-efd+ke*(vtref-vt));
bldot=1/ts*(-bl+ks*(vsvc-vrefsvc))+ks/ts*u;
و ورودی های SVC عبارنتد از:
Pm,Vtref,u,epq,efd,bl,delta,w
و خروجی های سیستم عبارنتد از:
Epqdot,efddot,bldot,deltadot,wdot
و مدل svc را از مقالات مربوطه استخراج شده است.
و قسمت آموزش شبکه عصبی بصورت زیر کد می گردد:
%anftrain
clc
clear all
commandwindow
wmax=12;
wdotmax=150;
load data
load t t
t_train=input(‘t= ‘);
n_train=find(t>t_train);
n_train=n_train(1);
fprintf(‘Number of Training Steps: %10g’,n_train)
data1=data50;
data1(1,:)=data1(1,:)/wmax;
data1(2,:)=data1(2,:)/wdotmax;
data=data1;
[ulp id=’hAvlTccXXzt2ufny’]
trnData=data1′;
numMFs=5;
mfType=’gaussmf’;
in_fis = genfis1(trnData,numMFs,mfType);
out_fis = anfis(trnData,in_fis,20);
plot(t,data1(3,:),t,evalfis(data1([1 2],:)’,out_fis));
و با اجرای این کد خروجی بصورت زیر ایجاد می گردد:
توابع ورودی و خروجی بصورت زیر می باشد:
و توابع عضویت ورودی بصورت زیر می باشد:
و توابع عضویت خروجی بصورت زیر می باشد:
و قوانین بصورت زیر تعریف می گردد:
آموزش متلب پس از تعریف فازی سوگنوی سیستم پایدار ساز نوبت به بخش فازی عصبی یا anfis می رسد که برای این کار ابتدا با دستور anfisedit به محیط انفیس وارد می شویم که محیط زیر باز می گردد:
سپس لازم است که در قسمت ابتدایی load data را وارد کنیم که برای این کار فایل trnData را لود کرده در محیط workspace وارد کرده و سپس محیط workspace را انتخاب می کنیم و سپس load Data را زده داده های مساله که شامل اصلاعات سیستم در مورد پایداری سیستم می باشد را انتخاب می کنیم که پنجره زیر باز می گردد:
پس از آموزش داده ها نوبت به ساختن توابع عضویت ورودی ها و خروجی می شود که ۹ تابع عضویت ورودی و ۹ تابع خروجی تعریف می گردد و نیز نوع تابع عضویت را gaussmf و نوع تابع عضویت خروجی خطی انتخاب می گردد که بصورت زیر در می آید:
پس ایجاد شبکه فازی عصبی شبکه ایجاد شده بصورت زیر در می آید:
که شکل فوق نشان دهنده ورودی شبکه که ۲ تا می باشد و توابع عضویت ورودی ۹ عدد می باشد (مطابق تعریف) و قوانین نیز باید با ستون آبی مشخص می شود و ستون آخر توابع عضویت خروجی و دایره آخر defuzzation می باشد و ستون آخر خروجی سیستم می باشد که همان سیگنال کنترلی u می باشد که این سیگنال کنترلی به دو مدار TCR و TSC وارد می شود.
پس از این مرحله نوبت به آموزش داده ها می رسیم که روش آموزش HYBRID (ترکیبی) و یا backprogation می باشد و دو پارامتر خطای آموزش را ۰٫۰۰۱ و تعداد تکرار را ۱۰۰ انتخاب می کنیم که پس از اجرای سیستم پنجره زیر ایجاد می گردد:
که خطا به مقدار ۰ رسیده است و این بدین مفهوم است که داده های سیستم کامل آموزش داده شده است پس از این مرحله نوبت به مرحله آخر رسیده که تست داده های آموزش دیده شده با داده های تست می باشد که برای این کار داده های تست را لود کرده و تست را انجام می دهیم که بصورت زیر در می آید:
که نشان می دهد داده هاتماما درست آموزش دیده و تست گردیده است.
پس از این مرحله نوبت به استفاده کنترلر طراحی شده می رسد که برای این کار از سربرگ file باید export to workspace را انتخاب کرده و سپس نام کنترلر فازی را به نام anfiscontroller تغییر می دهیم و سیستم را اجرا می کنیم.
و خروجی دلتا svc قبل از طراحی کنترلر فازی عصبی بصورت زیر در می ِآید:
که این خروجی همان خروجی سیستم قبل از پایدار ساز ولتاژ است:
و خروجی دلتای SVC پس از طراحی کنترلر فازی عصبی بصورت زیر در می آید:
که نشان می دهد پایداری ولتاژ انجام گرفته است و سیستم توانسته است با تولید کافی توان راکتیو پایداری ولتاژ را در سیستم فراهم کند که نتیجه آن نیز پایداری سیستم قدرت نهایی می باشد
[ulp id=’hAvlTccXXzt2ufny’]
نتیجه گیری:
در این مقاله از شبکه فازی عصبی برای طراحی پایدار ساز استاتیکی ولتاژ SVC استفاده می گردد برای شرایط نامشخص از خاصیت مبهم فازی استفاده می گردد و برای تعیین پارامترهای فکت از خاصیت شبکه عصبی استفاده می کنیم و خطای آموزش شبکه باید در طی مرحله به کمترین مقدار خودش برسد تا الگوریتم متوقف گردد و این روش را می توان در محاسبات آنلاین نیز استفاده کرد.
نمونه هایی از مثال های حل شده با شبکه عصبی در متلب :