نمايش پست تنها
قديمي ۰۵-۲-۱۳۹۰, ۰۹:۴۱ بعد از ظهر   #1 (لینک دائم)
Astaraki Female
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink دانلود رایگان کدهای آماده آموزش شبکه عصبی توسط الگوریتم رقابت استعماری

دانلود رایگان کدهای آماده آموزش شبکه عصبی توسط الگوریتم رقابت استعماری





راهنمایی در مورد کدها و نحوه استفاده
در مورد روند علمی کار توضیحاتی در لینک زیر آمده است که درک و استفاده از کدها را آسانتر خواهد کرد.
نحوه آموزش شبکه عصبی (Neural Network Training) توسط الگوریتم رقابت استعماری (ICA)


جهت درک بهتر توابع مختلف مورد استفاده همراه کدهایی دانلود کرده اید، بهتر است نگاهی به کدهای آماده الگوریتم رقابت استعماری در این لینک (+) بیاندازید و راهنمای توابع مختلف همراه کدها را مطالعه نمایید.


به همراه فایلها، یک فایل excel با نام Data وجود دارد. داده ها از این فایل خوانده می شوند. ستون آخر این فایل به عنوان خروجی و بقیه ستونها (مستقل از تعدادشان)، به عنوان ورودی در نظر گرفته می شوند. بنابراین برنامه انعطاف لازم برای استفاده در مسائل مختلف مرتبط با شبکه عصبی با داشتن تعداد مختلف ورودی برای شبکه را دارد.

تابع TrainUsingICA_Fcn.m، نیز تظمیات مرتبط با یادگیری (بهینه سازی را دارد). مثلاً تعداد کشورهای اولیه و ضرایب مختلف الگوریتم رقابت استعماری را می توانید در این تابع تنظیم نمایید. همانگونه که می دانید افزایش تعداد کشورهای اولیه و دهه در ICA، همانند هر الگوریتم دیگری به رسیدن به جوابهای بهتر کمک می کند اما در مقابل زمان لازم برای اجرای برنامه را بالا می برد. در زیر بخش های مهم تنظیمات ایت نابع را می بینیم.
كد:
%% Algorithmic Parameter Setting
AlgorithmParams.NumOfCountries = 80;               % Number of initial countries.
AlgorithmParams.NumOfInitialImperialists = 8;      % Number of Initial Imperialists.
AlgorithmParams.NumOfAllColonies = AlgorithmParams.NumOfCountries - AlgorithmParams.NumOfInitialImperialists;
AlgorithmParams.NumOfDecades = 30;
AlgorithmParams.RevolutionRate = 0.3;               % Revolution is the process in which the socio-political characteristics of a country change suddenly.
AlgorithmParams.AssimilationCoefficient = 2;        % In the original paper assimilation coefficient is shown by "beta".
AlgorithmParams.AssimilationAngleCoefficient = .5;  % In the original paper assimilation angle coefficient is shown by "gama".
AlgorithmParams.Zeta = 0.02;                        % Total Cost of Empire = Cost of Imperialist + Zeta * mean(Cost of All Colonies);
AlgorithmParams.DampRatio = 0.99;
AlgorithmParams.StopIfJustOneEmpire = false;         % Use "true" to stop the algorithm when just one empire is remaining. Use "false" to continue the algorithm.
AlgorithmParams.UnitingThreshold = 0.02;            % The percent of Search Space Size, which enables the uniting process of two Empires.


در میان کدهای، برنامه اصلی که باید اجرا شود با نام MainMLPusingICA مشخص شده است. شما کافی است این برنامه را باز کرده و فشردن F5 در متلب، آن را اجرا نمایید. برنامه تعداد تکرار های تعیین شده برای آموزش (تعداد دهه ها یا Decades در ICA) را طی کرده و نتایج نهایی، در انتهای برنامه، در پنجره اصلی متلب نشان داده خواهند شد.
كد:
%% Start of Program
clc
clear
close all

%% Input Output Data
Data = xlsread('Data.xls');

X = Data(:,1:end-1);
Y = Data(:,end);

NumOfInputs = size(X,2);
NumOfOutputs = size(Y,2);
NumOfData = size(X,1);

%% Normalization
XN = X;
YN = Y;

MinX = min(X); MaxX = max(X);
MinY = min(Y); MaxY = max(Y);

for ii = 1:size(X,2)
    XN(:,ii) = Normalize_Fcn(X(:,ii),MinX(ii) , MaxX(ii));
end

for ii = 1:size(Y,2)
    YN(:,ii) = Normalize_Fcn(Y(:,ii),MinY(ii) , MaxY(ii));
end

%% Test and Train Data
TrPercent = 80;
DataNum = size(X,1);
TrNum = round(TrPercent * DataNum/100);
R = randperm(DataNum);
TrInx = R(1:TrNum);
TsInx = R(TrNum+1:end);

Xtr = XN(TrInx,:);
Ytr = YN(TrInx,:);

Xts = XN(TsInx,:);
Yts = YN(TsInx,:);

%% Network Structure
pr = [-1 1];
PR = repmat(pr,NumOfInputs,1);
Network = newff(PR,[5 NumOfOutputs],{'tansig' 'tansig'});
Network.trainparam.goal = .0001;

%% Network Training
[Network BestCost] = TrainUsingICA_Fcn(Network,Xtr,Ytr);

%% Network Assessment
YtrNet = sim(Network,Xtr')';
YtsNet = sim(Network,Xts')';

MSEtr = mse(YtrNet-Ytr)
MSEts = mse(YtsNet-Yts)

CorrelatioTr = corrcoef(YtrNet,Ytr);
CorrelatioTs = corrcoef(YtsNet,Yts);

CorrelatioTr = CorrelatioTr(2)
CorrelatioTs = CorrelatioTs(2)

%% Display
figure
plot(Ytr,'-or'); hold on;
plot(YtrNet,'-sk'); hold off;
xlabel('Index'); ylabel('Output')
title('Real and Network output for Train Data');
legend('Real Output','Network Output')

figure
plot(Yts,'-or'); hold on;
plot(YtsNet,'-sk'); hold off;
xlabel('Index'); ylabel('Output')
title('Real and Network output for Test Data');
legend('Real Output','Network Output')

figure
t = -1:.1:1;
plot(t,t,'linewidth',2)
hold on
plot(Ytr,YtrNet,'ok')
xlabel('Real Output'); ylabel('Network Output')
title('Network output vs. Real Output for Train Data');

figure
t = -1:.1:1;
plot(t,t,'linewidth',2)
hold on
plot(Yts,YtsNet,'ok')
xlabel('Real Output'); ylabel('Network Output')
title('Network output vs. Real Output for Test Data');

نتیجه اجرای برنامه
یک نمونه از نتایج اجرای برنامه را در زیر می بینیم.
كد:
MSEtr =
    0.0055

MSEts =
    0.0057

CorrelatioTr =
    0.9895

CorrelatioTs =
    0.9863
در نهایت هم شکلهایی برای نشان دادن میزان موفقیت و شکست شبکه نشان داده شده اند. شکل زیر، نمودار خروجی واقعی و خروجی شبکه را برای دیتای آموزش بر حسب شماره اندیس داده ها نشان می دهد. هرچقدر این نمودارها روی هم بیفتند، نشان از کارایی شبکه می باشد.



حالت بزرگنمایی شده شکل فوق برای نشان دادن جزئیات در زیر آمده است.



یک روش دیگر برای نشان دادن تصویری کارایی شبکه عصبی، نمایش خروجی شبکه بر حسب خروجی واقعی می باشد. در ادامه این شکل را برای دیتای آموزش می بینیم. هرچقدر نقاط روی شکل به خط آبی نزدیکتر باشند، کارایی شبکه بیشتر می باشد.




شکل زیر، نمودار خروجی واقعی و خروجی شبکه را برای دیتای تست بر حسب شماره اندیس داده ها نشان می دهد. هرچقدر این نمودارها روی هم بیفتند، نشان از کارایی شبکه می باشد.



حالت بزرگنمایی شده شکل فوق برای نشان دادن جزئیات در زیر آمده است.



در ادامه نمایش خروجی شبکه بر حسب خروجی واقعی را برای دیتای آموزش می بینیم. هرچقدر نقاط روی شکل به خط آبی نزدیکتر باشند، کارایی شبکه بیشتر می باشد.



پسورد فايل: محاسبات تکاملی

منبع: دانلود رایگان کدهای آماده آموزش شبکه عصبی توسط الگوریتم رقابت استعماری
فايل ضميمه
نوع فايل: zip ica_trained_ann_codes.zip (188.7 كيلو بايت, 1055 نمايش)

ويرايش شده توسط Astaraki; ۰۵-۳-۱۳۹۰ در ساعت ۱۰:۰۰ بعد از ظهر
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
aeranginkaman (۰۹-۶-۱۳۹۰), amirshah (۰۳-۲۴-۱۳۹۳)

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online