% Start |
clc |
clear |
close all |
% %— — — — — — —Input Data— — — — — — |
fileName=Site.xlsx; |
sheetName=hourly Solar radiation data; |
L=; % add a latitude value |
LOD=; % add a longitude value |
% T means testing data |
SRi=xlsread(fileName, sheetName, C3:C4358); % hourly solar radiation |
Wi=xlsread(fileName, sheetName, D3:D4358); % hour angle |
Wsi=xlsread(fileName, sheetName, E3:E4358); % sun set angle |
GD=xlsread(fileName, sheetName, G3:G4358); % daily solar radiation |
DN=xlsread(fileName, sheetName, F3:F4358); % day number (day & month) |
h=xlsread(fileName, sheetName, I3:I4358); % hour |
SRi_T=xlsread(fileName, sheetName, C4359:C8546); |
Wi_T=xlsread(fileName, sheetName, D4359:D8546); |
Wsi_T=xlsread(fileName, sheetName, E4359:E8546); |
GD_T=xlsread(fileName, sheetName, G4359:G8546); |
DN_T=xlsread(fileName, sheetName, F4359:F8546); |
h_T=xlsread(fileName, sheetName, I4359:I8546); |
SR=SRi1000; |
SR_T=SRi_T1000; |
W=(Wi_T(pi/180)); |
Ws=(abs(Wsi_T(pi/180))); |
%=============Proposed GRNN Model================= |
inputs=[L LOD Wi, Wsi, GD DN h]; |
I=inputs; |
targets=SR; |
T=targets; |
net=newgrnn(I,T); |
test=[L LOD Wi_T, Wsi_T, GD_T DN_T h_T]; |
Test=test; |
x_predicted=sim(net,Test); |
X_P=x_predicted; |
%============Liu and Jordan Model================== |
R_LiuJordan=((((pi)/24)(cos(W)-cos(Ws)))./(sin(Ws)-((piWs)/180).cos(Ws))); |
SR_LiuJordan=R_LiuJordan.GD_T |
%============Collares-Pereira and Rabel Model====== |
a=0.409+(0.5016sin(Ws-60)); |
b=0.6609+(0.4767sin(Ws-60)); |
R_Collares=((a + (b.cos(W))).((((pi/24))(cos(W)-cos(Ws))))./(sin(Ws)-((piWs)/180).cos(Ws))); |
SR_Collares=R_Collares.GD_T; |
%=================Plot data=========================== |
plot (SR_T) |
xlim([0 100]) |
hold on |
plot (SR_LiuJordan, k) |
xlim([0 100]) |
hold on |
plot (SR_Collares, g) |
xlim([0 35]) |
hold on |
plot (X_P, red) |
xlim([0 100]) |
%— — — —Models evaluation— — — — — — — — |
n=length(X_P); |
E3_Hour=SR_T-X_P; |
GRNN_MAPE=abs(E3_Hour./SR_T); |
GRNN_meanMAPE1=sum(GRNN_MAPE)/n; |
GRNN_meanMAPE=GRNN_meanMAPE1100; |
GRNN_RMSE=sqrt(sum((X_P-SR_T).2/n)) |
GRNN_MBE=sum(X_P-SR_T)/n |
SUM=(sum(X_P)./n); |
liner_RMSE_Percentage=(GRNN_RMSE/SUM)100 |
liner_MBE_Percentage=(GRNN_MBE/SUM)100 |
% End |