توضیحات
تشخیص نوع خرابی با شبکه عصبی با متلب
شبکه عصبی با یادگیری data set قادر می باشد تا با گرفتن مقادیر زیر AXIAL VIBRATION VERTICAL VIBRATION HORIZONTAL VIBRATION MOTOR .RPM <1X 1X 2X 3X از کاربر نوع خرابی را تشخیص دهد .
در این مسئله دستهبندی 8 متغیر ویژگی داریم (ستونهای H تا O ) و بردار ویژگی بهصورت زیر میباشد:
F=[AXIAL_VIBRATION, VERTICAL_VIBRATION, HORIZONTAL_VIBRATION, MOTOR_RPM, X0, X1, X2, X3]
این مسئله با استفاده از شبکههای عصبی چند کلاسی حل میشود. 454 نمونه داده (سطر) داریم و هر نمونه توسط یک بردار ویژگی بیان میشود.
در خروجی 30 کلاس منحصربهفرد داریم که نوع خطا (Fault_Type) را مشخص میکند و بهصورت زیر میباشد:
1 BAD DRIVE BELT
2 BEARING EXCITED VIBRATION
3 BENT ROTOR SHELL
4 CASE DISTORTION
5 CASING RESONANCE
6 CLEARANCE INDUCED VIBRATION
7 COUPLING CRITICAL
8 COUPLING INACCURACIES
9 CRITICAL SPEED
10 DRY WHRIL
11 E LLIPTICAL STATOR BORE
12 FOUNDATION DISTORTION
13 FOUNDATION RESONANCE
14 GEAR INACCURACIES
15 INITIAL UNBALANCE
16 JOURNAL & BEARING ECCENTRIC
17 MECHANICAL LOOSNESNESS
18 MISALIGNMENT
19 OVERHUNG CRITICAL
20 PIPING FORCES
21 RADIAL BEARING DAMAGE
22 RECIPROCATIONG FORCES
23 ROTOR & BEARING SYC
24 ROTOR RUB
25 ROTOR STATOR MISALIGMENT
26 SEAL RUB
27 SHAFT BOW
28 SUPPORT RESONANCE
29 THRUST BEARING DAMAGE
30 UNEGUAL BEARING STIFFNESS
—————————————————————————–
برای آموزش شبکه عصبی برنامه NNTrraining.m را اجرا کنید
آمادهسازی دادههای ورودی و خروجی شبکه عصبی مصنوعی :
clc;clear all;close all;
دستور readtable() فایل داده dataset.xlsx را بهصورت یک جدول (Table) میخواند:
T=readtable(‘dataset.xlsx’);
متغیرهای ویژگی در ستونهای 8 تا 15 فایل داده قرار دارند بنابراین دستور T(:,8:15) ستونهای 8 تا 15 را از جدول T جدا میکند
دستور table2array() عناصر جدول را به مقادیر آرایه ماتریسی عددی تبدیل میکند تا بتوانیم آنها بهصورت عددی بخوانیم:
X ماتریس متغیرهای ویژگی است که سطرهای آن بیانگر نمونهها و ستونهای آن بیانگر متغیرهای ویژگی میباشد
X=table2array(T(:,8:15));
کلاسهای خروجی در ستون 7 از فایل داده قرار دارند بنابراین با دستور T(:,7) ستون 7 جدول را جدا میکنیم
دستور table2cell() جدول را به سلول (cell) تبدیل میکند. سلول مانند ماتریس یک آرایه میباشد با این تفاوت که عناصر سلول میتواند خود یک ماتریس، رشته کاراکتر یا مقدار عددی باشد درحالیکه عناصر ماتریس فقط میتوانند مقادیر عددی باشد.
سلول Y نشاندهنده کلاسها خروجی متناظر با نمونهها میباشد و 454 سطر و یک ستون دارد
Y=table2cell(T(:,7));
برای اینکه تعداد کلاسهای منحصربهفرد را به دست آوریم از دستور uniqe() استفاده میکنیم:
دستور A=uniqe(B) عناصر ورودی را بدون تکرار در خروجی برمیگرداند
Targets یک سلول با 30 سطر و یک ستون میباشد و کلاسهای منحصربهفرد مسئله را نشان میدهد:
Targets=unique(Y);
در خروجی شبکه عصبی هر یک از کلاسها باید با یک عدد مشخص شود. بنابراین Ygroups بردار عددی کلاسهای خروجی را میسازیم:
دستور strcmp(str1, str2) دو رشته str1 و str2 را مقایسه میکند و اگر برابر بود مقدار منطقی یک را برمیگرداند
size(X,1) تعداد سطرهای X وsize(X,2) تعداد ستونهای X را میدهد
دستور zeros(m,n) یک ماتریس با m سطر و n ستون و مقادیر اولیه صفر تولید میکند (مقداردهی اولیه)
با دستور strcmp(Y(k),Targets(q)) هر یک از سطرهای سلول Y را با تمام سطرهای Targets مقایسه میکنیم و هر جا مقادیر رشتهها برابر بود شماره آن کلاس را در مکان متناظر بردار Ygroups قرار میدهیم. به این شکل به هر یک از کلاسهای Y یک عدد از 1 تا 30 اختصاص میدهیم:
Ygroups=zeros(size(Y,1),1);
for k=1:size(Y,1)
for q=1:size(Targets,1)
if strcmp(Y(k),Targets(q))
Ygroups(k,1)=q;
end
end
end
در فایل دادهای که فرستادید تعدادی از متغیرهای ستونهای X0, X1, X2, X3 مقدار ندارند و خالی میباشد. دستور readtable() این مکانهای خای را بهصورت NaN (Not a Number) میخواند. چون شبکه عصبی مقادیر NaN را قبول نمیکند باید مقادیر این متغیرهای خالی مشخص شوند. من مقادیر خالی را با مقدار صفر جایگزین کردم. دستور B=isnan(A) اگر عناصر ماتریس ورودی برابر NaN باشد مقدار منطقی یک و در غیر این صورت مقدار صفر را برمیگرداند. هر جا عناصر ماتریس X برابر NaN باشد آن را به صفر تبدیل میکنیم:
X(isnan(X))=0;
پیش از ورود دادهها به شبکه عصبی عناصر ماتریس ویژگی X را نرمالسازی میکنیم. در نرمالسازی تمام عناصر ماتریس ویژگی با تغییر مقیاس به بازه صفر تا یک تبدیل میشود. برای این کار مینیمم مقادیر هر ستون را از عناصر آن ستون تفریق میکنیم و حاصل را بر اختلاف ماکزیمم و مینیمم مقادیر ستون تقسیم مینماییم:
for ii=1:size(X,2)
M=X(:, ii);
M=(M-min(M))/(max(M)-min(M));
M(isnan(M))=1,
X(:, ii)=M;
end
N تعداد سطرهای ماتریس ویژگی یا تعداد کل نمونهها میباشد (N=454) :
N=size(X,1);
80 درصد نمونهها را برای آموزش و 20 درصد را برای آزمایش در نظر میگیریم. Ntrain تعداد نمونههای آموزش میباشد.
نکات قابل ذکر:
- پروژه تشخیص نوع خرابی با شبکه عصبی با متلب توسط کارشناسان گروه ۱.۲.۳ پروژه پیاده سازی گردیده و به تعداد محدودی قابل فروش می باشد.
- فایلهای پروژه به صورت کامل پس از خرید فایل بلافاصله در اختیار شما قرار خواهد گرفت.
نقد و بررسیها
هنوز بررسیای ثبت نشده است.