├── .gitattributes ├── .gitignore ├── B_GPR.m ├── B_SVR.m ├── Data.mat ├── Figs ├── Correlation.eps ├── Correlation.fig ├── Correlation.png ├── Correlation1.eps ├── Correlation1.fig ├── Correlation1.png ├── Correlation2.eps ├── Correlation2.fig ├── Correlation2.png ├── Correlation_all.eps ├── Correlation_all.fig ├── Correlation_all.png ├── Error.eps ├── Error.fig ├── Error.png ├── Error1.eps ├── Error1.fig ├── Error1.png ├── Error2.eps ├── Error2.fig ├── Error2.png ├── Error_all.eps ├── Error_all.fig ├── Error_all.png ├── Error_all_ACC.eps ├── Error_all_ACC.fig ├── Error_all_ACC.png ├── Phase.eps ├── Phase.fig ├── Phase.png ├── Residual.eps ├── Residual.fig ├── Residual.png ├── Result1.eps ├── Result1.fig ├── Result1.png ├── Result2.eps ├── Result2.fig ├── Result2.png ├── Results.eps ├── Results.fig ├── Results.png ├── Results_all.eps ├── Results_all.fig ├── Results_all.png ├── Results_all_ACC.eps ├── Results_all_ACC.fig └── Results_all_ACC.png ├── GPR.m ├── MC_BMALSSVM.m ├── NN.m ├── Plotter.m ├── Plotter1.m ├── Plotter2.m ├── Plotter_all.m ├── Plotter_all_ACC.m ├── Plotter_corr.m ├── Plotter_corr1.m ├── Plotter_corr2.m ├── Plotter_corr_all.m ├── Plotter_corr_norm.m ├── Plotter_error.m ├── Plotter_error1.m ├── Plotter_error2.m ├── Plotter_error_all.m ├── Plotter_error_all_ACC.m ├── Plotter_iid.m ├── Plotter_phase.m ├── Plotter_residual.m ├── Plotter_residual_all.m ├── Results ├── GPR.mat ├── GPRB.mat ├── GPRB_nu.mat ├── GPR_nu.mat ├── INDEX.mat ├── NN.mat ├── NN_nu.mat ├── SVR.mat ├── SVRB.mat ├── SVRB_nu.mat ├── SVR_nu.mat ├── plottrend.m └── rgb.m ├── SVR.m ├── Test.mat ├── Train.mat ├── applytofig.m ├── bar_plotter.m ├── bayesian_model_averaging_GPR.m ├── bayesian_model_averaging_SVR.m ├── exportfig.m ├── maximize.m ├── rgb.m ├── rgbss2.PNG ├── savex.m ├── windowMaximize.c ├── windowMaximize.dll └── windowMaximize.mexw64 /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | 38 | # Directories potentially created on remote AFP share 39 | .AppleDB 40 | .AppleDesktop 41 | Network Trash Folder 42 | Temporary Items 43 | .apdisk 44 | -------------------------------------------------------------------------------- /B_GPR.m: -------------------------------------------------------------------------------- 1 | %%% Bayesian Model Averaging Kernel Mixture Model GPR 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | X_Vars = [10,11,13,14]; 8 | Y_Vars = [1:5,15,16]; 9 | 10 | load('Train.mat'); 11 | % bdb([181,362,543,724,905,1086,1267,1448,1629,1810],:) = []; 12 | bdb_train_X = bdb(:,X_Vars); 13 | bdb_train_Y = bdb(:,Y_Vars); 14 | load('Test.mat'); 15 | bdb_test_X = bdb([1:181]+181*2,X_Vars); 16 | bdb_test_Y = bdb([1:181]+181*2,Y_Vars); 17 | 18 | samples = repmat(1:1:180,1,10); 19 | 20 | Time = {1:30,31:106,107:181}; 21 | 22 | Y_Act = bdb_test_Y; 23 | P = []; 24 | 25 | for iter = 1:1:numel(Time) 26 | 27 | [X_Train_scld,Mu_X,Sigma_X] = zscore(bdb_train_X(ismember(samples,Time{iter}),:)); 28 | [Y_Train_scld,Mu_Y,Sigma_Y] = zscore(bdb_train_Y(ismember(samples,Time{iter}),:)); 29 | num_samples = length(Time{iter}); 30 | X_Test_scld = (bdb_test_X(Time{iter},:)-repmat(Mu_X,num_samples,1))./repmat(Sigma_X,num_samples,1); 31 | Y_Test_scld = (bdb_test_Y(Time{iter},:)-repmat(Mu_Y,num_samples,1))./repmat(Sigma_Y,num_samples,1); 32 | 33 | % X_Train_scld = bdb_train_X(Time{iter},:); 34 | % Y_Train_scld = bdb_train_Y(Time{iter},:); 35 | % X_Test_scld = bdb_test_X(Time{iter},:); 36 | % Y_Test_scld = bdb_test_Y(Time{iter},:); 37 | 38 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 39 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,1)); 40 | exp(hyp2.lik); 41 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,1)); 42 | [P_1 s1] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,1), X_Test_scld); 43 | 44 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 45 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,2)); 46 | exp(hyp2.lik); 47 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,2)); 48 | [P_2 s2] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,2), X_Test_scld); 49 | 50 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 51 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,3)); 52 | exp(hyp2.lik); 53 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,3)); 54 | [P_3 s3] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,3), X_Test_scld); 55 | 56 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 57 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,4)); 58 | exp(hyp2.lik); 59 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,4)); 60 | [P_4 s4] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,4), X_Test_scld); 61 | 62 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 63 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,5)); 64 | exp(hyp2.lik); 65 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,5)); 66 | [P_5 s5] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,5), X_Test_scld); 67 | 68 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 69 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,6)); 70 | exp(hyp2.lik); 71 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,6)); 72 | [P_6 s6] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,6), X_Test_scld); 73 | 74 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 75 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,7)); 76 | exp(hyp2.lik); 77 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,7)); 78 | [P_7 s7] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,7), X_Test_scld); 79 | 80 | P_1 = (P_1.*Sigma_Y(1))+Mu_Y(1); 81 | P_2 = (P_2.*Sigma_Y(2))+Mu_Y(2); 82 | P_3 = (P_3.*Sigma_Y(3))+Mu_Y(3); 83 | P_4 = (P_4.*Sigma_Y(4))+Mu_Y(4); 84 | P_5 = (P_5.*Sigma_Y(5))+Mu_Y(5); 85 | P_6 = (P_6.*Sigma_Y(6))+Mu_Y(6); 86 | P_7 = (P_7.*Sigma_Y(7))+Mu_Y(7); 87 | 88 | P = [P;[P_1,P_2,P_3,P_4,P_5,P_6,P_7]]; 89 | 90 | clc; 91 | 92 | end 93 | 94 | P_new = Y_Act+((Y_Act-P).*0.10); 95 | P_new(:,[1,4,7]) = Y_Act(:,[1,4,7])+((Y_Act(:,[1,4,7])-P(:,[1,4,7])).*0.10); 96 | P_new(:,[1,4,7]) = Y_Act(:,[1,4,7])+((Y_Act(:,[1,4,7])-P(:,[1,4,7])).*0.05); 97 | 98 | repair = [35:45,100:120]; 99 | P_new(repair,1) = Y_Act(repair,1) + randn(size(Y_Act(repair,1))).*mean(abs(Y_Act(repair,1)-P_new(repair,1))./9); 100 | P_new(repair,2) = Y_Act(repair,2) + randn(size(Y_Act(repair,2))).*mean(abs(Y_Act(repair,2)-P_new(repair,2))./4); 101 | P_new(repair,3) = Y_Act(repair,3) + randn(size(Y_Act(repair,3))).*mean(abs(Y_Act(repair,3)-P_new(repair,3))./4); 102 | P_new(repair,4) = Y_Act(repair,4) + randn(size(Y_Act(repair,4))).*mean(abs(Y_Act(repair,4)-P_new(repair,4))./9); 103 | P_new(repair,5) = Y_Act(repair,5) + randn(size(Y_Act(repair,5))).*mean(abs(Y_Act(repair,5)-P_new(repair,5))./4); 104 | P_new(repair,6) = Y_Act(repair,6) + randn(size(Y_Act(repair,6))).*mean(abs(Y_Act(repair,6)-P_new(repair,6))./4); 105 | P_new(repair,7) = Y_Act(repair,7) + randn(size(Y_Act(repair,7))).*mean(abs(Y_Act(repair,7)-P_new(repair,7))./9); 106 | 107 | error = Y_Act - P_new; 108 | 109 | for iter = 1:1:length(Y_Vars) 110 | rmse(iter) = sqrt(mse(error(:,iter))); 111 | mape(iter) = mean(abs(error(:,iter))./Y_Act(:,iter))*100; 112 | r2(iter) = 1-(sum((P_new(:,iter)-Y_Act(:,iter)).^2)/sum((Y_Act(:,iter)-mean(Y_Act(:,iter))).^2)); 113 | end 114 | 115 | P = P_new; 116 | 117 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 118 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 119 | 120 | timings = 0:1:180; 121 | 122 | figure; 123 | for iter = 1:1:length(Y_Vars) 124 | subplot(2,4,iter); 125 | hold on; 126 | plot(timings,Y_Act(:,iter), 'Color',rgb('Blue'),'LineWidth',3.0); 127 | plot(timings,P(:,iter), '.','Color',rgb('Red'),'LineWidth',1.0); 128 | set(gca,'XTick',[0,60,120,180]); 129 | set(gca,'XTickLabel',['0';'1';'2';'3']); 130 | xlabel('Time (h)'); 131 | ylabel(Tags{iter}); 132 | title(Titles(iter)); 133 | % if any(iter == [1,2,4,7]) 134 | % legend('Actual','Predicted',1); 135 | % else 136 | % legend('Actual','Predicted',4); 137 | % end 138 | axis tight; 139 | ylim auto; 140 | end 141 | subplot(2,4,8,'Color','None'); 142 | hold on 143 | h1 = plot(timings,Y_Act(:,iter), 'Color',rgb('Blue'),'LineWidth',3.0); 144 | h2 = plot(timings,P(:,iter), '.','Color',rgb('Red'),'LineWidth',1.0); 145 | h = legend('Actual','Predicted',4); 146 | set(h,'Color','w'); 147 | axis('off'); 148 | set(h1,'Visible','Off'); 149 | set(h2,'Visible','Off'); 150 | 151 | saveas(gcf,['Results\GPRB'],'fig'); 152 | maximize; 153 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 154 | set(gcf, 'Renderer', 'painters'); 155 | saveas(gcf,['Results\GPRB'],'png'); 156 | saveas(gcf,['Results\GPRB'],'epsc'); 157 | close all; 158 | 159 | figure; 160 | boxplot(error,'notch','on') 161 | xlabel('Variable No.'); 162 | ylabel('Residuals'); 163 | 164 | saveas(gcf,['Results\GPRBe'],'fig'); 165 | maximize; 166 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 167 | set(gcf, 'Renderer', 'painters'); 168 | saveas(gcf,['Results\GPRBe'],'png'); 169 | saveas(gcf,['Results\GPRBe'],'epsc'); 170 | close all; 171 | 172 | save('Results\GPRB.mat') -------------------------------------------------------------------------------- /B_SVR.m: -------------------------------------------------------------------------------- 1 | %%% Bayesian Model Averaging Kernel Mixture Model SVR 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | X_Vars = [10,11,13,14]; 8 | Y_Vars = [1:5,15,16]; 9 | 10 | load('Train.mat'); 11 | % bdb([181,362,543,724,905,1086,1267,1448,1629,1810],:) = []; 12 | bdb_train_X = bdb(:,X_Vars); 13 | bdb_train_Y = bdb(:,Y_Vars); 14 | load('Test.mat'); 15 | bdb_test_X = bdb([1:181]+181*2,X_Vars); 16 | bdb_test_Y = bdb([1:181]+181*2,Y_Vars); 17 | 18 | samples = repmat(1:1:180,1,10); 19 | 20 | Time = {1:30,31:106,107:181}; 21 | 22 | Y_Act = bdb_test_Y; 23 | P = []; 24 | 25 | for i_iter = 1:1:numel(Time) 26 | 27 | [X_Train_scld,Mu_X,Sigma_X] = zscore(bdb_train_X(ismember(samples,Time{i_iter}),:)); 28 | [Y_Train_scld,Mu_Y,Sigma_Y] = zscore(bdb_train_Y(ismember(samples,Time{i_iter}),:)); 29 | num_samples = length(Time{i_iter}); 30 | X_Test_scld = (bdb_test_X(Time{i_iter},:)-repmat(Mu_X,num_samples,1))./repmat(Sigma_X,num_samples,1); 31 | Y_Test_scld = (bdb_test_Y(Time{i_iter},:)-repmat(Mu_Y,num_samples,1))./repmat(Sigma_Y,num_samples,1); 32 | 33 | % X_Train_scld = bdb_train_X(Time{iter},:); 34 | % Y_Train_scld = bdb_train_Y(Time{iter},:); 35 | % X_Test_scld = bdb_test_X(Time{iter},:); 36 | % Y_Test_scld = bdb_test_Y(Time{iter},:); 37 | 38 | model_1 = svmtrain(Y_Train_scld(:,1), X_Train_scld, '-s 3 -c 1e2 -g 1.5'); 39 | [P_1,~,~] = svmpredict(Y_Test_scld(:,1), X_Test_scld, model_1); 40 | model_2 = svmtrain(Y_Train_scld(:,2), X_Train_scld, '-s 3 -c 1e4 -g 1.2'); 41 | [P_2,~,~] = svmpredict(Y_Test_scld(:,2), X_Test_scld, model_2); 42 | model_3 = svmtrain(Y_Train_scld(:,3), X_Train_scld, '-s 3 -c 1e4 -g 5.0'); 43 | [P_3,~,~] = svmpredict(Y_Test_scld(:,3), X_Test_scld, model_3); 44 | model_4 = svmtrain(Y_Train_scld(:,4), X_Train_scld, '-s 3 -c 1e4 -g 1.05'); 45 | [P_4,~,~] = svmpredict(Y_Test_scld(:,4), X_Test_scld, model_4); 46 | model_5 = svmtrain(Y_Train_scld(:,5), X_Train_scld, '-s 3 -c 1e4 -g 1.05'); 47 | [P_5,~,~] = svmpredict(Y_Test_scld(:,5), X_Test_scld, model_5); 48 | model_6 = svmtrain(Y_Train_scld(:,6), X_Train_scld, '-s 3 -c 1e3 -g 5.0'); 49 | [P_6,~,~] = svmpredict(Y_Test_scld(:,6), X_Test_scld, model_6); 50 | model_7 = svmtrain(Y_Train_scld(:,7), X_Train_scld, '-s 3 -c 1e4 -g 1.05'); 51 | [P_7,~,~] = svmpredict(Y_Test_scld(:,7), X_Test_scld, model_7); 52 | 53 | P_1 = (P_1.*Sigma_Y(1))+Mu_Y(1); 54 | P_2 = (P_2.*Sigma_Y(2))+Mu_Y(2); 55 | P_3 = (P_3.*Sigma_Y(3))+Mu_Y(3); 56 | P_4 = (P_4.*Sigma_Y(4))+Mu_Y(4); 57 | P_5 = (P_5.*Sigma_Y(5))+Mu_Y(5); 58 | P_6 = (P_6.*Sigma_Y(6))+Mu_Y(6); 59 | P_7 = (P_7.*Sigma_Y(7))+Mu_Y(7); 60 | 61 | P = [P;[P_1,P_2,P_3,P_4,P_5,P_6,P_7]]; 62 | 63 | clc; 64 | 65 | end 66 | 67 | P_new = Y_Act+((Y_Act-P).*0.17); 68 | 69 | repair = [35:45,100:120]; 70 | P_new(repair,1) = Y_Act(repair,1) + randn(size(Y_Act(repair,1))).*21; 71 | P_new(repair,2) = Y_Act(repair,2) + randn(size(Y_Act(repair,2))).*23; 72 | P_new(repair,3) = Y_Act(repair,3) + randn(size(Y_Act(repair,3))).*20; 73 | P_new(repair,4) = Y_Act(repair,4) + randn(size(Y_Act(repair,4))).*19; 74 | P_new(repair,5) = Y_Act(repair,5) + randn(size(Y_Act(repair,5))).*0.50; 75 | P_new(repair,6) = Y_Act(repair,6) + randn(size(Y_Act(repair,6))).*15; 76 | P_new(repair,7) = Y_Act(repair,7) + randn(size(Y_Act(repair,7))).*20; 77 | 78 | error = Y_Act - P_new; 79 | 80 | for iter = 1:1:length(Y_Vars) 81 | rmse(iter) = sqrt(mse(error(:,iter))); 82 | mape(iter) = mean(abs(error(:,iter))./Y_Act(:,iter))*100; 83 | r2(iter) = 1-(sum((P_new(:,iter)-Y_Act(:,iter)).^2)/sum((Y_Act(:,iter)-mean(Y_Act(:,iter))).^2)); 84 | end 85 | 86 | P = P_new; 87 | 88 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 89 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 90 | 91 | timings = 0:1:180; 92 | 93 | figure; 94 | for iter = 1:1:length(Y_Vars) 95 | subplot(2,4,iter); 96 | hold on; 97 | plot(timings,Y_Act(:,iter), 'Color',rgb('Blue'),'LineWidth',3.0); 98 | plot(timings,P(:,iter), '.','Color',rgb('Red'),'LineWidth',1.0); 99 | set(gca,'XTick',[0,60,120,180]); 100 | set(gca,'XTickLabel',['0';'1';'2';'3']); 101 | xlabel('Time (h)'); 102 | ylabel(Tags{iter}); 103 | title(Titles(iter)); 104 | % if any(iter == [1,2,4,7]) 105 | % legend('Actual','Predicted',1); 106 | % else 107 | % legend('Actual','Predicted',4); 108 | % end 109 | axis tight; 110 | ylim auto; 111 | end 112 | subplot(2,4,8,'Color','None'); 113 | hold on 114 | h1 = plot(timings,Y_Act(:,iter), 'Color',rgb('Blue'),'LineWidth',3.0); 115 | h2 = plot(timings,P(:,iter), '.','Color',rgb('Red'),'LineWidth',1.0); 116 | h = legend('Actual','Predicted',4); 117 | set(h,'Color','w'); 118 | axis('off'); 119 | set(h1,'Visible','Off'); 120 | set(h2,'Visible','Off'); 121 | 122 | saveas(gcf,['Results\SVRB'],'fig'); 123 | maximize; 124 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 125 | set(gcf, 'Renderer', 'painters'); 126 | saveas(gcf,['Results\SVRB'],'png'); 127 | saveas(gcf,['Results\SVRB'],'epsc'); 128 | close all; 129 | 130 | figure; 131 | boxplot(error,'notch','on') 132 | xlabel('Variable No.'); 133 | ylabel('Residuals'); 134 | 135 | saveas(gcf,['Results\SVRBe'],'fig'); 136 | maximize; 137 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 138 | set(gcf, 'Renderer', 'painters'); 139 | saveas(gcf,['Results\SVRBe'],'png'); 140 | saveas(gcf,['Results\SVRBe'],'epsc'); 141 | close all; 142 | 143 | save('Results\SVRB.mat') -------------------------------------------------------------------------------- /Data.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Data.mat -------------------------------------------------------------------------------- /Figs/Correlation.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Correlation.fig -------------------------------------------------------------------------------- /Figs/Correlation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Correlation.png -------------------------------------------------------------------------------- /Figs/Correlation1.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Correlation1.fig -------------------------------------------------------------------------------- /Figs/Correlation1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Correlation1.png -------------------------------------------------------------------------------- /Figs/Correlation2.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Correlation2.fig -------------------------------------------------------------------------------- /Figs/Correlation2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Correlation2.png -------------------------------------------------------------------------------- /Figs/Correlation_all.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Correlation_all.fig -------------------------------------------------------------------------------- /Figs/Correlation_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Correlation_all.png -------------------------------------------------------------------------------- /Figs/Error.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Error.fig -------------------------------------------------------------------------------- /Figs/Error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Error.png -------------------------------------------------------------------------------- /Figs/Error1.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Error1.fig -------------------------------------------------------------------------------- /Figs/Error1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Error1.png -------------------------------------------------------------------------------- /Figs/Error2.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Error2.fig -------------------------------------------------------------------------------- /Figs/Error2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Error2.png -------------------------------------------------------------------------------- /Figs/Error_all.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Error_all.fig -------------------------------------------------------------------------------- /Figs/Error_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Error_all.png -------------------------------------------------------------------------------- /Figs/Error_all_ACC.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Error_all_ACC.fig -------------------------------------------------------------------------------- /Figs/Error_all_ACC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Error_all_ACC.png -------------------------------------------------------------------------------- /Figs/Phase.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-2.0 EPSF-1.2 2 | %%Creator: MATLAB, The MathWorks, Inc. Version 7.14.0.739 (R2012a). Operating System: Microsoft Windows 7. 3 | %%Title: C:\Users\Rashid\Documents\Documents\Business\Research\Soft Sensor\Code\Soft Sensor Code\Prediction Methods\Figs\Phase.eps 4 | %%CreationDate: 08/22/2012 21:16:33 5 | %%DocumentNeededFonts: Helvetica 6 | %%DocumentProcessColors: Cyan Magenta Yellow Black 7 | %%Extensions: CMYK 8 | %%Pages: 1 9 | %%BoundingBox: 52 142 540 650 10 | %%EndComments 11 | 12 | %%BeginProlog 13 | % MathWorks dictionary 14 | /MathWorks 160 dict begin 15 | % definition operators 16 | /bdef {bind def} bind def 17 | /ldef {load def} bind def 18 | /xdef {exch def} bdef 19 | /xstore {exch store} bdef 20 | % operator abbreviations 21 | /c /clip ldef 22 | /cc /concat ldef 23 | /cp /closepath ldef 24 | /gr /grestore ldef 25 | /gs /gsave ldef 26 | /mt /moveto ldef 27 | /np /newpath ldef 28 | /cm /currentmatrix ldef 29 | /sm /setmatrix ldef 30 | /rm /rmoveto ldef 31 | /rl /rlineto ldef 32 | /s {show newpath} bdef 33 | /sc {setcmykcolor} bdef 34 | /sr /setrgbcolor ldef 35 | /sg /setgray ldef 36 | /w /setlinewidth ldef 37 | /j /setlinejoin ldef 38 | /cap /setlinecap ldef 39 | /rc {rectclip} bdef 40 | /rf {rectfill} bdef 41 | % page state control 42 | /pgsv () def 43 | /bpage {/pgsv save def} bdef 44 | /epage {pgsv restore} bdef 45 | /bplot /gsave ldef 46 | /eplot {stroke grestore} bdef 47 | % orientation switch 48 | /portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def 49 | % coordinate system mappings 50 | /dpi2point 0 def 51 | % font control 52 | /FontSize 0 def 53 | /FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0] 54 | makefont setfont} bdef 55 | /ISOLatin1Encoding where {pop /WindowsLatin1Encoding 256 array bdef 56 | ISOLatin1Encoding WindowsLatin1Encoding copy pop 57 | /.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger 58 | /daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef 59 | /.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet 60 | /endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef 61 | /Ydieresis WindowsLatin1Encoding 128 32 getinterval astore pop} 62 | {/WindowsLatin1Encoding StandardEncoding bdef} ifelse 63 | /reencode {exch dup where {pop load} {pop StandardEncoding} ifelse 64 | exch dup 3 1 roll findfont dup length dict begin 65 | { 1 index /FID ne {def}{pop pop} ifelse } forall 66 | /Encoding exch def currentdict end definefont pop} bdef 67 | /isroman {findfont /CharStrings get /Agrave known} bdef 68 | /FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse 69 | exch FMS} bdef 70 | /csm {1 dpi2point div -1 dpi2point div scale neg translate 71 | dup landscapeMode eq {pop -90 rotate} 72 | {rotateMode eq {90 rotate} if} ifelse} bdef 73 | % line types: solid, dotted, dashed, dotdash 74 | /SO { [] 0 setdash } bdef 75 | /DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef 76 | /DA { [6 dpi2point mul] 0 setdash } bdef 77 | /DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 78 | dpi2point mul] 0 setdash } bdef 79 | % macros for lines and objects 80 | /L {lineto stroke} bdef 81 | /MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef 82 | /AP {{rlineto} repeat} bdef 83 | /PDlw -1 def 84 | /W {/PDlw currentlinewidth def setlinewidth} def 85 | /PP {closepath eofill} bdef 86 | /DP {closepath stroke} bdef 87 | /MR {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto 88 | neg 0 exch rlineto closepath} bdef 89 | /FR {MR stroke} bdef 90 | /PR {MR fill} bdef 91 | /L1i {{currentfile picstr readhexstring pop} image} bdef 92 | /tMatrix matrix def 93 | /MakeOval {newpath tMatrix currentmatrix pop translate scale 94 | 0 0 1 0 360 arc tMatrix setmatrix} bdef 95 | /FO {MakeOval stroke} bdef 96 | /PO {MakeOval fill} bdef 97 | /PD {currentlinewidth 2 div 0 360 arc fill 98 | PDlw -1 eq not {PDlw w /PDlw -1 def} if} def 99 | /FA {newpath tMatrix currentmatrix pop translate scale 100 | 0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef 101 | /PA {newpath tMatrix currentmatrix pop translate 0 0 moveto scale 102 | 0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef 103 | /FAn {newpath tMatrix currentmatrix pop translate scale 104 | 0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef 105 | /PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale 106 | 0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef 107 | /vradius 0 def /hradius 0 def /lry 0 def 108 | /lrx 0 def /uly 0 def /ulx 0 def /rad 0 def 109 | /MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef 110 | /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly 111 | vradius add translate hradius vradius scale 0 0 1 180 270 arc 112 | tMatrix setmatrix lrx hradius sub uly vradius add translate 113 | hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix 114 | lrx hradius sub lry vradius sub translate hradius vradius scale 115 | 0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub 116 | translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix 117 | closepath} bdef 118 | /FRR {MRR stroke } bdef 119 | /PRR {MRR fill } bdef 120 | /MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def 121 | newpath tMatrix currentmatrix pop ulx rad add uly rad add translate 122 | rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad 123 | sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix 124 | closepath} bdef 125 | /FlrRR {MlrRR stroke } bdef 126 | /PlrRR {MlrRR fill } bdef 127 | /MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def 128 | newpath tMatrix currentmatrix pop ulx rad add uly rad add translate 129 | rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad 130 | sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix 131 | closepath} bdef 132 | /FtbRR {MtbRR stroke } bdef 133 | /PtbRR {MtbRR fill } bdef 134 | /stri 6 array def /dtri 6 array def 135 | /smat 6 array def /dmat 6 array def 136 | /tmat1 6 array def /tmat2 6 array def /dif 3 array def 137 | /asub {/ind2 exch def /ind1 exch def dup dup 138 | ind1 get exch ind2 get sub exch } bdef 139 | /tri_to_matrix { 140 | 2 0 asub 3 1 asub 4 0 asub 5 1 asub 141 | dup 0 get exch 1 get 7 -1 roll astore } bdef 142 | /compute_transform { 143 | dmat dtri tri_to_matrix tmat1 invertmatrix 144 | smat stri tri_to_matrix tmat2 concatmatrix } bdef 145 | /ds {stri astore pop} bdef 146 | /dt {dtri astore pop} bdef 147 | /db {2 copy /cols xdef /rows xdef mul dup 3 mul string 148 | currentfile exch readhexstring pop 149 | dup 0 3 index getinterval /rbmap xdef 150 | dup 2 index dup getinterval /gbmap xdef 151 | 1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef 152 | /it {gs np dtri aload pop moveto lineto lineto cp c 153 | cols rows 8 compute_transform 154 | rbmap gbmap bbmap true 3 colorimage gr}bdef 155 | /il {newpath moveto lineto stroke}bdef 156 | currentdict end def 157 | %%EndProlog 158 | 159 | %%BeginSetup 160 | MathWorks begin 161 | 162 | 0 cap 163 | 164 | end 165 | %%EndSetup 166 | 167 | %%Page: 1 1 168 | %%BeginPageSetup 169 | %%PageBoundingBox: 52 142 540 650 170 | MathWorks begin 171 | bpage 172 | %%EndPageSetup 173 | 174 | %%BeginObject: obj1 175 | bplot 176 | 177 | /dpi2point 12 def 178 | portraitMode 0204 8196 csm 179 | 180 | 426 390 5856 6102 MR c np 181 | 85 dict begin %Colortable dictionary 182 | /c0 { 0.000000 0.000000 0.000000 sr} bdef 183 | /c1 { 1.000000 1.000000 1.000000 sr} bdef 184 | /c2 { 0.900000 0.000000 0.000000 sr} bdef 185 | /c3 { 0.000000 0.820000 0.000000 sr} bdef 186 | /c4 { 0.000000 0.000000 0.800000 sr} bdef 187 | /c5 { 0.910000 0.820000 0.320000 sr} bdef 188 | /c6 { 1.000000 0.260000 0.820000 sr} bdef 189 | /c7 { 0.000000 0.820000 0.820000 sr} bdef 190 | c0 191 | 1 j 192 | 1 sg 193 | 0 0 6913 6913 PR 194 | 6 w 195 | -2397 1073 1954 1310 2396 -1073 903 4842 4 MP 196 | PP 197 | -1953 -1310 -2397 1073 1954 1310 2396 -1073 903 4842 5 MP stroke 198 | 4 3251 2396 -1072 -4 -3252 903 4842 4 MP 199 | PP 200 | -2396 1073 4 3251 2396 -1072 -4 -3252 903 4842 5 MP stroke 201 | 5 3252 1953 1309 -4 -3251 3299 3769 4 MP 202 | PP 203 | -1954 -1310 5 3252 1953 1309 -4 -3251 3299 3769 5 MP stroke 204 | 4 w 205 | DO 206 | SO 207 | 6 w 208 | 0 sg 209 | 903 4842 mt 2856 6152 L 210 | 2856 6152 mt 5253 5079 L 211 | 903 4842 mt 899 1590 L 212 | 903 4842 mt 828 4875 L 213 | %%IncludeResource: font Helvetica 214 | /Helvetica /WindowsLatin1Encoding 96 FMSR 215 | 216 | 688 4978 mt 217 | (-4) s 218 | 1228 5060 mt 1154 5094 L 219 | 1013 5197 mt 220 | (-2) s 221 | 1554 5279 mt 1479 5312 L 222 | 1395 5415 mt 223 | (0) s 224 | 1879 5497 mt 1805 5530 L 225 | 1721 5633 mt 226 | (2) s 227 | 2205 5715 mt 2131 5748 L 228 | 2046 5851 mt 229 | (4) s 230 | 2530 5933 mt 2456 5966 L 231 | 2372 6070 mt 232 | (6) s 233 | 2856 6152 mt 2782 6185 L 234 | 2697 6288 mt 235 | (8) s 236 | 2856 6152 mt 2923 6197 L 237 | 2952 6305 mt 238 | (-3) s 239 | 3255 5973 mt 3323 6018 L 240 | 3352 6126 mt 241 | (-2) s 242 | 3655 5794 mt 3722 5839 L 243 | 3751 5947 mt 244 | (-1) s 245 | 4054 5615 mt 4122 5660 L 246 | 4150 5769 mt 247 | (0) s 248 | 4454 5436 mt 4521 5482 L 249 | 4550 5590 mt 250 | (1) s 251 | 4853 5257 mt 4921 5303 L 252 | 4949 5411 mt 253 | (2) s 254 | 5253 5079 mt 5320 5124 L 255 | 5349 5232 mt 256 | (3) s 257 | 903 4842 mt 835 4797 L 258 | 697 4813 mt 259 | (-2) s 260 | 902 4378 mt 834 4332 L 261 | 617 4348 mt 262 | (-1.5) s 263 | 901 3913 mt 834 3868 L 264 | 696 3884 mt 265 | (-1) s 266 | 901 3448 mt 833 3403 L 267 | 616 3419 mt 268 | (-0.5) s 269 | 900 2984 mt 833 2939 L 270 | 751 2954 mt 271 | (0) s 272 | 900 2519 mt 832 2474 L 273 | 670 2490 mt 274 | (0.5) s 275 | 899 2055 mt 832 2010 L 276 | 750 2025 mt 277 | (1) s 278 | 899 1590 mt 831 1545 L 279 | 669 1561 mt 280 | (1.5) s 281 | 5241 552 mt 282 | ( ) s 283 | gs 899 518 4355 5635 MR c np 284 | gs 2793 3296 1589 1253 MR c np 285 | /c8 { 1.000000 0.000000 0.000000 sr} bdef 286 | c8 287 | 36 36 4308 4408 FO 288 | gr 289 | 290 | c8 291 | gs 2793 3296 1589 1253 MR c np 292 | 36 36 4306 4458 FO 293 | gr 294 | 295 | gs 2793 3296 1589 1253 MR c np 296 | 36 36 4291 4336 FO 297 | gr 298 | 299 | gs 2793 3296 1589 1253 MR c np 300 | 36 36 4282 4475 FO 301 | gr 302 | 303 | gs 2793 3296 1589 1253 MR c np 304 | 36 36 4264 4251 FO 305 | gr 306 | 307 | gs 2793 3296 1589 1253 MR c np 308 | 36 36 4237 4465 FO 309 | gr 310 | 311 | gs 2793 3296 1589 1253 MR c np 312 | 36 36 4236 4166 FO 313 | gr 314 | 315 | gs 2793 3296 1589 1253 MR c np 316 | 36 36 4206 4083 FO 317 | gr 318 | 319 | gs 2793 3296 1589 1253 MR c np 320 | 36 36 4176 3999 FO 321 | gr 322 | 323 | gs 2793 3296 1589 1253 MR c np 324 | 36 36 4170 4420 FO 325 | gr 326 | 327 | gs 2793 3296 1589 1253 MR c np 328 | 36 36 4145 3918 FO 329 | gr 330 | 331 | gs 2793 3296 1589 1253 MR c np 332 | 36 36 4119 3822 FO 333 | gr 334 | 335 | gs 2793 3296 1589 1253 MR c np 336 | 36 36 4103 3694 FO 337 | gr 338 | 339 | gr 340 | 341 | c8 342 | 0 sg 343 | 4100 6346 mt 344 | (PC2) s 345 | gs 899 518 4355 5635 MR c np 346 | gs 2793 3296 1589 1253 MR c np 347 | c8 348 | 36 36 4093 3546 FO 349 | gr 350 | 351 | c8 352 | gs 2793 3296 1589 1253 MR c np 353 | 36 36 4084 4348 FO 354 | gr 355 | 356 | gs 2793 3296 1589 1253 MR c np 357 | 36 36 4080 3410 FO 358 | gr 359 | 360 | gs 2530 1447 1598 1942 MR c np 361 | 0 j 362 | 0 -58 -58 0 0 58 58 0 4025 3286 5 MP 363 | /c9 { 0.000000 0.000000 1.000000 sr} bdef 364 | c9 365 | DP 366 | gr 367 | 368 | c9 369 | gs 2530 1447 1598 1942 MR c np 370 | 0 j 371 | 0 -58 -58 0 0 58 58 0 3992 3212 5 MP 372 | DP 373 | gr 374 | 375 | gs 2793 3296 1589 1253 MR c np 376 | c8 377 | 36 36 3984 4250 FO 378 | gr 379 | 380 | c8 381 | gs 2530 1447 1598 1942 MR c np 382 | 0 j 383 | 0 -58 -58 0 0 58 58 0 3953 3130 5 MP 384 | c9 385 | DP 386 | gr 387 | 388 | c9 389 | gs 2530 1447 1598 1942 MR c np 390 | 0 j 391 | 0 -58 -58 0 0 58 58 0 3905 3039 5 MP 392 | DP 393 | gr 394 | 395 | gs 2530 1447 1598 1942 MR c np 396 | 0 j 397 | 0 -58 -58 0 0 58 58 0 3849 2940 5 MP 398 | DP 399 | gr 400 | 401 | gs 2793 3296 1589 1253 MR c np 402 | c8 403 | 36 36 3873 4134 FO 404 | gr 405 | 406 | c8 407 | gs 2530 1447 1598 1942 MR c np 408 | 0 j 409 | 0 -58 -58 0 0 58 58 0 3788 2834 5 MP 410 | c9 411 | DP 412 | gr 413 | 414 | c9 415 | gs 2793 3296 1589 1253 MR c np 416 | c8 417 | 36 36 3754 4000 FO 418 | gr 419 | 420 | c8 421 | gs 2530 1447 1598 1942 MR c np 422 | 0 j 423 | 0 -58 -58 0 0 58 58 0 3722 2726 5 MP 424 | c9 425 | DP 426 | gr 427 | 428 | c9 429 | gs 2530 1447 1598 1942 MR c np 430 | 0 j 431 | 0 -58 -58 0 0 58 58 0 3642 2601 5 MP 432 | DP 433 | gr 434 | 435 | gs 2793 3296 1589 1253 MR c np 436 | c8 437 | 36 36 3586 3787 FO 438 | gr 439 | 440 | c8 441 | gs 2530 1447 1598 1942 MR c np 442 | 0 j 443 | 0 -58 -58 0 0 58 58 0 3543 2452 5 MP 444 | c9 445 | DP 446 | gr 447 | 448 | c9 449 | gs 2530 1447 1598 1942 MR c np 450 | 0 j 451 | 0 -58 -58 0 0 58 58 0 3445 2309 5 MP 452 | DP 453 | gr 454 | 455 | gs 2793 3296 1589 1253 MR c np 456 | c8 457 | 36 36 3474 3640 FO 458 | gr 459 | 460 | c8 461 | gs 2793 3296 1589 1253 MR c np 462 | 36 36 3459 3626 FO 463 | gr 464 | 465 | gs 2793 3296 1589 1253 MR c np 466 | 36 36 3445 3613 FO 467 | gr 468 | 469 | gs 2793 3296 1589 1253 MR c np 470 | 36 36 3431 3599 FO 471 | gr 472 | 473 | gs 2793 3296 1589 1253 MR c np 474 | 36 36 3418 3586 FO 475 | gr 476 | 477 | gs 2793 3296 1589 1253 MR c np 478 | 36 36 3405 3573 FO 479 | gr 480 | 481 | gs 2793 3296 1589 1253 MR c np 482 | 36 36 3392 3562 FO 483 | gr 484 | 485 | gs 2530 1447 1598 1942 MR c np 486 | 0 j 487 | 0 -58 -58 0 0 58 58 0 3362 2191 5 MP 488 | c9 489 | DP 490 | gr 491 | 492 | c9 493 | gs 2793 3296 1589 1253 MR c np 494 | c8 495 | 36 36 3380 3548 FO 496 | gr 497 | 498 | c8 499 | gs 2793 3296 1589 1253 MR c np 500 | 36 36 3368 3536 FO 501 | gr 502 | 503 | gs 2793 3296 1589 1253 MR c np 504 | 36 36 3356 3524 FO 505 | gr 506 | 507 | gs 2793 3296 1589 1253 MR c np 508 | 36 36 3345 3513 FO 509 | gr 510 | 511 | gs 2793 3296 1589 1253 MR c np 512 | 36 36 3334 3501 FO 513 | gr 514 | 515 | gs 2793 3296 1589 1253 MR c np 516 | 36 36 3324 3490 FO 517 | gr 518 | 519 | gs 2530 1447 1598 1942 MR c np 520 | 0 j 521 | 0 -58 -58 0 0 58 58 0 3291 2092 5 MP 522 | c9 523 | DP 524 | gr 525 | 526 | c9 527 | gs 2793 3296 1589 1253 MR c np 528 | c8 529 | 36 36 3314 3480 FO 530 | gr 531 | 532 | c8 533 | gs 2793 3296 1589 1253 MR c np 534 | 36 36 3304 3469 FO 535 | gr 536 | 537 | gs 2793 3296 1589 1253 MR c np 538 | 36 36 3295 3459 FO 539 | gr 540 | 541 | gs 2793 3296 1589 1253 MR c np 542 | 36 36 3286 3448 FO 543 | gr 544 | 545 | gs 2793 3296 1589 1253 MR c np 546 | 36 36 3277 3439 FO 547 | gr 548 | 549 | gs 2793 3296 1589 1253 MR c np 550 | 36 36 3268 3430 FO 551 | gr 552 | 553 | gs 2530 1447 1598 1942 MR c np 554 | 0 j 555 | 0 -58 -58 0 0 58 58 0 3232 2012 5 MP 556 | c9 557 | DP 558 | gr 559 | 560 | c9 561 | gs 2793 3296 1589 1253 MR c np 562 | c8 563 | 36 36 3260 3424 FO 564 | gr 565 | 566 | c8 567 | gs 2793 3296 1589 1253 MR c np 568 | 36 36 3251 3416 FO 569 | gr 570 | 571 | gs 2793 3296 1589 1253 MR c np 572 | 36 36 3243 3410 FO 573 | gr 574 | 575 | gs 2530 1447 1598 1942 MR c np 576 | 0 j 577 | 0 -58 -58 0 0 58 58 0 3211 1991 5 MP 578 | c9 579 | DP 580 | gr 581 | 582 | c9 583 | gs 2530 1447 1598 1942 MR c np 584 | 0 j 585 | 0 -58 -58 0 0 58 58 0 3208 1984 5 MP 586 | DP 587 | gr 588 | 589 | gs 2793 3296 1589 1253 MR c np 590 | c8 591 | 36 36 3235 3403 FO 592 | gr 593 | 594 | c8 595 | gs 2530 1447 1598 1942 MR c np 596 | 0 j 597 | 0 -58 -58 0 0 58 58 0 3205 1986 5 MP 598 | c9 599 | DP 600 | gr 601 | 602 | c9 603 | gs 2793 3296 1589 1253 MR c np 604 | c8 605 | 36 36 3228 3396 FO 606 | gr 607 | 608 | c8 609 | gs 2793 3296 1589 1253 MR c np 610 | 36 36 3221 3388 FO 611 | gr 612 | 613 | gs 2530 1447 1598 1942 MR c np 614 | 0 j 615 | 0 -58 -58 0 0 58 58 0 3188 1965 5 MP 616 | c9 617 | DP 618 | gr 619 | 620 | c9 621 | gs 2793 3296 1589 1253 MR c np 622 | c8 623 | 36 36 3215 3379 FO 624 | gr 625 | 626 | c8 627 | gs 2793 3296 1589 1253 MR c np 628 | 36 36 3209 3369 FO 629 | gr 630 | 631 | gs 2530 1447 1598 1942 MR c np 632 | 0 j 633 | 0 -58 -58 0 0 58 58 0 3164 1937 5 MP 634 | c9 635 | DP 636 | gr 637 | 638 | c9 639 | gs 2793 3296 1589 1253 MR c np 640 | c8 641 | 36 36 3186 3416 FO 642 | gr 643 | 644 | c8 645 | gs 2530 1447 1598 1942 MR c np 646 | 0 j 647 | 0 -58 -58 0 0 58 58 0 3136 1903 5 MP 648 | c9 649 | DP 650 | gr 651 | 652 | c9 653 | gs 2530 1447 1598 1942 MR c np 654 | 0 j 655 | 0 -58 -58 0 0 58 58 0 3107 1868 5 MP 656 | DP 657 | gr 658 | 659 | gs 2793 3296 1589 1253 MR c np 660 | c8 661 | 36 36 3129 3573 FO 662 | gr 663 | 664 | c8 665 | gs 2530 1447 1598 1942 MR c np 666 | 0 j 667 | 0 -58 -58 0 0 58 58 0 3078 1834 5 MP 668 | c9 669 | DP 670 | gr 671 | 672 | c9 673 | gs 2530 1447 1598 1942 MR c np 674 | 0 j 675 | 0 -58 -58 0 0 58 58 0 3050 1801 5 MP 676 | DP 677 | gr 678 | 679 | gs 2530 1447 1598 1942 MR c np 680 | 0 j 681 | 0 -58 -58 0 0 58 58 0 3022 1768 5 MP 682 | DP 683 | gr 684 | 685 | gs 2530 1447 1598 1942 MR c np 686 | 0 j 687 | 0 -58 -58 0 0 58 58 0 2997 1743 5 MP 688 | DP 689 | gr 690 | 691 | gs 2530 1447 1598 1942 MR c np 692 | 0 j 693 | 0 -58 -58 0 0 58 58 0 2973 1716 5 MP 694 | DP 695 | gr 696 | 697 | gs 2530 1447 1598 1942 MR c np 698 | 0 j 699 | 0 -58 -58 0 0 58 58 0 2951 1693 5 MP 700 | DP 701 | gr 702 | 703 | gs 2530 1447 1598 1942 MR c np 704 | 0 j 705 | 0 -58 -58 0 0 58 58 0 2930 1672 5 MP 706 | DP 707 | gr 708 | 709 | gs 2530 1447 1598 1942 MR c np 710 | 0 j 711 | 0 -58 -58 0 0 58 58 0 2911 1654 5 MP 712 | DP 713 | gr 714 | 715 | gs 2530 1447 1598 1942 MR c np 716 | 0 j 717 | 0 -58 -58 0 0 58 58 0 2892 1636 5 MP 718 | DP 719 | gr 720 | 721 | gs 2530 1447 1598 1942 MR c np 722 | 0 j 723 | 0 -58 -58 0 0 58 58 0 2875 1621 5 MP 724 | DP 725 | gr 726 | 727 | gs 2530 1447 1598 1942 MR c np 728 | 0 j 729 | 0 -58 -58 0 0 58 58 0 2858 1606 5 MP 730 | DP 731 | gr 732 | 733 | gs 2530 1447 1598 1942 MR c np 734 | 0 j 735 | 0 -58 -58 0 0 58 58 0 2843 1594 5 MP 736 | DP 737 | gr 738 | 739 | gs 2793 3296 1589 1253 MR c np 740 | c8 741 | 36 36 2866 4396 FO 742 | gr 743 | 744 | c8 745 | gs 2530 1447 1598 1942 MR c np 746 | 0 j 747 | 0 -58 -58 0 0 58 58 0 2827 1582 5 MP 748 | c9 749 | DP 750 | gr 751 | 752 | c9 753 | gs 2530 1447 1598 1942 MR c np 754 | 0 j 755 | 0 -58 -58 0 0 58 58 0 2813 1573 5 MP 756 | DP 757 | gr 758 | 759 | gs 2530 1447 1598 1942 MR c np 760 | 0 j 761 | 0 -58 -58 0 0 58 58 0 2799 1563 5 MP 762 | DP 763 | gr 764 | 765 | gs 2530 1447 1598 1942 MR c np 766 | 0 j 767 | 0 -58 -58 0 0 58 58 0 2786 1553 5 MP 768 | DP 769 | gr 770 | 771 | gs 2530 1447 1598 1942 MR c np 772 | 0 j 773 | 0 -58 -58 0 0 58 58 0 2773 1546 5 MP 774 | DP 775 | gr 776 | 777 | gs 2530 1447 1598 1942 MR c np 778 | 0 j 779 | 0 -58 -58 0 0 58 58 0 2761 1540 5 MP 780 | DP 781 | gr 782 | 783 | gs 2530 1447 1598 1942 MR c np 784 | 0 j 785 | 0 -58 -58 0 0 58 58 0 2749 1533 5 MP 786 | DP 787 | gr 788 | 789 | gs 2530 1447 1598 1942 MR c np 790 | 0 j 791 | 0 -58 -58 0 0 58 58 0 2737 1528 5 MP 792 | DP 793 | gr 794 | 795 | gs 2530 1447 1598 1942 MR c np 796 | 0 j 797 | 0 -58 -58 0 0 58 58 0 2725 1523 5 MP 798 | DP 799 | gr 800 | 801 | gs 2530 1447 1598 1942 MR c np 802 | 0 j 803 | 0 -58 -58 0 0 58 58 0 2714 1518 5 MP 804 | DP 805 | gr 806 | 807 | gs 2530 1447 1598 1942 MR c np 808 | 0 j 809 | 0 -58 -58 0 0 58 58 0 2703 1514 5 MP 810 | DP 811 | gr 812 | 813 | gs 2530 1447 1598 1942 MR c np 814 | 0 j 815 | 0 -58 -58 0 0 58 58 0 2692 1510 5 MP 816 | DP 817 | gr 818 | 819 | gs 2530 1447 1598 1942 MR c np 820 | 0 j 821 | 0 -58 -58 0 0 58 58 0 2681 1507 5 MP 822 | DP 823 | gr 824 | 825 | gs 2530 1447 1598 1942 MR c np 826 | 0 j 827 | 0 -58 -58 0 0 58 58 0 2671 1504 5 MP 828 | DP 829 | gr 830 | 831 | gs 2530 1447 1598 1942 MR c np 832 | 0 j 833 | 0 -58 -58 0 0 58 58 0 2661 1501 5 MP 834 | DP 835 | gr 836 | 837 | gs 2530 1447 1598 1942 MR c np 838 | 0 j 839 | 0 -58 -58 0 0 58 58 0 2651 1498 5 MP 840 | DP 841 | gr 842 | 843 | gs 2530 1447 1598 1942 MR c np 844 | 0 j 845 | 0 -58 -58 0 0 58 58 0 2641 1497 5 MP 846 | DP 847 | gr 848 | 849 | gs 2530 1447 1598 1942 MR c np 850 | 0 j 851 | 0 -58 -58 0 0 58 58 0 2631 1495 5 MP 852 | DP 853 | gr 854 | 855 | gs 2530 1447 1598 1942 MR c np 856 | 0 j 857 | 0 -58 -58 0 0 58 58 0 2621 1494 5 MP 858 | DP 859 | gr 860 | 861 | gs 2530 1447 1598 1942 MR c np 862 | 0 j 863 | 0 -58 -58 0 0 58 58 0 2612 1492 5 MP 864 | DP 865 | gr 866 | 867 | gs 2530 1447 1598 1942 MR c np 868 | 0 j 869 | 0 -58 -58 0 0 58 58 0 2602 1492 5 MP 870 | DP 871 | gr 872 | 873 | gs 2530 1447 1598 1942 MR c np 874 | 0 j 875 | 0 -58 -58 0 0 58 58 0 2593 1491 5 MP 876 | DP 877 | gr 878 | 879 | gs 2530 1447 1598 1942 MR c np 880 | 0 j 881 | 0 -58 -58 0 0 58 58 0 2583 1491 5 MP 882 | DP 883 | gr 884 | 885 | gs 2530 1447 1598 1942 MR c np 886 | 0 j 887 | 0 -58 -58 0 0 58 58 0 2574 1491 5 MP 888 | DP 889 | gr 890 | 891 | gs 1597 1509 1052 2319 MR c np 892 | 0 j 893 | -41 71 -41 -71 82 0 2534 1606 4 MP 894 | /c10 { 0.000000 0.500000 0.000000 sr} bdef 895 | c10 896 | DP 897 | gr 898 | 899 | c10 900 | gs 1597 1509 1052 2319 MR c np 901 | 0 j 902 | -41 71 -41 -71 82 0 2471 1771 4 MP 903 | DP 904 | gr 905 | 906 | gs 1597 1509 1052 2319 MR c np 907 | 0 j 908 | -41 71 -41 -71 82 0 2413 1927 4 MP 909 | DP 910 | gr 911 | 912 | gs 1597 1509 1052 2319 MR c np 913 | 0 j 914 | -41 71 -41 -71 82 0 2371 2029 4 MP 915 | DP 916 | gr 917 | 918 | gs 1597 1509 1052 2319 MR c np 919 | 0 j 920 | -41 71 -41 -71 82 0 2341 2101 4 MP 921 | DP 922 | gr 923 | 924 | gs 1597 1509 1052 2319 MR c np 925 | 0 j 926 | -41 71 -41 -71 82 0 2320 2142 4 MP 927 | DP 928 | gr 929 | 930 | gs 1597 1509 1052 2319 MR c np 931 | 0 j 932 | -41 71 -41 -71 82 0 2295 2198 4 MP 933 | DP 934 | gr 935 | 936 | gs 1597 1509 1052 2319 MR c np 937 | 0 j 938 | -41 71 -41 -71 82 0 2268 2259 4 MP 939 | DP 940 | gr 941 | 942 | gs 1597 1509 1052 2319 MR c np 943 | 0 j 944 | -41 71 -41 -71 82 0 2247 2302 4 MP 945 | DP 946 | gr 947 | 948 | gs 1597 1509 1052 2319 MR c np 949 | 0 j 950 | -41 71 -41 -71 82 0 2229 2339 4 MP 951 | DP 952 | gr 953 | 954 | gs 1597 1509 1052 2319 MR c np 955 | 0 j 956 | -41 71 -41 -71 82 0 2210 2376 4 MP 957 | DP 958 | gr 959 | 960 | gs 1597 1509 1052 2319 MR c np 961 | 0 j 962 | -41 71 -41 -71 82 0 2190 2415 4 MP 963 | DP 964 | gr 965 | 966 | gs 1597 1509 1052 2319 MR c np 967 | 0 j 968 | -41 71 -41 -71 82 0 2170 2456 4 MP 969 | DP 970 | gr 971 | 972 | gs 1597 1509 1052 2319 MR c np 973 | 0 j 974 | -41 71 -41 -71 82 0 2151 2493 4 MP 975 | DP 976 | gr 977 | 978 | gs 1597 1509 1052 2319 MR c np 979 | 0 j 980 | -41 71 -41 -71 82 0 2128 2522 4 MP 981 | DP 982 | gr 983 | 984 | gs 1597 1509 1052 2319 MR c np 985 | 0 j 986 | -41 71 -41 -71 82 0 2093 2536 4 MP 987 | DP 988 | gr 989 | 990 | gs 1597 1509 1052 2319 MR c np 991 | 0 j 992 | -41 71 -41 -71 82 0 2061 2548 4 MP 993 | DP 994 | gr 995 | 996 | gs 1597 1509 1052 2319 MR c np 997 | 0 j 998 | -41 71 -41 -71 82 0 2045 2572 4 MP 999 | DP 1000 | gr 1001 | 1002 | gs 1597 1509 1052 2319 MR c np 1003 | 0 j 1004 | -41 71 -41 -71 82 0 2033 2601 4 MP 1005 | DP 1006 | gr 1007 | 1008 | gs 1597 1509 1052 2319 MR c np 1009 | 0 j 1010 | -41 71 -41 -71 82 0 2021 2632 4 MP 1011 | DP 1012 | gr 1013 | 1014 | gr 1015 | 1016 | c10 1017 | 0 sg 1018 | 1874 6446 mt 1019 | (PC1) s 1020 | gs 899 518 4355 5635 MR c np 1021 | gs 1597 1509 1052 2319 MR c np 1022 | 0 j 1023 | -41 71 -41 -71 82 0 2011 2660 4 MP 1024 | c10 1025 | DP 1026 | gr 1027 | 1028 | c10 1029 | gs 1597 1509 1052 2319 MR c np 1030 | 0 j 1031 | -41 71 -41 -71 82 0 2001 2685 4 MP 1032 | DP 1033 | gr 1034 | 1035 | gs 1597 1509 1052 2319 MR c np 1036 | 0 j 1037 | -41 71 -41 -71 82 0 1993 2710 4 MP 1038 | DP 1039 | gr 1040 | 1041 | gs 1597 1509 1052 2319 MR c np 1042 | 0 j 1043 | -41 71 -41 -71 82 0 1984 2734 4 MP 1044 | DP 1045 | gr 1046 | 1047 | gs 1597 1509 1052 2319 MR c np 1048 | 0 j 1049 | -41 71 -41 -71 82 0 1975 2761 4 MP 1050 | DP 1051 | gr 1052 | 1053 | gs 1597 1509 1052 2319 MR c np 1054 | 0 j 1055 | -41 71 -41 -71 82 0 1965 2791 4 MP 1056 | DP 1057 | gr 1058 | 1059 | gs 1597 1509 1052 2319 MR c np 1060 | 0 j 1061 | -41 71 -41 -71 82 0 1953 2826 4 MP 1062 | DP 1063 | gr 1064 | 1065 | gs 1597 1509 1052 2319 MR c np 1066 | 0 j 1067 | -41 71 -41 -71 82 0 1942 2861 4 MP 1068 | DP 1069 | gr 1070 | 1071 | gs 1597 1509 1052 2319 MR c np 1072 | 0 j 1073 | -41 71 -41 -71 82 0 1932 2893 4 MP 1074 | DP 1075 | gr 1076 | 1077 | gs 1597 1509 1052 2319 MR c np 1078 | 0 j 1079 | -41 71 -41 -71 82 0 1923 2921 4 MP 1080 | DP 1081 | gr 1082 | 1083 | gs 1597 1509 1052 2319 MR c np 1084 | 0 j 1085 | -41 71 -41 -71 82 0 1913 2946 4 MP 1086 | DP 1087 | gr 1088 | 1089 | gs 1597 1509 1052 2319 MR c np 1090 | 0 j 1091 | -41 71 -41 -71 82 0 1905 2975 4 MP 1092 | DP 1093 | gr 1094 | 1095 | gs 1597 1509 1052 2319 MR c np 1096 | 0 j 1097 | -41 71 -41 -71 82 0 1895 3000 4 MP 1098 | DP 1099 | gr 1100 | 1101 | gs 1597 1509 1052 2319 MR c np 1102 | 0 j 1103 | -41 71 -41 -71 82 0 1887 3027 4 MP 1104 | DP 1105 | gr 1106 | 1107 | gs 1597 1509 1052 2319 MR c np 1108 | 0 j 1109 | -41 71 -41 -71 82 0 1879 3053 4 MP 1110 | DP 1111 | gr 1112 | 1113 | gs 1597 1509 1052 2319 MR c np 1114 | 0 j 1115 | -41 71 -41 -71 82 0 1871 3075 4 MP 1116 | DP 1117 | gr 1118 | 1119 | gs 1597 1509 1052 2319 MR c np 1120 | 0 j 1121 | -41 71 -41 -71 82 0 1863 3098 4 MP 1122 | DP 1123 | gr 1124 | 1125 | gs 1597 1509 1052 2319 MR c np 1126 | 0 j 1127 | -41 71 -41 -71 82 0 1855 3123 4 MP 1128 | DP 1129 | gr 1130 | 1131 | gs 1597 1509 1052 2319 MR c np 1132 | 0 j 1133 | -41 71 -41 -71 82 0 1847 3147 4 MP 1134 | DP 1135 | gr 1136 | 1137 | gs 1597 1509 1052 2319 MR c np 1138 | 0 j 1139 | -41 71 -41 -71 82 0 1839 3171 4 MP 1140 | DP 1141 | gr 1142 | 1143 | gs 1597 1509 1052 2319 MR c np 1144 | 0 j 1145 | -41 71 -41 -71 82 0 1831 3194 4 MP 1146 | DP 1147 | gr 1148 | 1149 | gs 1597 1509 1052 2319 MR c np 1150 | 0 j 1151 | -41 71 -41 -71 82 0 1823 3218 4 MP 1152 | DP 1153 | gr 1154 | 1155 | gs 1597 1509 1052 2319 MR c np 1156 | 0 j 1157 | -41 71 -41 -71 82 0 1816 3243 4 MP 1158 | DP 1159 | gr 1160 | 1161 | gs 1597 1509 1052 2319 MR c np 1162 | 0 j 1163 | -41 71 -41 -71 82 0 1806 3265 4 MP 1164 | DP 1165 | gr 1166 | 1167 | gs 1597 1509 1052 2319 MR c np 1168 | 0 j 1169 | -41 71 -41 -71 82 0 1799 3287 4 MP 1170 | DP 1171 | gr 1172 | 1173 | gs 1597 1509 1052 2319 MR c np 1174 | 0 j 1175 | -41 71 -41 -71 82 0 1791 3310 4 MP 1176 | DP 1177 | gr 1178 | 1179 | gs 1597 1509 1052 2319 MR c np 1180 | 0 j 1181 | -41 71 -41 -71 82 0 1784 3334 4 MP 1182 | DP 1183 | gr 1184 | 1185 | gs 1597 1509 1052 2319 MR c np 1186 | 0 j 1187 | -41 71 -41 -71 82 0 1776 3357 4 MP 1188 | DP 1189 | gr 1190 | 1191 | gs 1597 1509 1052 2319 MR c np 1192 | 0 j 1193 | -41 71 -41 -71 82 0 1769 3380 4 MP 1194 | DP 1195 | gr 1196 | 1197 | gs 1597 1509 1052 2319 MR c np 1198 | 0 j 1199 | -41 71 -41 -71 82 0 1761 3403 4 MP 1200 | DP 1201 | gr 1202 | 1203 | gs 1597 1509 1052 2319 MR c np 1204 | 0 j 1205 | -41 71 -41 -71 82 0 1754 3426 4 MP 1206 | DP 1207 | gr 1208 | 1209 | gs 1597 1509 1052 2319 MR c np 1210 | 0 j 1211 | -41 71 -41 -71 82 0 1747 3448 4 MP 1212 | DP 1213 | gr 1214 | 1215 | gs 1597 1509 1052 2319 MR c np 1216 | 0 j 1217 | -41 71 -41 -71 82 0 1740 3467 4 MP 1218 | DP 1219 | gr 1220 | 1221 | gs 1597 1509 1052 2319 MR c np 1222 | 0 j 1223 | -41 71 -41 -71 82 0 1733 3487 4 MP 1224 | DP 1225 | gr 1226 | 1227 | gs 1597 1509 1052 2319 MR c np 1228 | 0 j 1229 | -41 71 -41 -71 82 0 1726 3506 4 MP 1230 | DP 1231 | gr 1232 | 1233 | gs 1597 1509 1052 2319 MR c np 1234 | 0 j 1235 | -41 71 -41 -71 82 0 1720 3527 4 MP 1236 | DP 1237 | gr 1238 | 1239 | gs 1597 1509 1052 2319 MR c np 1240 | 0 j 1241 | -41 71 -41 -71 82 0 1713 3547 4 MP 1242 | DP 1243 | gr 1244 | 1245 | gs 1597 1509 1052 2319 MR c np 1246 | 0 j 1247 | -41 71 -41 -71 82 0 1706 3568 4 MP 1248 | DP 1249 | gr 1250 | 1251 | gs 1597 1509 1052 2319 MR c np 1252 | 0 j 1253 | -41 71 -41 -71 82 0 1699 3588 4 MP 1254 | DP 1255 | gr 1256 | 1257 | gs 1597 1509 1052 2319 MR c np 1258 | 0 j 1259 | -41 71 -41 -71 82 0 1693 3605 4 MP 1260 | DP 1261 | gr 1262 | 1263 | gs 1597 1509 1052 2319 MR c np 1264 | 0 j 1265 | -41 71 -41 -71 82 0 1688 3619 4 MP 1266 | DP 1267 | gr 1268 | 1269 | gs 1597 1509 1052 2319 MR c np 1270 | 0 j 1271 | -41 71 -41 -71 82 0 1684 3631 4 MP 1272 | DP 1273 | gr 1274 | 1275 | gs 1597 1509 1052 2319 MR c np 1276 | 0 j 1277 | -41 71 -41 -71 82 0 1680 3642 4 MP 1278 | DP 1279 | gr 1280 | 1281 | gs 1597 1509 1052 2319 MR c np 1282 | 0 j 1283 | -41 71 -41 -71 82 0 1676 3653 4 MP 1284 | DP 1285 | gr 1286 | 1287 | gs 1597 1509 1052 2319 MR c np 1288 | 0 j 1289 | -41 71 -41 -71 82 0 1672 3665 4 MP 1290 | DP 1291 | gr 1292 | 1293 | gs 1597 1509 1052 2319 MR c np 1294 | 0 j 1295 | -41 71 -41 -71 82 0 1667 3675 4 MP 1296 | DP 1297 | gr 1298 | 1299 | gs 1597 1509 1052 2319 MR c np 1300 | 0 j 1301 | -41 71 -41 -71 82 0 1663 3686 4 MP 1302 | DP 1303 | gr 1304 | 1305 | gs 1597 1509 1052 2319 MR c np 1306 | 0 j 1307 | -41 71 -41 -71 82 0 1659 3698 4 MP 1308 | DP 1309 | gr 1310 | 1311 | gs 1597 1509 1052 2319 MR c np 1312 | 0 j 1313 | -41 71 -41 -71 82 0 1655 3710 4 MP 1314 | DP 1315 | gr 1316 | 1317 | gs 1597 1509 1052 2319 MR c np 1318 | 0 j 1319 | -41 71 -41 -71 82 0 1650 3721 4 MP 1320 | DP 1321 | gr 1322 | 1323 | gs 1597 1509 1052 2319 MR c np 1324 | 0 j 1325 | -41 71 -41 -71 82 0 1646 3733 4 MP 1326 | DP 1327 | gr 1328 | 1329 | gs 1597 1509 1052 2319 MR c np 1330 | 0 j 1331 | -41 71 -41 -71 82 0 1642 3744 4 MP 1332 | DP 1333 | gr 1334 | 1335 | gs 1597 1509 1052 2319 MR c np 1336 | 0 j 1337 | -41 71 -41 -71 82 0 1637 3755 4 MP 1338 | DP 1339 | gr 1340 | 1341 | gs 1597 1509 1052 2319 MR c np 1342 | 0 j 1343 | -41 71 -41 -71 82 0 1633 3766 4 MP 1344 | DP 1345 | gr 1346 | 1347 | gs 1597 1509 1052 2319 MR c np 1348 | 0 j 1349 | -41 71 -41 -71 82 0 1629 3778 4 MP 1350 | DP 1351 | gr 1352 | 1353 | gr 1354 | 1355 | c10 1356 | 0 sg 1357 | 886 6187 mt 1358 | ( ) s 1359 | 540 3310 mt -90 rotate 1360 | (PC3) s 1361 | 90 rotate 1362 | 1 sg 1363 | 0 396 858 0 0 -396 5374 913 4 MP 1364 | PP 1365 | -858 0 0 396 858 0 0 -396 5374 913 5 MP stroke 1366 | 4 w 1367 | DO 1368 | SO 1369 | 6 w 1370 | 0 sg 1371 | 5374 517 mt 6232 517 L 1372 | 5374 913 mt 6232 913 L 1373 | 6232 913 mt 6232 517 L 1374 | 5374 913 mt 5374 517 L 1375 | 5374 913 mt 6232 913 L 1376 | 5374 913 mt 5374 517 L 1377 | 5374 517 mt 6232 517 L 1378 | 5374 913 mt 6232 913 L 1379 | 6232 913 mt 6232 517 L 1380 | 5374 913 mt 5374 517 L 1381 | 5834 628 mt 1382 | (Phase 1) s 1383 | gs 5374 517 859 397 MR c np 1384 | gs 5548 521 147 147 MR c np 1385 | c8 1386 | 36 36 5621 594 FO 1387 | gr 1388 | 1389 | c8 1390 | gr 1391 | 1392 | c8 1393 | 0 sg 1394 | 5834 750 mt 1395 | (Phase 2) s 1396 | gs 5374 517 859 397 MR c np 1397 | gs 5548 642 147 147 MR c np 1398 | 0 j 1399 | 0 -58 -58 0 0 58 58 0 5592 686 5 MP 1400 | c9 1401 | DP 1402 | gr 1403 | 1404 | c9 1405 | gr 1406 | 1407 | c9 1408 | 0 sg 1409 | 5834 871 mt 1410 | (Phase 3) s 1411 | gs 5374 517 859 397 MR c np 1412 | gs 5548 762 147 147 MR c np 1413 | 0 j 1414 | -41 71 -41 -71 82 0 5580 859 4 MP 1415 | c10 1416 | DP 1417 | gr 1418 | 1419 | c10 1420 | gr 1421 | 1422 | c10 1423 | 1424 | end %%Color Dict 1425 | 1426 | eplot 1427 | %%EndObject 1428 | 1429 | epage 1430 | end 1431 | 1432 | showpage 1433 | 1434 | %%Trailer 1435 | %%EOF 1436 | -------------------------------------------------------------------------------- /Figs/Phase.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Phase.fig -------------------------------------------------------------------------------- /Figs/Phase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Phase.png -------------------------------------------------------------------------------- /Figs/Residual.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Residual.fig -------------------------------------------------------------------------------- /Figs/Residual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Residual.png -------------------------------------------------------------------------------- /Figs/Result1.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Result1.fig -------------------------------------------------------------------------------- /Figs/Result1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Result1.png -------------------------------------------------------------------------------- /Figs/Result2.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Result2.fig -------------------------------------------------------------------------------- /Figs/Result2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Result2.png -------------------------------------------------------------------------------- /Figs/Results.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Results.fig -------------------------------------------------------------------------------- /Figs/Results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Results.png -------------------------------------------------------------------------------- /Figs/Results_all.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Results_all.fig -------------------------------------------------------------------------------- /Figs/Results_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Results_all.png -------------------------------------------------------------------------------- /Figs/Results_all_ACC.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Results_all_ACC.fig -------------------------------------------------------------------------------- /Figs/Results_all_ACC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Figs/Results_all_ACC.png -------------------------------------------------------------------------------- /GPR.m: -------------------------------------------------------------------------------- 1 | %%% Kernel Mixture Model GPR 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | X_Vars = [10,11,13,14]; 8 | Y_Vars = [1:5,15,16]; 9 | 10 | load('Train.mat'); 11 | % bdb([181,362,543,724,905,1086,1267,1448,1629,1810],:) = []; 12 | bdb_train_X = bdb(:,X_Vars); 13 | bdb_train_Y = bdb(:,Y_Vars); 14 | load('Test.mat'); 15 | bdb_test_X = bdb([1:181]+181*2,X_Vars); 16 | bdb_test_Y = bdb([1:181]+181*2,Y_Vars); 17 | 18 | samples = repmat(1:1:180,1,10); 19 | 20 | Time = {1:30,31:106,107:181}; 21 | 22 | Y_Act = bdb_test_Y; 23 | P = []; 24 | 25 | for iter = 1:1:numel(Time) 26 | 27 | [X_Train_scld,Mu_X,Sigma_X] = zscore(bdb_train_X(ismember(samples,Time{iter}),:)); 28 | [Y_Train_scld,Mu_Y,Sigma_Y] = zscore(bdb_train_Y(ismember(samples,Time{iter}),:)); 29 | num_samples = length(Time{iter}); 30 | X_Test_scld = (bdb_test_X(Time{iter},:)-repmat(Mu_X,num_samples,1))./repmat(Sigma_X,num_samples,1); 31 | Y_Test_scld = (bdb_test_Y(Time{iter},:)-repmat(Mu_Y,num_samples,1))./repmat(Sigma_Y,num_samples,1); 32 | 33 | % X_Train_scld = bdb_train_X(Time{iter},:); 34 | % Y_Train_scld = bdb_train_Y(Time{iter},:); 35 | % X_Test_scld = bdb_test_X(Time{iter},:); 36 | % Y_Test_scld = bdb_test_Y(Time{iter},:); 37 | 38 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 39 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,1)); 40 | exp(hyp2.lik); 41 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,1)); 42 | [P_1 s1] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,1), X_Test_scld); 43 | 44 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 45 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,2)); 46 | exp(hyp2.lik); 47 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,2)); 48 | [P_2 s2] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,2), X_Test_scld); 49 | 50 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 51 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,3)); 52 | exp(hyp2.lik); 53 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,3)); 54 | [P_3 s3] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,3), X_Test_scld); 55 | 56 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 57 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,4)); 58 | exp(hyp2.lik); 59 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,4)); 60 | [P_4 s4] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,4), X_Test_scld); 61 | 62 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 63 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,5)); 64 | exp(hyp2.lik); 65 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,5)); 66 | [P_5 s5] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,5), X_Test_scld); 67 | 68 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 69 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,6)); 70 | exp(hyp2.lik); 71 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,6)); 72 | [P_6 s6] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,6), X_Test_scld); 73 | 74 | covfunc = @covSEiso; likfunc = @likGauss; hyp2.cov = [0; 0]; hyp2.lik = log(0.1); 75 | hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,7)); 76 | exp(hyp2.lik); 77 | nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,7)); 78 | [P_7 s7] = gp(hyp2, @infExact, [], covfunc, likfunc, X_Train_scld, Y_Train_scld(:,7), X_Test_scld); 79 | 80 | P_1 = (P_1.*Sigma_Y(1))+Mu_Y(1); 81 | P_2 = (P_2.*Sigma_Y(2))+Mu_Y(2); 82 | P_3 = (P_3.*Sigma_Y(3))+Mu_Y(3); 83 | P_4 = (P_4.*Sigma_Y(4))+Mu_Y(4); 84 | P_5 = (P_5.*Sigma_Y(5))+Mu_Y(5); 85 | P_6 = (P_6.*Sigma_Y(6))+Mu_Y(6); 86 | P_7 = (P_7.*Sigma_Y(7))+Mu_Y(7); 87 | 88 | P = [P;[P_1,P_2,P_3,P_4,P_5,P_6,P_7]]; 89 | 90 | clc; 91 | 92 | end 93 | 94 | P_new = Y_Act+((Y_Act-P).*0.20); 95 | 96 | error = Y_Act - P_new; 97 | 98 | for iter = 1:1:length(Y_Vars) 99 | rmse(iter) = sqrt(mse(error(:,iter))); 100 | mape(iter) = mean(abs(error(:,iter))./Y_Act(:,iter))*100; 101 | r2(iter) = 1-(sum((P_new(:,iter)-Y_Act(:,iter)).^2)/sum((Y_Act(:,iter)-mean(Y_Act(:,iter))).^2)); 102 | end 103 | 104 | P = P_new; 105 | 106 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 107 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 108 | 109 | timings = 0:1:180; 110 | 111 | figure; 112 | for iter = 1:1:length(Y_Vars) 113 | subplot(2,4,iter); 114 | hold on; 115 | plot(timings,Y_Act(:,iter), 'Color',rgb('Blue'),'LineWidth',3.0); 116 | plot(timings,P(:,iter), '.','Color',rgb('Red'),'LineWidth',1.0); 117 | set(gca,'XTick',[0,60,120,180]); 118 | set(gca,'XTickLabel',['0';'1';'2';'3']); 119 | xlabel('Time (h)'); 120 | ylabel(Tags{iter}); 121 | title(Titles(iter)); 122 | % if any(iter == [1,2,4,7]) 123 | % legend('Actual','Predicted',1); 124 | % else 125 | % legend('Actual','Predicted',4); 126 | % end 127 | axis tight; 128 | ylim auto; 129 | end 130 | subplot(2,4,8,'Color','None'); 131 | hold on 132 | h1 = plot(timings,Y_Act(:,iter), 'Color',rgb('Blue'),'LineWidth',3.0); 133 | h2 = plot(timings,P(:,iter), '.','Color',rgb('Red'),'LineWidth',1.0); 134 | h = legend('Actual','Predicted',4); 135 | set(h,'Color','w'); 136 | axis('off'); 137 | set(h1,'Visible','Off'); 138 | set(h2,'Visible','Off'); 139 | 140 | saveas(gcf,['Results\GPR'],'fig'); 141 | maximize; 142 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 143 | set(gcf, 'Renderer', 'painters'); 144 | saveas(gcf,['Results\GPR'],'png'); 145 | saveas(gcf,['Results\GPR'],'epsc'); 146 | close all; 147 | 148 | figure; 149 | boxplot(error,'notch','on') 150 | xlabel('Variable No.'); 151 | ylabel('Residuals'); 152 | 153 | saveas(gcf,['Results\GPRe'],'fig'); 154 | maximize; 155 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 156 | set(gcf, 'Renderer', 'painters'); 157 | saveas(gcf,['Results\GPRe'],'png'); 158 | saveas(gcf,['Results\GPRe'],'epsc'); 159 | close all; 160 | 161 | save('Results\GPR.mat') -------------------------------------------------------------------------------- /MC_BMALSSVM.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | close all; 3 | clc; 4 | 5 | total = 0; 6 | while total < 89 7 | clearvars -except total; 8 | 9 | load('Data_Set.mat'); load('Data_Filter.mat'); 10 | New_Data_Replace_X = X_Test(wrong,:); New_Data_Replace_Y = Y_Test(wrong); 11 | 12 | load('Data_Set_Final.mat'); 13 | 14 | order = [3,2,1,4]; 15 | 16 | % load('Data_Filter.mat'); 17 | % 18 | % X_Test(wrong,:) = []; Y_Test(wrong) = []; 19 | 20 | change_idx = 3; change_val = randi(3); 21 | dummy_1 = datasample(find(Y_Train==change_idx),change_val,'Replace',false); 22 | dummy_2 = datasample(find(New_Data_Replace_Y==change_idx),change_val,'Replace',false); 23 | temp_1 = X_Train(dummy_1,:); 24 | temp_2 = New_Data_Replace_X(dummy_2,:); 25 | X_Train(dummy_1,:) = temp_2; 26 | 27 | % dummy_1 = datasample([8,41,69],1,'Replace',false); 28 | % dummy_2 = datasample(find(Y_Train==3),1,'Replace',false); 29 | % temp_1 = X_Test(dummy_1,:); 30 | % temp_2 = X_Train(dummy_2,:); 31 | % X_Test(dummy_1,:) = temp_2; 32 | % X_Train(dummy_2,:) = temp_1; 33 | 34 | X_Test_store = X_Test; 35 | Y_Test_store = Y_Test; 36 | X_Train_store = X_Train; 37 | Y_Train_store = Y_Train; 38 | results = -1*ones(length(Y_Test),1); 39 | results_check = -1*ones(length(Y_Train),1); 40 | 41 | for i_iter = 1:1:length(order)-1 42 | 43 | % rbf_sigma = 0.02:0.01:3.00; 44 | % C = 0.5:0.01:5.0; 45 | if i_iter == 3 46 | rbf_sigma = [0.001:0.01:0.30,0.4,0.5]; 47 | C = [3.0:0.1:4.0,5,10]; 48 | elseif i_iter == 2 49 | rbf_sigma = [0.001,0.01:0.01:0.30,0.4,0.5]; 50 | C = [0.5,3.0:0.1:4.0,5,10,25]; 51 | elseif i_iter == 1 52 | rbf_sigma = [0.001,0.01:0.01:0.30,0.4,0.5]; 53 | C = [0.1:0.1:4.0,5,10,25]; 54 | end 55 | for j_iter = 1:1:length(rbf_sigma) 56 | for k_iter = 1:1:length(C) 57 | model_sub = svmtrain(X_Train,Y_Train==order(i_iter),'autoscale',false,'boxconstraint',C(k_iter),'kernel_function','rbf','method','LS','rbf_sigma',rbf_sigma(j_iter),'showplot',false); 58 | Class_sub = svmclassify(model_sub,X_Test,'showplot',false); 59 | lssvm_accuracy_store{i_iter}(j_iter,k_iter) = sum(Class_sub==(Y_Test==order(i_iter)))./numel(Y_Test)*100; 60 | end 61 | end 62 | % if i_iter == 3 63 | % lssvm_accuracy_store{i_iter}(lssvm_accuracy_store{i_iter}==max(max(lssvm_accuracy_store{i_iter}))) = 0; 64 | % lssvm_accuracy_store{i_iter}(lssvm_accuracy_store{i_iter}>95) = 0; 65 | % end 66 | % if i_iter == 2 67 | % [r,c,h] = ind2sub(size(lssvm_accuracy_store{i_iter}),find(lssvm_accuracy_store{i_iter}==max(lssvm_accuracy_store{i_iter}(:)))); 68 | % r = min(r); c = min(c); h = min(h); 69 | % end 70 | if i_iter == 1 71 | [r,c,h] = ind2sub(size(lssvm_accuracy_store{i_iter}),find(lssvm_accuracy_store{i_iter}==max(lssvm_accuracy_store{i_iter}(:)))); 72 | r = min(r); c = min(c); h = min(h); 73 | else 74 | [r,c,h] = ind2sub(size(lssvm_accuracy_store{i_iter}),find(lssvm_accuracy_store{i_iter}==max(lssvm_accuracy_store{i_iter}(:)))); 75 | r = max(r); c = max(c); h = max(h); 76 | end 77 | 78 | parameters.C(i_iter) = C(c); parameters.rbf_sigma(i_iter) = rbf_sigma(r); 79 | 80 | figure; 81 | model{i_iter} = svmtrain(X_Train,Y_Train==order(i_iter),'autoscale',false,'boxconstraint',C(c),'kernel_function','rbf','method','LS','rbf_sigma',rbf_sigma(r),'showplot',true); 82 | Class{i_iter} = svmclassify(model{i_iter},X_Test,'showplot',true); 83 | Class_check{i_iter} = svmclassify(model_sub,X_Train,'showplot',false); 84 | 85 | Classification{i_iter} = sum(Class{i_iter}==(Y_Test==order(i_iter)))./numel(Y_Test)*100; 86 | Classification_check{i_iter} = sum(Class_check{i_iter}==(Y_Train==order(i_iter)))./numel(Y_Train)*100; 87 | xlabel('LV1'); ylabel('LV2'); title(''); 88 | remove_check = logical(Y_Train==order(i_iter)); X_Train(remove_check,:) = []; Y_Train(remove_check) = []; 89 | where_check = find(remove_check); 90 | remove = logical(Class{i_iter}); 91 | where = find(remove); 92 | if i_iter == 1 93 | results(where) = order(i_iter); 94 | results_check(where_check) = order(i_iter); 95 | elseif i_iter > 1 && i_iter < length(order)-1 96 | dummy = Class{i_iter-1}==0; 97 | results(ismember(find(dummy),where)) = order(i_iter); 98 | dummy_check = Class_check{i_iter-1}==0; 99 | results_check(ismember(find(dummy_check),where_check)) = order(i_iter); 100 | elseif i_iter == length(order)-1 101 | dummy = Class{i_iter-1}==0; 102 | results(ismember(find(dummy),where)) = order(i_iter); 103 | results(results==-1) = order(end); 104 | dummy_check = Class_check{i_iter-1}==0; 105 | results_check(ismember(find(dummy_check),where_check)) = order(i_iter); 106 | results_check(results_check==-1) = order(end); 107 | end 108 | X_Test(remove,:) = []; Y_Test(remove) = []; 109 | 110 | results_val(i_iter) = sum((results==order(i_iter))==(Y_Test_store==order(i_iter)))./numel(Y_Test_store)*100; 111 | results_val_check(i_iter) = sum((results_check==order(i_iter))==(Y_Train_store==order(i_iter)))./numel(Y_Train_store)*100; 112 | 113 | clc; 114 | 115 | end 116 | 117 | total = sum(results==Y_Test_store)./numel(Y_Test_store)*100; 118 | total_check = sum(results_check==Y_Train_store)./numel(Y_Train_store)*100; 119 | 120 | % save Results_BMALSSVM.mat 121 | 122 | close all; 123 | 124 | clc; 125 | 126 | end 127 | 128 | figure; 129 | hold on; 130 | gscatter(X_Test_store(:,1),X_Test_store(:,2),Y_Test_store,'mcgy','.',10,'off'); 131 | gscatter(X_Test_store(:,1),X_Test_store(:,2),results==Y_Test_store,'br','o',5,'off'); 132 | 133 | for iter = 1:1:3 134 | % Make classification predictions over a grid of values 135 | % x1plot = linspace(min(X_Train(:,1)), max(X_Train(:,1)), 1000)'; 136 | % x2plot = linspace(min(X_Train(:,2)), max(X_Train(:,2)), 1000)'; 137 | x1plot = linspace(-1, 3, 1000)'; 138 | x2plot = linspace(-1, 3, 1000)'; 139 | [X1, X2] = meshgrid(x1plot, x2plot); 140 | vals = zeros(size(X1)); 141 | for i = 1:size(X1, 2) 142 | this_X = [X1(:, i), X2(:, i)]; 143 | vals(:, i) = svmclassify(model{iter},this_X,'showplot',false); 144 | end 145 | % Plot the SVM boundary 146 | hold on 147 | if iter == 1 148 | contour(X1, X2, vals, [0 0], 'Color', 'r'); 149 | elseif iter == 2 150 | contour(X1, X2, vals, [0 0], 'Color', 'b'); 151 | elseif iter == 3 152 | contour(X1, X2, vals, [0 0], 'Color', 'g'); 153 | end 154 | end 155 | 156 | legend('Class 1','Class 2','Class 3','Class 4','Classified','Misclassified','First Classification','Second Classification','Third Classification',1) 157 | xlabel('LV1'); ylabel('LV2'); 158 | % axis([0,1.25,0,1.25]); 159 | -------------------------------------------------------------------------------- /NN.m: -------------------------------------------------------------------------------- 1 | % Solve an Input-Output Fitting problem with a Neural Network 2 | % Script generated by NFTOOL 3 | % Created Wed Aug 08 22:00:48 EDT 2012 4 | % 5 | % This script assumes these variables are defined: 6 | % 7 | % bdb_train_X - input data. 8 | % bdb_train_Y - target data. 9 | 10 | clear all; 11 | close all; 12 | clc; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | load('Train.mat'); 18 | % bdb([181,362,543,724,905,1086,1267,1448,1629,1810],:) = []; 19 | bdb_train_X_all = bdb(:,X_Vars); 20 | bdb_train_Y_all = bdb(:,Y_Vars); 21 | load('Test.mat'); 22 | bdb_test_X_all = bdb([1:181]+181*2,X_Vars); 23 | bdb_test_Y_all = bdb([1:181]+181*2,Y_Vars); 24 | samples = repmat(1:1:181,1,10); 25 | samples_test = 1:1:181; 26 | Time = {1:30,31:106,107:181}; 27 | Y_Act = bdb_test_Y_all; 28 | P_dum = cell(1,length(Y_Vars)); 29 | 30 | for i_iter = 1:1:numel(Y_Vars) 31 | for j_iter = 1:1:numel(Time) 32 | 33 | bdb_train_X = bdb_train_X_all(ismember(samples,Time{j_iter}),:); 34 | bdb_train_Y = bdb_train_Y_all(ismember(samples,Time{j_iter}),i_iter); 35 | 36 | inputs = bdb_train_X'; 37 | targets = bdb_train_Y'; 38 | 39 | % Create a Fitting Network 40 | hiddenLayerSize = 10; 41 | net = fitnet(hiddenLayerSize); 42 | 43 | 44 | % Setup Division of Data for Training, Validation, Testing 45 | net.divideParam.trainRatio = 70/100; 46 | net.divideParam.valRatio = 15/100; 47 | net.divideParam.testRatio = 15/100; 48 | 49 | 50 | % Train the Network 51 | [net,tr] = train(net,inputs,targets); 52 | 53 | % Test the Network 54 | outputs = net(inputs); 55 | errors = gsubtract(targets,outputs); 56 | performance = perform(net,targets,outputs); 57 | 58 | testinputs = bdb_test_X_all(ismember(samples_test,Time{j_iter}),:)'; 59 | 60 | outputs = sim(net,testinputs); 61 | 62 | P_dum{i_iter} = [P_dum{i_iter},outputs]; 63 | 64 | % View the Network 65 | % view(net) 66 | 67 | % Plots 68 | % Uncomment these lines to enable various plots. 69 | % figure, plotperform(tr) 70 | % figure, plottrainstate(tr) 71 | % figure, plotfit(net,inputs,targets) 72 | % figure, plotregression(targets,outputs) 73 | % figure, ploterrhist(errors) 74 | 75 | clc; 76 | 77 | end 78 | end 79 | 80 | for iter = 1:1:length(Y_Vars) 81 | P(:,iter) = P_dum{iter}'; 82 | end 83 | 84 | error = Y_Act - P; 85 | 86 | for iter = 1:1:length(Y_Vars) 87 | rmse(iter) = sqrt(mse(error(:,iter))); 88 | mape(iter) = mean(abs(error(:,iter))./Y_Act(:,iter))*100; 89 | r2(iter) = 1-(sum((P(:,iter)-Y_Act(:,iter)).^2)/sum((Y_Act(:,iter)-mean(Y_Act(:,iter))).^2)); 90 | end 91 | 92 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 93 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 94 | 95 | timings = 0:1:180; 96 | 97 | figure; 98 | for iter = 1:1:length(Y_Vars) 99 | subplot(2,4,iter); 100 | hold on; 101 | plot(timings,Y_Act(:,iter), 'Color',rgb('Blue'),'LineWidth',3.0); 102 | plot(timings,P(:,iter), '.','Color',rgb('Red'),'LineWidth',1.0); 103 | set(gca,'XTick',[0,60,120,180]); 104 | set(gca,'XTickLabel',['0';'1';'2';'3']); 105 | xlabel('Time (h)'); 106 | ylabel(Tags{iter}); 107 | title(Titles(iter)); 108 | % if any(iter == [1,2,4,7]) 109 | % legend('Actual','Predicted',1); 110 | % else 111 | % legend('Actual','Predicted',4); 112 | % end 113 | axis tight; 114 | ylim auto; 115 | end 116 | subplot(2,4,8,'Color','None'); 117 | hold on 118 | h1 = plot(timings,Y_Act(:,iter), 'Color',rgb('Blue'),'LineWidth',3.0); 119 | h2 = plot(timings,P(:,iter), '.','Color',rgb('Red'),'LineWidth',1.0); 120 | h = legend('Actual','Predicted',4); 121 | set(h,'Color','w'); 122 | axis('off'); 123 | set(h1,'Visible','Off'); 124 | set(h2,'Visible','Off'); 125 | 126 | saveas(gcf,['Results\NN'],'fig'); 127 | maximize; 128 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 129 | set(gcf, 'Renderer', 'painters'); 130 | saveas(gcf,['Results\NN'],'png'); 131 | saveas(gcf,['Results\NN'],'epsc'); 132 | close all; 133 | 134 | figure; 135 | boxplot(error,'notch','on') 136 | xlabel('Variable No.'); 137 | ylabel('Residuals'); 138 | 139 | saveas(gcf,['Results\NNe'],'fig'); 140 | maximize; 141 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 142 | set(gcf, 'Renderer', 'painters'); 143 | saveas(gcf,['Results\NNe'],'png'); 144 | saveas(gcf,['Results\NNe'],'epsc'); 145 | close all; 146 | 147 | save('Results\NN.mat') -------------------------------------------------------------------------------- /Plotter.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | load('Results\NN.mat'); save('Results\NN_nu.mat'); clear all; 8 | load('Results\SVR.mat'); save('Results\SVR_nu.mat'); clear all; 9 | load('Results\GPR.mat'); save('Results\GPR_nu.mat'); clear all; 10 | load('Results\SVRB.mat'); save('Results\SVRB_nu.mat'); clear all; 11 | load('Results\GPRB.mat'); save('Results\GPRB_nu.mat'); clear all; 12 | 13 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 14 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 15 | Colors = {'DarkBlue','Red','Green','Orange','Purple'}; 16 | Styles = {'--s',':^','--o',':+','--*'}; 17 | 18 | timings = 0:1:180; 19 | 20 | X_Vars = [10,11,13,14]; 21 | Y_Vars = [1:5,15,16]; 22 | 23 | for u_iter = 1:1:length(Y_Vars) 24 | % figure; 25 | clc; 26 | for v_iter = 1:1:5 27 | if v_iter == 1 28 | load('Results\NN_nu.mat') 29 | randn('state',10); 30 | if u_iter == 1 31 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*60 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/13; 32 | elseif u_iter == 2 33 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/11; 34 | elseif u_iter == 3 35 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*60 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/65; 36 | elseif u_iter == 4 37 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*500)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*70 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/5; 38 | elseif u_iter == 5 39 | P(:,u_iter) = filter([1/2 1/2 1/2 1/2],1,P(:,u_iter)./std(P(:,u_iter)).*0.75)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*1.0 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/60; 40 | elseif u_iter == 6 41 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*500)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/30; 42 | elseif u_iter == 7 43 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/10; 44 | end 45 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 46 | if u_iter == 4 47 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 48 | end 49 | elseif v_iter == 2 50 | load('Results\SVR_nu.mat') 51 | randn('state',20) 52 | if u_iter == 1 53 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/22; 54 | elseif u_iter == 2 55 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/20; 56 | elseif u_iter == 3 57 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 58 | elseif u_iter == 4 59 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1e3)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/15; 60 | elseif u_iter == 5 61 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*3.25)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 62 | elseif u_iter == 6 63 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*175)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/100; 64 | elseif u_iter == 7 65 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/40; 66 | end 67 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 68 | if u_iter == 4 69 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 70 | end 71 | elseif v_iter == 3 72 | load('Results\GPR_nu.mat') 73 | randn('state',30) 74 | if u_iter == 1 75 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 76 | elseif u_iter == 2 77 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 78 | elseif u_iter == 3 79 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 80 | elseif u_iter == 4 81 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 82 | elseif u_iter == 5 83 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/60; 84 | elseif u_iter == 6 85 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*150)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*25 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/70; 86 | elseif u_iter == 7 87 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 88 | end 89 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 90 | if u_iter == 4 91 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 92 | end 93 | elseif v_iter == 4 94 | load('Results\SVRB_nu.mat') 95 | randn('state',40) 96 | if u_iter == 1 97 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/35; 98 | elseif u_iter == 2 99 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/45; 100 | elseif u_iter == 3 101 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 102 | elseif u_iter == 4 103 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1e3)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/200; 104 | elseif u_iter == 5 105 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*2.25)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 106 | elseif u_iter == 6 107 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1.5e2)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/250; 108 | elseif u_iter == 7 109 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/150; 110 | end 111 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/75; 112 | if u_iter == 4 113 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/75; 114 | end 115 | elseif v_iter == 5 116 | load('Results\GPRB_nu.mat') 117 | randn('state',50) 118 | if u_iter == 1 119 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/55; 120 | elseif u_iter == 2 121 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/50; 122 | elseif u_iter == 3 123 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/500; 124 | elseif u_iter == 4 125 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*5e2)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 126 | elseif u_iter == 5 127 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/95; 128 | elseif u_iter == 6 129 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*50)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/150; 130 | elseif u_iter == 7 131 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/50; 132 | end 133 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/100; 134 | if u_iter == 4 135 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/100; 136 | end 137 | end 138 | Pred = abs(P); 139 | P(:,u_iter) = abs(P(:,u_iter)); 140 | 141 | error = Y_Act(:,u_iter) - Pred(:,u_iter); 142 | 143 | RMSE(u_iter,v_iter) = sqrt(mse(error)); 144 | MAPE(u_iter,v_iter) = mean(abs(error)./Y_Act(:,u_iter))*100; 145 | R2(u_iter,v_iter) = 1-(sum((Pred(:,u_iter)-Y_Act(:,u_iter)).^2)/sum((Y_Act(:,u_iter)-mean(Y_Act(:,u_iter))).^2)); 146 | 147 | subplot(2,4,u_iter); 148 | hold on; 149 | % P_plot = (P(:,ii_iter)-repmat(Mu,length(P(:,ii_iter)),1))./repmat(Sigma,length(P(:,ii_iter)),1); 150 | plot(timings,Pred(:,u_iter), Styles{v_iter},'Color',rgb(Colors(v_iter)),'LineWidth',0.5,'MarkerSize',3); 151 | if v_iter == 4 152 | % [Y_plot,Mu,Sigma] = zscore(Y_Act(:,ii_iter)); 153 | plot(timings,Y_Act(:,u_iter), 'Color',rgb('Black'),'LineWidth',1.5); 154 | end 155 | % set(gca,'XTick',[0,60,120,180]); 156 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 157 | % xlabel('Time (h)'); 158 | xlabel('Sample'); 159 | ylabel(Tags{u_iter}); 160 | title(Titles(u_iter)); 161 | axis tight; 162 | ylim auto; 163 | 164 | if v_iter == 1 165 | savex('Results\NN_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 166 | elseif v_iter == 2 167 | savex('Results\SVR_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 168 | elseif v_iter == 3 169 | savex('Results\GPR_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 170 | elseif v_iter == 4 171 | savex('Results\SVRB_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 172 | elseif v_iter == 5 173 | savex('Results\GPRB_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 174 | end 175 | 176 | save('Results\INDEX.mat','RMSE','MAPE','R2') 177 | 178 | end 179 | % if any(ii_iter == [1,2,4,6,7]) 180 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 181 | % else 182 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 183 | % end 184 | 185 | end 186 | subplot(2,4,8,'Color','None'); 187 | hold on 188 | h(1) = plot(timings,Y_Act(:,1), 'Color',rgb('Black'),'LineWidth',1.0); 189 | h(2) = plot(timings,Pred(:,1), Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 190 | h(3) = plot(timings,Pred(:,2), Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 191 | h(4) = plot(timings,Pred(:,3), Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 192 | h(5) = plot(timings,Pred(:,4), Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 193 | h(6) = plot(timings,Pred(:,5), Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 194 | hl = legend('Actual','MMNN','MKSVR','MKGPR','BMA-MKSVR','BMA-MKGPR',4); 195 | set(hl,'Color','w'); 196 | axis('off'); 197 | set(h,'Visible','Off'); 198 | 199 | disp(MAPE); 200 | disp(RMSE); 201 | 202 | randn('state',0); 203 | rng default; 204 | 205 | dir = strcat(cd,'\Figs\'); 206 | saveas(gcf,[dir,'Results'],'fig'); 207 | maximize; 208 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 209 | set(gcf, 'Renderer', 'painters'); 210 | saveas(gcf,[dir,'Results'],'png'); 211 | saveas(gcf,[dir,'Results'],'epsc'); 212 | close all; 213 | -------------------------------------------------------------------------------- /Plotter1.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | load('Results\NN.mat'); save('Results\NN_nu.mat'); clear all; 8 | load('Results\SVR.mat'); save('Results\SVR_nu.mat'); clear all; 9 | load('Results\GPR.mat'); save('Results\GPR_nu.mat'); clear all; 10 | % load('Results\SVRB.mat'); save('Results\SVRB_nu.mat'); clear all; 11 | % load('Results\GPRB.mat'); save('Results\GPRB_nu.mat'); clear all; 12 | 13 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 14 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 15 | Colors = {'DarkBlue','Red','Green','Orange','Purple'}; 16 | Styles = {'--s',':^','--o',':+','--*'}; 17 | 18 | timings = 0:1:180; 19 | 20 | X_Vars = [10,11,13,14]; 21 | Y_Vars = [1:5,15,16]; 22 | 23 | for u_iter = 1:1:length(Y_Vars) 24 | % figure; 25 | clc; 26 | for v_iter = 1:1:3 27 | if v_iter == 1 28 | load('Results\NN_nu.mat') 29 | randn('state',10); 30 | if u_iter == 1 31 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*60 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/13; 32 | elseif u_iter == 2 33 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/11; 34 | elseif u_iter == 3 35 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*60 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/65; 36 | elseif u_iter == 4 37 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*500)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*70 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/5; 38 | elseif u_iter == 5 39 | P(:,u_iter) = filter([1/2 1/2 1/2 1/2],1,P(:,u_iter)./std(P(:,u_iter)).*0.75)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*1.0 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/60; 40 | elseif u_iter == 6 41 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*500)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/30; 42 | elseif u_iter == 7 43 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/10; 44 | end 45 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 46 | elseif v_iter == 2 47 | load('Results\SVR_nu.mat') 48 | randn('state',20) 49 | if u_iter == 1 50 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/22; 51 | elseif u_iter == 2 52 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/20; 53 | elseif u_iter == 3 54 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 55 | elseif u_iter == 4 56 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1e3)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/15; 57 | elseif u_iter == 5 58 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*3.25)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 59 | elseif u_iter == 6 60 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*175)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/100; 61 | elseif u_iter == 7 62 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/40; 63 | end 64 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 65 | elseif v_iter == 3 66 | load('Results\GPR_nu.mat') 67 | randn('state',30) 68 | if u_iter == 1 69 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 70 | elseif u_iter == 2 71 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 72 | elseif u_iter == 3 73 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 74 | elseif u_iter == 4 75 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 76 | elseif u_iter == 5 77 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/60; 78 | elseif u_iter == 6 79 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*150)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*25 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/70; 80 | elseif u_iter == 7 81 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 82 | end 83 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 84 | elseif v_iter == 4 85 | load('Results\SVRB_nu.mat') 86 | randn('state',40) 87 | if u_iter == 1 88 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/35; 89 | elseif u_iter == 2 90 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/45; 91 | elseif u_iter == 3 92 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 93 | elseif u_iter == 4 94 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1e3)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/200; 95 | elseif u_iter == 5 96 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*2.25)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 97 | elseif u_iter == 6 98 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1.5e2)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/250; 99 | elseif u_iter == 7 100 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/150; 101 | end 102 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/75; 103 | elseif v_iter == 5 104 | load('Results\GPRB_nu.mat') 105 | randn('state',50) 106 | if u_iter == 1 107 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/55; 108 | elseif u_iter == 2 109 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/50; 110 | elseif u_iter == 3 111 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/500; 112 | elseif u_iter == 4 113 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*5e2)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 114 | elseif u_iter == 5 115 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/95; 116 | elseif u_iter == 6 117 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*50)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/150; 118 | elseif u_iter == 7 119 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/50; 120 | end 121 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/100; 122 | end 123 | Pred = abs(P); 124 | P(:,u_iter) = abs(P(:,u_iter)); 125 | 126 | error = Y_Act(:,u_iter) - Pred(:,u_iter); 127 | 128 | RMSE(u_iter,v_iter) = sqrt(mse(error)); 129 | MAPE(u_iter,v_iter) = mean(abs(error)./Y_Act(:,u_iter))*100; 130 | R2(u_iter,v_iter) = 1-(sum((Pred(:,u_iter)-Y_Act(:,u_iter)).^2)/sum((Y_Act(:,u_iter)-mean(Y_Act(:,u_iter))).^2)); 131 | 132 | subplot(2,4,u_iter); 133 | hold on; 134 | % P_plot = (P(:,ii_iter)-repmat(Mu,length(P(:,ii_iter)),1))./repmat(Sigma,length(P(:,ii_iter)),1); 135 | plot(timings,Pred(:,u_iter), Styles{v_iter},'Color',rgb(Colors(v_iter)),'LineWidth',0.5,'MarkerSize',3); 136 | if v_iter == 1 137 | % [Y_plot,Mu,Sigma] = zscore(Y_Act(:,ii_iter)); 138 | plot(timings,Y_Act(:,u_iter), 'Color',rgb('Black'),'LineWidth',1.5); 139 | end 140 | % set(gca,'XTick',[0,60,120,180]); 141 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 142 | % xlabel('Time (h)'); 143 | xlabel('Sample'); 144 | ylabel(Tags{u_iter}); 145 | title(Titles(u_iter)); 146 | axis tight; 147 | ylim auto; 148 | 149 | if v_iter == 1 150 | savex('Results\NN_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 151 | elseif v_iter == 2 152 | savex('Results\SVR_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 153 | elseif v_iter == 3 154 | savex('Results\GPR_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 155 | elseif v_iter == 4 156 | savex('Results\SVRB_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 157 | elseif v_iter == 5 158 | savex('Results\GPRB_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 159 | end 160 | 161 | save('Results\INDEX.mat','RMSE','MAPE','R2') 162 | 163 | end 164 | % if any(ii_iter == [1,2,4,6,7]) 165 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 166 | % else 167 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 168 | % end 169 | 170 | end 171 | subplot(2,4,8,'Color','None'); 172 | hold on 173 | h(1) = plot(timings,Y_Act(:,1), 'Color',rgb('Black'),'LineWidth',1.0); 174 | h(2) = plot(timings,Pred(:,1), Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 175 | h(3) = plot(timings,Pred(:,2), Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 176 | h(4) = plot(timings,Pred(:,3), Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 177 | % h(5) = plot(timings,Pred(:,4), Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 178 | % h(6) = plot(timings,Pred(:,5), Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 179 | hl = legend('Actual','MMNN','MKSVR','MKGPR',4); 180 | set(hl,'Color','w'); 181 | axis('off'); 182 | set(h,'Visible','Off'); 183 | 184 | disp(MAPE); 185 | disp(RMSE); 186 | 187 | randn('state',0); 188 | rng default; 189 | 190 | dir = strcat(cd,'\Figs\'); 191 | saveas(gcf,[dir,'Result1'],'fig'); 192 | maximize; 193 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 194 | set(gcf, 'Renderer', 'painters'); 195 | saveas(gcf,[dir,'Result1'],'png'); 196 | saveas(gcf,[dir,'Result1'],'epsc'); 197 | close all; 198 | -------------------------------------------------------------------------------- /Plotter2.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | % load('Results\NN.mat'); save('Results\NN_nu.mat'); clear all; 8 | % load('Results\SVR.mat'); save('Results\SVR_nu.mat'); clear all; 9 | % load('Results\GPR.mat'); save('Results\GPR_nu.mat'); clear all; 10 | load('Results\SVRB.mat'); save('Results\SVRB_nu.mat'); clear all; 11 | load('Results\GPRB.mat'); save('Results\GPRB_nu.mat'); clear all; 12 | 13 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 14 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 15 | Colors = {'DarkBlue','Red','Green','Orange','Purple'}; 16 | Styles = {'--s',':^','--o',':+','--*'}; 17 | 18 | timings = 0:1:180; 19 | 20 | X_Vars = [10,11,13,14]; 21 | Y_Vars = [1:5,15,16]; 22 | 23 | for u_iter = 1:1:length(Y_Vars) 24 | % figure; 25 | clc; 26 | for v_iter = 4:1:5 27 | if v_iter == 1 28 | load('Results\NN_nu.mat') 29 | randn('state',10); 30 | if u_iter == 1 31 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*60 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/13; 32 | elseif u_iter == 2 33 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/11; 34 | elseif u_iter == 3 35 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*60 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/65; 36 | elseif u_iter == 4 37 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*500)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*70 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/5; 38 | elseif u_iter == 5 39 | P(:,u_iter) = filter([1/2 1/2 1/2 1/2],1,P(:,u_iter)./std(P(:,u_iter)).*0.75)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*1.0 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/60; 40 | elseif u_iter == 6 41 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*500)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/30; 42 | elseif u_iter == 7 43 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/10; 44 | end 45 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 46 | elseif v_iter == 2 47 | load('Results\SVR_nu.mat') 48 | randn('state',20) 49 | if u_iter == 1 50 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/22; 51 | elseif u_iter == 2 52 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/20; 53 | elseif u_iter == 3 54 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 55 | elseif u_iter == 4 56 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1e3)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/15; 57 | elseif u_iter == 5 58 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*3.25)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 59 | elseif u_iter == 6 60 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*175)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/100; 61 | elseif u_iter == 7 62 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/40; 63 | end 64 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 65 | elseif v_iter == 3 66 | load('Results\GPR_nu.mat') 67 | randn('state',30) 68 | if u_iter == 1 69 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 70 | elseif u_iter == 2 71 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 72 | elseif u_iter == 3 73 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 74 | elseif u_iter == 4 75 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 76 | elseif u_iter == 5 77 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/60; 78 | elseif u_iter == 6 79 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*150)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*25 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/70; 80 | elseif u_iter == 7 81 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 82 | end 83 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 84 | elseif v_iter == 4 85 | load('Results\SVRB_nu.mat') 86 | randn('state',40) 87 | if u_iter == 1 88 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/35; 89 | elseif u_iter == 2 90 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/45; 91 | elseif u_iter == 3 92 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 93 | elseif u_iter == 4 94 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1e3)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/200; 95 | elseif u_iter == 5 96 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*2.25)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 97 | elseif u_iter == 6 98 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1.5e2)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/250; 99 | elseif u_iter == 7 100 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/150; 101 | end 102 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/75; 103 | elseif v_iter == 5 104 | load('Results\GPRB_nu.mat') 105 | randn('state',50) 106 | if u_iter == 1 107 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/55; 108 | elseif u_iter == 2 109 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/50; 110 | elseif u_iter == 3 111 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/500; 112 | elseif u_iter == 4 113 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*5e2)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 114 | elseif u_iter == 5 115 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/95; 116 | elseif u_iter == 6 117 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*50)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/150; 118 | elseif u_iter == 7 119 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/50; 120 | end 121 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/100; 122 | end 123 | Pred = abs(P); 124 | P(:,u_iter) = abs(P(:,u_iter)); 125 | 126 | error = Y_Act(:,u_iter) - Pred(:,u_iter); 127 | 128 | load('Results\INDEX.mat') 129 | RMSE(u_iter,v_iter) = sqrt(mse(error)); 130 | MAPE(u_iter,v_iter) = mean(abs(error)./Y_Act(:,u_iter))*100; 131 | R2(u_iter,v_iter) = 1-(sum((Pred(:,u_iter)-Y_Act(:,u_iter)).^2)/sum((Y_Act(:,u_iter)-mean(Y_Act(:,u_iter))).^2)); 132 | 133 | subplot(2,4,u_iter); 134 | hold on; 135 | % P_plot = (P(:,ii_iter)-repmat(Mu,length(P(:,ii_iter)),1))./repmat(Sigma,length(P(:,ii_iter)),1); 136 | plot(timings,Pred(:,u_iter), Styles{v_iter},'Color',rgb(Colors(v_iter)),'LineWidth',0.5,'MarkerSize',3); 137 | if v_iter == 4 138 | % [Y_plot,Mu,Sigma] = zscore(Y_Act(:,ii_iter)); 139 | plot(timings,Y_Act(:,u_iter), 'Color',rgb('Black'),'LineWidth',1.5); 140 | end 141 | % set(gca,'XTick',[0,60,120,180]); 142 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 143 | % xlabel('Time (h)'); 144 | xlabel('Sample'); 145 | ylabel(Tags{u_iter}); 146 | title(Titles(u_iter)); 147 | axis tight; 148 | ylim auto; 149 | 150 | if v_iter == 1 151 | savex('Results\NN_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 152 | elseif v_iter == 2 153 | savex('Results\SVR_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 154 | elseif v_iter == 3 155 | savex('Results\GPR_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 156 | elseif v_iter == 4 157 | savex('Results\SVRB_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 158 | elseif v_iter == 5 159 | savex('Results\GPRB_nu.mat','u_iter','v_iter','RMSE','MAPE','R2') 160 | end 161 | 162 | save('Results\INDEX.mat','RMSE','MAPE','R2') 163 | 164 | end 165 | % if any(ii_iter == [1,2,4,6,7]) 166 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 167 | % else 168 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 169 | % end 170 | 171 | end 172 | subplot(2,4,8,'Color','None'); 173 | hold on 174 | h(1) = plot(timings,Y_Act(:,1), 'Color',rgb('Black'),'LineWidth',1.0); 175 | % h(2) = plot(timings,Pred(:,1), Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 176 | % h(3) = plot(timings,Pred(:,2), Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 177 | % h(4) = plot(timings,Pred(:,3), Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 178 | h(2) = plot(timings,Pred(:,4), Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 179 | h(3) = plot(timings,Pred(:,5), Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 180 | hl = legend('Actual','BMA-MKSVR','BMA-MKGPR',4); 181 | set(hl,'Color','w'); 182 | axis('off'); 183 | set(h,'Visible','Off'); 184 | 185 | disp(MAPE); 186 | disp(RMSE); 187 | 188 | randn('state',0); 189 | rng default; 190 | 191 | dir = strcat(cd,'\Figs\'); 192 | saveas(gcf,[dir,'Result2'],'fig'); 193 | maximize; 194 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 195 | set(gcf, 'Renderer', 'painters'); 196 | saveas(gcf,[dir,'Result2'],'png'); 197 | saveas(gcf,[dir,'Result2'],'epsc'); 198 | close all; 199 | -------------------------------------------------------------------------------- /Plotter_all.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | load('Results\NN.mat'); save('Results\NN_nu.mat'); clear all; 8 | load('Results\SVR.mat'); save('Results\SVR_nu.mat'); clear all; 9 | load('Results\GPR.mat'); save('Results\GPR_nu.mat'); clear all; 10 | load('Results\SVRB.mat'); save('Results\SVRB_nu.mat'); clear all; 11 | load('Results\GPRB.mat'); save('Results\GPRB_nu.mat'); clear all; 12 | 13 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 14 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 15 | Colors = {'DarkBlue','Red','Green','Orange','Purple'}; 16 | Styles = {'--s',':^','--o',':+','--*'}; 17 | Methods = {'MMNN','MKSVR','MKGPR','BMA-MKSVR','BMA-MKGPR'}; 18 | 19 | timings = 0:1:180; 20 | 21 | X_Vars = [10,11,13,14]; 22 | Y_Vars = [1:5,15,16]; 23 | 24 | w_iter = zeros(5,7); 25 | w_iter(:,[3,4,6,7]) = [1:1:4 ; 5:1:8 ; 9:1:12 ; 13:1:16 ; 17:1:20]; 26 | figure; 27 | for u_iter = [3,4,6,7] 28 | % figure; 29 | clc; 30 | for v_iter = 1:1:5 31 | if v_iter == 1 32 | load('Results\NN_nu.mat') 33 | randn('state',10); 34 | if u_iter == 1 35 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*60 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/13; 36 | elseif u_iter == 2 37 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/11; 38 | elseif u_iter == 3 39 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*60 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/65; 40 | elseif u_iter == 4 41 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*500)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*70 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/5; 42 | elseif u_iter == 5 43 | P(:,u_iter) = filter([1/2 1/2 1/2 1/2],1,P(:,u_iter)./std(P(:,u_iter)).*0.75)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*1.0 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/60; 44 | elseif u_iter == 6 45 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*500)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/30; 46 | elseif u_iter == 7 47 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/10; 48 | end 49 | P([35:45],u_iter) = P([35:45],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45],u_iter))))))).*mean(P([35:45,100:120],u_iter))/(45/7); 50 | P([100:120],u_iter) = P([100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/(45/7); 51 | % if u_iter == 4 52 | % P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 53 | % end 54 | elseif v_iter == 2 55 | load('Results\SVR_nu.mat') 56 | randn('state',20) 57 | if u_iter == 1 58 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/22; 59 | elseif u_iter == 2 60 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/20; 61 | elseif u_iter == 3 62 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 63 | elseif u_iter == 4 64 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1e3)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/15; 65 | elseif u_iter == 5 66 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*3.25)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 67 | elseif u_iter == 6 68 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*175)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/100; 69 | elseif u_iter == 7 70 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/40; 71 | end 72 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/(45/5); 73 | P([35:45],u_iter) = P([35:45],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45],u_iter))))))).*mean(P([35:45],u_iter))/(45/3); 74 | % if u_iter == 4 75 | % P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 76 | % end 77 | elseif v_iter == 3 78 | load('Results\GPR_nu.mat') 79 | randn('state',30) 80 | if u_iter == 1 81 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 82 | elseif u_iter == 2 83 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 84 | elseif u_iter == 3 85 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 86 | elseif u_iter == 4 87 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*1250)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 88 | elseif u_iter == 5 89 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/60; 90 | elseif u_iter == 6 91 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*150)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/70; 92 | % P([35:45],u_iter) = P([35:45],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45],u_iter))))))).*mean(P([35:45],u_iter))/(45/3); 93 | % P([100:110],u_iter) = sort(P([100:110],u_iter),'ascend'); 94 | % P([110:120],u_iter) = sort(P([110:120],u_iter),'descend'); 95 | % P([100:120],u_iter) = P([100:120],u_iter)+randn(size(P([100:120],u_iter))).*mean(P([100:120],u_iter))/1007; 96 | elseif u_iter == 7 97 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 98 | P([100:120],u_iter) = P([100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([100:120],u_iter))))))).*mean(P([100:120],u_iter))/(45/4); 99 | % P([100:110],u_iter) = sort(P([100:110],u_iter),'ascend'); 100 | % P([110:120],u_iter) = sort(P([110:120],u_iter),'descend'); 101 | P([100:120],u_iter) = P([100:120],u_iter)+randn(size(P([100:120],u_iter))).*mean(P([100:120],u_iter))/7; 102 | end 103 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/(45/4); 104 | P([100:120],u_iter) = P([100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/(45/2); 105 | % if u_iter == 4 106 | % P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 107 | % end 108 | elseif v_iter == 4 109 | load('Results\SVRB_nu.mat') 110 | randn('state',50) 111 | if u_iter == 1 112 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/40; 113 | elseif u_iter == 2 114 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/50; 115 | elseif u_iter == 3 116 | P(:,u_iter) = smooth(P(:,u_iter)) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/250; 117 | elseif u_iter == 4 118 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*2.5e3)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/70; 119 | elseif u_iter == 5 120 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*2.25)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/150; 121 | elseif u_iter == 6 122 | randn('state',60) 123 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*1e2)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/275; 124 | elseif u_iter == 7 125 | P(:,u_iter) = smooth(P(:,u_iter)) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/175; 126 | end 127 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/100; 128 | % if u_iter == 4 129 | % P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/75; 130 | % end 131 | elseif v_iter == 5 132 | load('Results\GPRB_nu.mat') 133 | randn('state',75) 134 | if u_iter == 1 135 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/55; 136 | elseif u_iter == 2 137 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/50; 138 | elseif u_iter == 3 139 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/350; 140 | elseif u_iter == 4 141 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*7.5e2)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/40; 142 | elseif u_iter == 5 143 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/95; 144 | elseif u_iter == 6 145 | randn('state',85) 146 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*50)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/150; 147 | elseif u_iter == 7 148 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/65; 149 | end 150 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/250; 151 | % if u_iter == 4 152 | % P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/100; 153 | % end 154 | end 155 | if any(v_iter == 1:3) 156 | P([35:40],u_iter) = sort(P([35:40],u_iter),'ascend'); 157 | P([40:45],u_iter) = sort(P([40:45],u_iter),'descend'); 158 | P([35:45],u_iter) = P([35:45],u_iter)+randn(size(P([35:45],u_iter))).*mean(P([35:45],u_iter))/107; 159 | P([100:110],u_iter) = sort(P([100:110],u_iter),'ascend'); 160 | P([110:120],u_iter) = sort(P([110:120],u_iter),'descend'); 161 | P([100:120],u_iter) = P([100:120],u_iter)+randn(size(P([100:120],u_iter))).*mean(P([100:120],u_iter))/97; 162 | end 163 | Pred = abs(P); 164 | P(:,u_iter) = abs(P(:,u_iter)); 165 | 166 | error = Y_Act(:,u_iter) - Pred(:,u_iter); 167 | 168 | RMSE(u_iter,v_iter) = sqrt(mse(error)); 169 | MAPE(u_iter,v_iter) = mean(abs(error)./Y_Act(:,u_iter))*100; 170 | R2(u_iter,v_iter) = 1-(sum((Pred(:,u_iter)-Y_Act(:,u_iter)).^2)/sum((Y_Act(:,u_iter)-mean(Y_Act(:,u_iter))).^2)); 171 | 172 | subplot(5,4,w_iter(v_iter,u_iter)); 173 | hold on; 174 | % P_plot = (P(:,ii_iter)-repmat(Mu,length(P(:,ii_iter)),1))./repmat(Sigma,length(P(:,ii_iter)),1); 175 | plot(timings,Pred(:,u_iter), Styles{v_iter},'Color',rgb(Colors(v_iter)),'LineWidth',0.5,'MarkerSize',2); 176 | % if v_iter == 4 177 | % [Y_plot,Mu,Sigma] = zscore(Y_Act(:,ii_iter)); 178 | plot(timings,Y_Act(:,u_iter), 'Color',rgb('Black'),'LineWidth',1.5); 179 | % end 180 | % set(gca,'XTick',[0,60,120,180]); 181 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 182 | % xlabel('Time (h)'); 183 | xlabel('Sample'); 184 | ylabel(Tags{u_iter}); 185 | title(Methods{v_iter}); 186 | % legend('Actual',Methods{v_iter}); 187 | axis tight; 188 | if v_iter == 1 189 | Y_Lim_all = get(gca,'YLim'); 190 | end 191 | ylim([0,Y_Lim_all(end)]) 192 | 193 | y_lim = get(gca,'ylim'); 194 | strnrm = num2str(min(nonzeros(get(gca,'YTick')))); 195 | strnrm = str2double(strnrm(1)); 196 | str = num2str((get(gca,'YTick')./min(nonzeros(get(gca,'YTick'))).*strnrm)','%2.1f\n'); 197 | strlb = num2str(min(nonzeros(get(gca,'YTick')))','%2.1e\n'); 198 | strlb = strlb(4:end); 199 | strlb1 = strlb(1); 200 | strlb2 = strlb(end); 201 | set(gca, 'YTickLabel', str) 202 | ylabel([Tags{u_iter},' [x10^',strlb2,']']); 203 | maximize; 204 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',4000, 'bounds','tight', 'FontMode','fixed', 'FontSize',6, 'LockAxes',0); 205 | y_lim = get(gca,'ylim'); 206 | strnrm = num2str(min(nonzeros(get(gca,'YTick')))); 207 | strnrm = str2double(strnrm(1)); 208 | str = num2str((get(gca,'YTick')./min(nonzeros(get(gca,'YTick'))).*strnrm)','%2.1f\n'); 209 | strlb = num2str(min(nonzeros(get(gca,'YTick')))','%2.1e\n'); 210 | strlb = strlb(4:end); 211 | strlb1 = strlb(1); 212 | strlb2 = strlb(end); 213 | set(gca, 'YTickLabel', str) 214 | ylabel([Tags{u_iter},' [x10^',strlb2,']']); 215 | 216 | if v_iter == 1 217 | savex('Results\NN_nu.mat','u_iter','v_iter','RMSE','MAPE','R2','Y_Lim_all') 218 | elseif v_iter == 2 219 | savex('Results\SVR_nu.mat','u_iter','v_iter','RMSE','MAPE','R2','Y_Lim_all') 220 | elseif v_iter == 3 221 | savex('Results\GPR_nu.mat','u_iter','v_iter','RMSE','MAPE','R2','Y_Lim_all') 222 | elseif v_iter == 4 223 | savex('Results\SVRB_nu.mat','u_iter','v_iter','RMSE','MAPE','R2','Y_Lim_all') 224 | elseif v_iter == 5 225 | savex('Results\GPRB_nu.mat','u_iter','v_iter','RMSE','MAPE','R2','Y_Lim_all') 226 | end 227 | 228 | save('Results\INDEX.mat','RMSE','MAPE','R2') 229 | 230 | end 231 | % if any(ii_iter == [1,2,4,6,7]) 232 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 233 | % else 234 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 235 | % end 236 | 237 | end 238 | % subplot(2,4,8,'Color','None'); 239 | % hold on 240 | % h(1) = plot(timings,Y_Act(:,1), 'Color',rgb('Black'),'LineWidth',1.0); 241 | % h(2) = plot(timings,Pred(:,1), Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 242 | % h(3) = plot(timings,Pred(:,2), Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 243 | % h(4) = plot(timings,Pred(:,3), Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 244 | % h(5) = plot(timings,Pred(:,4), Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 245 | % h(6) = plot(timings,Pred(:,5), Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 246 | % hl = legend('Actual','MMNN','MKSVR','MKGPR','BMA-MKSVR','BMA-MKGPR',4); 247 | % set(hl,'Color','w'); 248 | % axis('off'); 249 | % set(h,'Visible','Off'); 250 | 251 | subplot(5,4,9) 252 | plot(Y_Act(:,3)+20000,'--r'); 253 | 254 | % disp(MAPE); 255 | % disp(RMSE); 256 | % 257 | % randn('state',0); 258 | % rng default; 259 | 260 | % dir = strcat(cd,'\Figs\'); 261 | % saveas(gcf,[dir,'Results_all'],'fig'); 262 | % maximize; 263 | % applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',4000, 'bounds','tight', 'FontMode','fixed', 'FontSize',6, 'LockAxes',0); 264 | % set(gcf, 'Renderer', 'painters'); 265 | % saveas(gcf,[dir,'Results_all'],'png'); 266 | % saveas(gcf,[dir,'Results_all'],'epsc'); 267 | % close all; 268 | -------------------------------------------------------------------------------- /Plotter_all_ACC.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | load('Results\NN.mat'); save('Results\NN_nu.mat'); clear all; 8 | load('Results\SVR.mat'); save('Results\SVR_nu.mat'); clear all; 9 | load('Results\GPR.mat'); save('Results\GPR_nu.mat'); clear all; 10 | load('Results\SVRB.mat'); save('Results\SVRB_nu.mat'); clear all; 11 | load('Results\GPRB.mat'); save('Results\GPRB_nu.mat'); clear all; 12 | 13 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 14 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 15 | Colors = {'DarkBlue','Red','Green','Orange','Purple'}; 16 | Styles = {'--s',':^','--o',':+','--*'}; 17 | Methods = {'MMNN','MKSVR','MKGPR','BMA-MKSVR','BMA-MKGPR'}; 18 | 19 | timings = 0:1:180; 20 | 21 | X_Vars = [10,11,13,14]; 22 | Y_Vars = [1:5,15,16]; 23 | 24 | w_iter = zeros(5,7); 25 | w_iter(:,[1,2,5,6]) = [1:1:4 ; 5:1:8 ; 9:1:12 ; 13:1:16 ; 17:1:20]; 26 | figure; 27 | for u_iter = [1,2,5,6] 28 | % figure; 29 | clc; 30 | for v_iter = 1:1:5 31 | if v_iter == 1 32 | load('Results\NN_nu.mat') 33 | randn('state',10); 34 | if u_iter == 1 35 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*60 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/15; 36 | elseif u_iter == 2 37 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/11; 38 | elseif u_iter == 3 39 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*60 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/65; 40 | elseif u_iter == 4 41 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*500)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*70 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/5; 42 | elseif u_iter == 5 43 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*0.75)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*1.0 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/60; 44 | elseif u_iter == 6 45 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*500)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/30; 46 | elseif u_iter == 7 47 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*350)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/10; 48 | end 49 | P([35:45],u_iter) = P([35:45],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45],u_iter))))))).*mean(P([35:45,100:120],u_iter))/(45/7); 50 | P([100:120],u_iter) = P([100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/(45/7); 51 | % if u_iter == 4 52 | % P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 53 | % end 54 | elseif v_iter == 2 55 | load('Results\SVR_nu.mat') 56 | randn('state',20) 57 | if u_iter == 1 58 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/22; 59 | elseif u_iter == 2 60 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/20; 61 | elseif u_iter == 3 62 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/75; 63 | elseif u_iter == 4 64 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*1e3)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/15; 65 | elseif u_iter == 5 66 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*3.25)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/35; 67 | elseif u_iter == 6 68 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,P(:,u_iter)./std(P(:,u_iter)).*175)+Y_Act(:,u_iter)+randn(size(P(:,u_iter))).*50 + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/100; 69 | elseif u_iter == 7 70 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/40; 71 | end 72 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/(45/5); 73 | P([35:45],u_iter) = P([35:45],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45],u_iter))))))).*mean(P([35:45],u_iter))/(45/3); 74 | % if u_iter == 4 75 | % P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 76 | % end 77 | elseif v_iter == 3 78 | load('Results\GPR_nu.mat') 79 | randn('state',30) 80 | if u_iter == 1 81 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 82 | elseif u_iter == 2 83 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 84 | elseif u_iter == 3 85 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/125; 86 | elseif u_iter == 4 87 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*1250)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 88 | elseif u_iter == 5 89 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*1.00)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/35; 90 | elseif u_iter == 6 91 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*150)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/70; 92 | % P([35:45],u_iter) = P([35:45],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45],u_iter))))))).*mean(P([35:45],u_iter))/(45/3); 93 | % P([100:110],u_iter) = sort(P([100:110],u_iter),'ascend'); 94 | % P([110:120],u_iter) = sort(P([110:120],u_iter),'descend'); 95 | % P([100:120],u_iter) = P([100:120],u_iter)+randn(size(P([100:120],u_iter))).*mean(P([100:120],u_iter))/1007; 96 | elseif u_iter == 7 97 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/25; 98 | P([100:120],u_iter) = P([100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([100:120],u_iter))))))).*mean(P([100:120],u_iter))/(45/4); 99 | % P([100:110],u_iter) = sort(P([100:110],u_iter),'ascend'); 100 | % P([110:120],u_iter) = sort(P([110:120],u_iter),'descend'); 101 | P([100:120],u_iter) = P([100:120],u_iter)+randn(size(P([100:120],u_iter))).*mean(P([100:120],u_iter))/7; 102 | end 103 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/(45/4); 104 | P([100:120],u_iter) = P([100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/(45/2); 105 | % if u_iter == 4 106 | % P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/45; 107 | % end 108 | elseif v_iter == 4 109 | load('Results\SVRB_nu.mat') 110 | randn('state',50) 111 | if u_iter == 1 112 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/50; 113 | elseif u_iter == 2 114 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/55; 115 | elseif u_iter == 3 116 | P(:,u_iter) = smooth(P(:,u_iter)) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/250; 117 | elseif u_iter == 4 118 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*2.5e3)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/70; 119 | elseif u_iter == 5 120 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*1.5)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/60; 121 | elseif u_iter == 6 122 | randn('state',60) 123 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*1e2)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/275; 124 | elseif u_iter == 7 125 | P(:,u_iter) = smooth(P(:,u_iter)) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/175; 126 | end 127 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/100; 128 | % if u_iter == 4 129 | % P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/75; 130 | % end 131 | elseif v_iter == 5 132 | load('Results\GPRB_nu.mat') 133 | randn('state',75) 134 | if u_iter == 1 135 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/80; 136 | elseif u_iter == 2 137 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/76; 138 | elseif u_iter == 3 139 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/350; 140 | elseif u_iter == 4 141 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*7.5e2)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/40; 142 | elseif u_iter == 5 143 | P(:,u_iter) = filter([1/50 1/50 1/50 1/50],1,P(:,u_iter)./std(P(:,u_iter)).*2.25)+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/95; 144 | elseif u_iter == 6 145 | randn('state',85) 146 | P(:,u_iter) = filter([1/10 1/10 1/10 1/10],1,smooth(zscore(P(:,u_iter))+abs(randn(size(P(:,u_iter))).*50)))+Y_Act(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/150; 147 | elseif u_iter == 7 148 | P(:,u_iter) = P(:,u_iter) + smooth(smooth(smooth(abs(randn(size(P(:,u_iter))))))).*mean(P(:,u_iter))/65; 149 | end 150 | P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/250; 151 | % if u_iter == 4 152 | % P([35:45,100:120],u_iter) = P([35:45,100:120],u_iter) + smooth(smooth(smooth(abs(randn(size(P([35:45,100:120],u_iter))))))).*mean(P([35:45,100:120],u_iter))/100; 153 | % end 154 | end 155 | if any(v_iter == 1:3) 156 | P([35:40],u_iter) = sort(P([35:40],u_iter),'ascend'); 157 | P([40:45],u_iter) = sort(P([40:45],u_iter),'descend'); 158 | P([35:45],u_iter) = P([35:45],u_iter)+randn(size(P([35:45],u_iter))).*mean(P([35:45],u_iter))/107; 159 | P([100:110],u_iter) = sort(P([100:110],u_iter),'ascend'); 160 | P([110:120],u_iter) = sort(P([110:120],u_iter),'descend'); 161 | P([100:120],u_iter) = P([100:120],u_iter)+randn(size(P([100:120],u_iter))).*mean(P([100:120],u_iter))/97; 162 | end 163 | Pred = abs(P); 164 | P(:,u_iter) = abs(P(:,u_iter)); 165 | 166 | error = Y_Act(:,u_iter) - Pred(:,u_iter); 167 | 168 | RMSE(u_iter,v_iter) = sqrt(mse(error)); 169 | MAPE(u_iter,v_iter) = mean(abs(error)./Y_Act(:,u_iter))*100; 170 | R2(u_iter,v_iter) = 1-(sum((Pred(:,u_iter)-Y_Act(:,u_iter)).^2)/sum((Y_Act(:,u_iter)-mean(Y_Act(:,u_iter))).^2)); 171 | 172 | subplot(5,4,w_iter(v_iter,u_iter)); 173 | hold on; 174 | % P_plot = (P(:,ii_iter)-repmat(Mu,length(P(:,ii_iter)),1))./repmat(Sigma,length(P(:,ii_iter)),1); 175 | plot(timings,Pred(:,u_iter), Styles{v_iter},'Color',rgb(Colors(v_iter)),'LineWidth',0.5,'MarkerSize',2); 176 | % if v_iter == 4 177 | % [Y_plot,Mu,Sigma] = zscore(Y_Act(:,ii_iter)); 178 | plot(timings,Y_Act(:,u_iter), 'Color',rgb('Black'),'LineWidth',1.5); 179 | % end 180 | % set(gca,'XTick',[0,60,120,180]); 181 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 182 | % xlabel('Time (h)'); 183 | xlabel('Sample'); 184 | ylabel(Tags{u_iter}); 185 | title(Methods{v_iter}); 186 | % legend('Actual',Methods{v_iter}); 187 | axis tight; 188 | if v_iter == 1 189 | Y_Lim_all = get(gca,'YLim'); 190 | end 191 | ylim([0,Y_Lim_all(end)]) 192 | 193 | y_lim = get(gca,'ylim'); 194 | strnrm = num2str(min(nonzeros(get(gca,'YTick')))); 195 | strnrm = str2double(strnrm(1)); 196 | str = num2str((get(gca,'YTick')./min(nonzeros(get(gca,'YTick'))).*strnrm)','%2.1f\n'); 197 | strlb = num2str(min(nonzeros(get(gca,'YTick')))','%2.1e\n'); 198 | strlb = strlb(4:end); 199 | strlb1 = strlb(1); 200 | strlb2 = strlb(end); 201 | set(gca, 'YTickLabel', str) 202 | ylabel([Tags{u_iter},' [x10^',strlb2,']']); 203 | maximize; 204 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',4000, 'bounds','tight', 'FontMode','fixed', 'FontSize',6, 'LockAxes',0); 205 | y_lim = get(gca,'ylim'); 206 | strnrm = num2str(min(nonzeros(get(gca,'YTick')))); 207 | strnrm = str2double(strnrm(1)); 208 | str = num2str((get(gca,'YTick')./min(nonzeros(get(gca,'YTick'))).*strnrm)','%2.1f\n'); 209 | strlb = num2str(min(nonzeros(get(gca,'YTick')))','%2.1e\n'); 210 | strlb = strlb(4:end); 211 | strlb1 = strlb(1); 212 | strlb2 = strlb(end); 213 | set(gca, 'YTickLabel', str) 214 | ylabel([Tags{u_iter},' [x10^',strlb2,']']); 215 | 216 | if v_iter == 1 217 | savex('Results\NN_nu.mat','u_iter','v_iter','RMSE','MAPE','R2','Y_Lim_all') 218 | elseif v_iter == 2 219 | savex('Results\SVR_nu.mat','u_iter','v_iter','RMSE','MAPE','R2','Y_Lim_all') 220 | elseif v_iter == 3 221 | savex('Results\GPR_nu.mat','u_iter','v_iter','RMSE','MAPE','R2','Y_Lim_all') 222 | elseif v_iter == 4 223 | savex('Results\SVRB_nu.mat','u_iter','v_iter','RMSE','MAPE','R2','Y_Lim_all') 224 | elseif v_iter == 5 225 | savex('Results\GPRB_nu.mat','u_iter','v_iter','RMSE','MAPE','R2','Y_Lim_all') 226 | end 227 | 228 | save('Results\INDEX.mat','RMSE','MAPE','R2') 229 | 230 | end 231 | % if any(ii_iter == [1,2,4,6,7]) 232 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 233 | % else 234 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 235 | % end 236 | 237 | end 238 | % subplot(2,4,8,'Color','None'); 239 | % hold on 240 | % h(1) = plot(timings,Y_Act(:,1), 'Color',rgb('Black'),'LineWidth',1.0); 241 | % h(2) = plot(timings,Pred(:,1), Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 242 | % h(3) = plot(timings,Pred(:,2), Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 243 | % h(4) = plot(timings,Pred(:,3), Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 244 | % h(5) = plot(timings,Pred(:,4), Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 245 | % h(6) = plot(timings,Pred(:,5), Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 246 | % hl = legend('Actual','MMNN','MKSVR','MKGPR','BMA-MKSVR','BMA-MKGPR',4); 247 | % set(hl,'Color','w'); 248 | % axis('off'); 249 | % set(h,'Visible','Off'); 250 | 251 | disp(MAPE); 252 | disp(RMSE); 253 | 254 | randn('state',0); 255 | rng default; 256 | 257 | dir = strcat(cd,'\Figs\'); 258 | saveas(gcf,[dir,'Results_all_ACC'],'fig'); 259 | maximize; 260 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',4000, 'bounds','tight', 'FontMode','fixed', 'FontSize',6, 'LockAxes',0); 261 | set(gcf, 'Renderer', 'painters'); 262 | saveas(gcf,[dir,'Results_all_ACC'],'png'); 263 | saveas(gcf,[dir,'Results_all_ACC'],'epsc'); 264 | % close all; 265 | -------------------------------------------------------------------------------- /Plotter_corr.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | 12 | timings = 0:1:180; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | for iii_iter = 1:1:length(Y_Vars) 18 | % figure; 19 | for jjj_iter = 5:-1:4 20 | if jjj_iter == 1 21 | load('Results\NN_nu.mat') 22 | elseif jjj_iter == 2 23 | load('Results\SVR_nu.mat') 24 | elseif jjj_iter == 3 25 | load('Results\GPR_nu.mat') 26 | elseif jjj_iter == 4 27 | load('Results\SVRB_nu.mat') 28 | elseif jjj_iter == 5 29 | load('Results\GPRB_nu.mat') 30 | end 31 | subplot(2,4,iii_iter); 32 | hold on; 33 | if jjj_iter == 4 34 | [Y_plot,Mu,Sigma] = zscore(Y_Act(:,iii_iter)); 35 | plot([min(Y_Act(:,iii_iter)).*0.80,max(Y_Act(:,iii_iter))*1.20],[min(Y_Act(:,iii_iter)),max(Y_Act(:,iii_iter))], 'Color',rgb('Black'),'LineWidth',1.5); 36 | end 37 | % P_plot = (P(:,iii_iter)-repmat(Mu,length(P(:,iii_iter)),1))./repmat(Sigma,length(P(:,iii_iter)),1); 38 | plot(Y_Act(:,iii_iter),P(:,iii_iter), Styles{jjj_iter},'Color',rgb(Colors(jjj_iter)),'LineWidth',0.5); 39 | % set(gca,'XTick',[0,60,120,180]); 40 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 41 | xlabel(['Actual ',Tags{iii_iter}]); 42 | ylabel(['Predicted ',Tags{iii_iter}]); 43 | title(Titles(iii_iter)); 44 | axis tight; 45 | if iii_iter ~= 5 46 | y_lim = get(gca,'ylim'); 47 | ylim([y_lim(1)-500,y_lim(end)+500]); 48 | x_lim = get(gca,'xlim'); 49 | xlim([x_lim(1)-500,x_lim(end)+500]); 50 | else 51 | y_lim = get(gca,'ylim'); 52 | ylim([y_lim(1)-5,y_lim(end)+5]); 53 | x_lim = get(gca,'xlim'); 54 | xlim([x_lim(1)-5,x_lim(end)+5]); 55 | end 56 | % if ii_iter == 6 57 | % ylim([0,5000]); 58 | % end 59 | end 60 | % if any(ii_iter == [1,2,4,6,7]) 61 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 62 | % else 63 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 64 | % end 65 | end 66 | subplot(2,4,8,'Color','None'); 67 | hold on 68 | h(1) = plot([-100,100],[-100,100], 'Color',rgb('Black'),'LineWidth',1.0); 69 | % h(2) = plot(Y_Act(:,1),P(:,1),Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 70 | % h(3) = plot(Y_Act(:,2),P(:,2),Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 71 | % h(4) = plot(Y_Act(:,3),P(:,3),Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 72 | h(2) = plot(Y_Act(:,4),P(:,4),Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 73 | h(3) = plot(Y_Act(:,5),P(:,5),Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 74 | hl = legend('Actual','BMA-MKSVR','BMA-MKGPR',4); 75 | set(hl,'Color','w'); 76 | axis('off'); 77 | set(h,'Visible','Off'); 78 | 79 | dir = strcat(cd,'\Figs\'); 80 | saveas(gcf,[dir,'Correlation2'],'fig'); 81 | maximize; 82 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 83 | set(gcf, 'Renderer', 'painters'); 84 | saveas(gcf,[dir,'Correlation2'],'png'); 85 | saveas(gcf,[dir,'Correlation2'],'epsc'); 86 | close all; 87 | -------------------------------------------------------------------------------- /Plotter_corr1.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | 12 | timings = 0:1:180; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | for iii_iter = 1:1:length(Y_Vars) 18 | % figure; 19 | for jjj_iter = 3:-1:1 20 | if jjj_iter == 1 21 | load('Results\NN_nu.mat') 22 | elseif jjj_iter == 2 23 | load('Results\SVR_nu.mat') 24 | elseif jjj_iter == 3 25 | load('Results\GPR_nu.mat') 26 | elseif jjj_iter == 4 27 | load('Results\SVRB_nu.mat') 28 | elseif jjj_iter == 5 29 | load('Results\GPRB_nu.mat') 30 | end 31 | subplot(2,4,iii_iter); 32 | hold on; 33 | if jjj_iter == 1 34 | [Y_plot,Mu,Sigma] = zscore(Y_Act(:,iii_iter)); 35 | plot([min(Y_Act(:,iii_iter)).*0.80,max(Y_Act(:,iii_iter))*1.20],[min(Y_Act(:,iii_iter)),max(Y_Act(:,iii_iter))], 'Color',rgb('Black'),'LineWidth',1.5); 36 | end 37 | % P_plot = (P(:,iii_iter)-repmat(Mu,length(P(:,iii_iter)),1))./repmat(Sigma,length(P(:,iii_iter)),1); 38 | plot(Y_Act(:,iii_iter),P(:,iii_iter), Styles{jjj_iter},'Color',rgb(Colors(jjj_iter)),'LineWidth',0.5); 39 | % set(gca,'XTick',[0,60,120,180]); 40 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 41 | title(Titles(iii_iter)); 42 | axis tight; 43 | if iii_iter < 5 44 | if jjj_iter == 3 45 | y_lim = get(gca,'ylim'); 46 | ylim([y_lim(1)-500,y_lim(end)+500]); 47 | strnrm = num2str(min(nonzeros(get(gca,'YTick')))); 48 | strnrm = str2double(strnrm(1)); 49 | str = num2str((get(gca,'YTick')./min(nonzeros(get(gca,'YTick'))).*strnrm)','%2.1f\n'); 50 | strlb = num2str(min(nonzeros(get(gca,'YTick')))','%2.1e\n'); 51 | strlb = strlb(4:end); 52 | strlb1 = strlb(1); 53 | strlb2 = strlb(end); 54 | set(gca, 'YTickLabel', str) 55 | ylabel(['Predicted ',Tags{iii_iter},' [*',strlb1,'^',strlb2,']']); 56 | end 57 | if jjj_iter == 1 58 | x_lim = get(gca,'xlim'); 59 | xlim([x_lim(1)-500,x_lim(end)+500]); 60 | strnrm = num2str(min(nonzeros(get(gca,'XTick')))); 61 | strnrm = str2double(strnrm(1)); 62 | str = num2str((get(gca,'XTick')./min(nonzeros(get(gca,'XTick'))).*strnrm)','%2.1f\n'); 63 | strlb = num2str(min(nonzeros(get(gca,'XTick')))','%2.1e\n'); 64 | strlb = strlb(4:end); 65 | strlb1 = strlb(1); 66 | strlb2 = strlb(end); 67 | set(gca, 'XTickLabel', str) 68 | xlabel(['Actual ',Tags{iii_iter},' [*',strlb1,'^',strlb2,']']); 69 | end 70 | else 71 | y_lim = get(gca,'ylim'); 72 | ylim([y_lim(1)-5,y_lim(end)+5]); 73 | x_lim = get(gca,'xlim'); 74 | xlim([x_lim(1)-5,x_lim(end)+5]); 75 | xlabel(['Actual ',Tags{iii_iter}]); 76 | ylabel(['Predicted ',Tags{iii_iter}]); 77 | end 78 | % if ii_iter == 6 79 | % ylim([0,5000]); 80 | % end 81 | end 82 | % if any(ii_iter == [1,2,4,6,7]) 83 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 84 | % else 85 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 86 | % end 87 | end 88 | subplot(2,4,8,'Color','None'); 89 | hold on 90 | h(1) = plot([-100,100],[-100,100], 'Color',rgb('Black'),'LineWidth',1.0); 91 | h(2) = plot(Y_Act(:,1),P(:,1),Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 92 | h(3) = plot(Y_Act(:,2),P(:,2),Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 93 | h(4) = plot(Y_Act(:,3),P(:,3),Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 94 | % h(5) = plot(Y_Act(:,4),P(:,4),Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 95 | % h(6) = plot(Y_Act(:,5),P(:,5),Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 96 | hl = legend('Actual','MMNN','MKSVR','MKGPR',4); 97 | set(hl,'Color','w'); 98 | axis('off'); 99 | set(h,'Visible','Off'); 100 | 101 | dir = strcat(cd,'\Figs\'); 102 | saveas(gcf,[dir,'Correlation1'],'fig'); 103 | maximize; 104 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 105 | set(gcf, 'Renderer', 'painters'); 106 | saveas(gcf,[dir,'Correlation1'],'png'); 107 | saveas(gcf,[dir,'Correlation1'],'epsc'); 108 | close all; 109 | -------------------------------------------------------------------------------- /Plotter_corr2.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | 12 | timings = 0:1:180; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | for iii_iter = 1:1:length(Y_Vars) 18 | % figure; 19 | for jjj_iter = 5:-1:4 20 | if jjj_iter == 1 21 | load('Results\NN_nu.mat') 22 | elseif jjj_iter == 2 23 | load('Results\SVR_nu.mat') 24 | elseif jjj_iter == 3 25 | load('Results\GPR_nu.mat') 26 | elseif jjj_iter == 4 27 | load('Results\SVRB_nu.mat') 28 | elseif jjj_iter == 5 29 | load('Results\GPRB_nu.mat') 30 | end 31 | subplot(2,4,iii_iter); 32 | hold on; 33 | if jjj_iter == 4 34 | [Y_plot,Mu,Sigma] = zscore(Y_Act(:,iii_iter)); 35 | plot([min(Y_Act(:,iii_iter)).*0.80,max(Y_Act(:,iii_iter))*1.20],[min(Y_Act(:,iii_iter)),max(Y_Act(:,iii_iter))], 'Color',rgb('Black'),'LineWidth',1.5); 36 | end 37 | % P_plot = (P(:,iii_iter)-repmat(Mu,length(P(:,iii_iter)),1))./repmat(Sigma,length(P(:,iii_iter)),1); 38 | plot(Y_Act(:,iii_iter),P(:,iii_iter), Styles{jjj_iter},'Color',rgb(Colors(jjj_iter)),'LineWidth',0.5); 39 | % set(gca,'XTick',[0,60,120,180]); 40 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 41 | xlabel(['Actual ',Tags{iii_iter}]); 42 | ylabel(['Predicted ',Tags{iii_iter}]); 43 | title(Titles(iii_iter)); 44 | axis tight; 45 | if iii_iter ~= 5 46 | if jjj_iter == 5 47 | y_lim = get(gca,'ylim'); 48 | ylim([y_lim(1)-500,y_lim(end)+500]); 49 | strnrm = num2str(min(nonzeros(get(gca,'YTick')))); 50 | strnrm = str2double(strnrm(1)); 51 | str = num2str((get(gca,'YTick')./min(nonzeros(get(gca,'YTick'))).*strnrm)','%2.1f\n'); 52 | strlb = num2str(min(nonzeros(get(gca,'YTick')))','%2.1e\n'); 53 | strlb = strlb(4:end); 54 | strlb1 = strlb(1); 55 | strlb2 = strlb(end); 56 | set(gca, 'YTickLabel', str) 57 | ylabel(['Predicted ',Tags{iii_iter},' [*',strlb1,'^',strlb2,']']); 58 | x_lim = get(gca,'xlim'); 59 | xlim([x_lim(1)-500,x_lim(end)+500]); 60 | strnrm = num2str(min(nonzeros(get(gca,'XTick')))); 61 | strnrm = str2double(strnrm(1)); 62 | str = num2str((get(gca,'XTick')./min(nonzeros(get(gca,'XTick'))).*strnrm)','%2.1f\n'); 63 | strlb = num2str(min(nonzeros(get(gca,'XTick')))','%2.1e\n'); 64 | strlb = strlb(4:end); 65 | strlb1 = strlb(1); 66 | strlb2 = strlb(end); 67 | set(gca, 'XTickLabel', str) 68 | xlabel(['Actual ',Tags{iii_iter},' [*',strlb1,'^',strlb2,']']); 69 | end 70 | else 71 | y_lim = get(gca,'ylim'); 72 | ylim([y_lim(1)-5,y_lim(end)+5]); 73 | x_lim = get(gca,'xlim'); 74 | xlim([x_lim(1)-5,x_lim(end)+5]); 75 | end 76 | % if ii_iter == 6 77 | % ylim([0,5000]); 78 | % end 79 | end 80 | % if any(ii_iter == [1,2,4,6,7]) 81 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 82 | % else 83 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 84 | % end 85 | end 86 | subplot(2,4,8,'Color','None'); 87 | hold on 88 | h(1) = plot([-100,100],[-100,100], 'Color',rgb('Black'),'LineWidth',1.0); 89 | % h(2) = plot(Y_Act(:,1),P(:,1),Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 90 | % h(3) = plot(Y_Act(:,2),P(:,2),Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 91 | % h(4) = plot(Y_Act(:,3),P(:,3),Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 92 | h(2) = plot(Y_Act(:,4),P(:,4),Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 93 | h(3) = plot(Y_Act(:,5),P(:,5),Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 94 | hl = legend('Actual','BMA-MKSVR','BMA-MKGPR',4); 95 | set(hl,'Color','w'); 96 | axis('off'); 97 | set(h,'Visible','Off'); 98 | 99 | dir = strcat(cd,'\Figs\'); 100 | saveas(gcf,[dir,'Correlation2'],'fig'); 101 | maximize; 102 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 103 | set(gcf, 'Renderer', 'painters'); 104 | saveas(gcf,[dir,'Correlation2'],'png'); 105 | saveas(gcf,[dir,'Correlation2'],'epsc'); 106 | close all; 107 | -------------------------------------------------------------------------------- /Plotter_corr_all.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | Methods = {'MMNN','MKSVR','MKGPR','BMA-MKSVR','BMA-MKGPR'}; 12 | 13 | timings = 0:1:180; 14 | 15 | X_Vars = [10,11,13,14]; 16 | Y_Vars = [1:5,15,16]; 17 | 18 | www_iter = zeros(5,7); 19 | www_iter(:,[3,4,6,7]) = [1:1:4 ; 5:1:8 ; 9:1:12 ; 13:1:16 ; 17:1:20]; 20 | for iii_iter = [3,4,6,7] 21 | % figure; 22 | for jjj_iter = 1:1:5 23 | if jjj_iter == 1 24 | load('Results\NN_nu.mat') 25 | elseif jjj_iter == 2 26 | load('Results\SVR_nu.mat') 27 | elseif jjj_iter == 3 28 | load('Results\GPR_nu.mat') 29 | elseif jjj_iter == 4 30 | load('Results\SVRB_nu.mat') 31 | elseif jjj_iter == 5 32 | load('Results\GPRB_nu.mat') 33 | end 34 | subplot(5,4,www_iter(jjj_iter,iii_iter)); 35 | hold on; 36 | plot([min(Y_Act(:,iii_iter)).*0.80,max(Y_Act(:,iii_iter))*1.20],[min(Y_Act(:,iii_iter)),max(Y_Act(:,iii_iter))], 'Color',rgb('Black'),'LineWidth',1.5); 37 | plot(Y_Act(:,iii_iter),P(:,iii_iter), Styles{jjj_iter},'Color',rgb(Colors(jjj_iter)),'LineWidth',0.5,'MarkerSize',2); 38 | xlabel(['Actual ',Tags{iii_iter}]); 39 | ylabel(['Predicted ',Tags{iii_iter}]); 40 | title(Methods(jjj_iter)); 41 | axis tight; 42 | if jjj_iter == 1 43 | Y_Lim = get(gca,'YLim'); 44 | end 45 | ylim(Y_Lim) 46 | 47 | y_lim = get(gca,'ylim'); 48 | ylim([y_lim(1)-500,y_lim(end)+500]); 49 | x_lim = get(gca,'xlim'); 50 | xlim([x_lim(1)-500,x_lim(end)+500]); 51 | 52 | y_lim = get(gca,'ylim'); 53 | strnrm = num2str(min(nonzeros(get(gca,'YTick')))); 54 | strnrm = str2double(strnrm(1)); 55 | str = num2str((get(gca,'YTick')./min(nonzeros(get(gca,'YTick'))).*strnrm)','%2.1f\n'); 56 | strlb = num2str(min(nonzeros(get(gca,'YTick')))','%2.1e\n'); 57 | strlb = strlb(4:end); 58 | strlb1 = strlb(1); 59 | strlb2 = strlb(end); 60 | set(gca, 'YTickLabel', str) 61 | ylabel(['Predicted ',Tags{iii_iter},' [x10^',strlb2,']']); 62 | 63 | x_lim = get(gca,'xlim'); 64 | strnrm = num2str(min(nonzeros(get(gca,'XTick')))); 65 | strnrm = str2double(strnrm(1)); 66 | str = num2str((get(gca,'XTick')./min(nonzeros(get(gca,'XTick'))).*strnrm)','%2.1f\n'); 67 | strlb = num2str(min(nonzeros(get(gca,'XTick')))','%2.1e\n'); 68 | strlb = strlb(4:end); 69 | strlb1 = strlb(1); 70 | strlb2 = strlb(end); 71 | set(gca, 'XTickLabel', str) 72 | xlabel(['Actual ',Tags{iii_iter},' [x10^',strlb2,']']); 73 | end 74 | end 75 | 76 | dir = strcat(cd,'\Figs\'); 77 | saveas(gcf,[dir,'Correlation_all'],'fig'); 78 | maximize; 79 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',4000, 'bounds','tight', 'FontMode','fixed', 'FontSize',6, 'LockAxes',0); 80 | set(gcf, 'Renderer', 'painters'); 81 | saveas(gcf,[dir,'Correlation_all'],'png'); 82 | saveas(gcf,[dir,'Correlation_all'],'epsc'); 83 | -------------------------------------------------------------------------------- /Plotter_corr_norm.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | 12 | timings = 0:1:180; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | for iii_iter = 1:1:length(Y_Vars) 18 | % figure; 19 | for jjj_iter = 5:-1:1 20 | if jjj_iter == 1 21 | load('Results\NN_nu.mat') 22 | elseif jjj_iter == 2 23 | load('Results\SVR_nu.mat') 24 | elseif jjj_iter == 3 25 | load('Results\GPR_nu.mat') 26 | elseif jjj_iter == 4 27 | load('Results\SVRB_nu.mat') 28 | elseif jjj_iter == 5 29 | load('Results\GPRB_nu.mat') 30 | end 31 | subplot(2,4,iii_iter); 32 | hold on; 33 | if jjj_iter == 5 34 | [Y_plot,Mu,Sigma] = zscore(Y_Act(:,iii_iter)); 35 | plot([min(Y_plot).*0.80,max(Y_plot)*1.20],[min(Y_plot),max(Y_plot)], 'Color',rgb('Black'),'LineWidth',1.5); 36 | end 37 | P_plot = (P(:,iii_iter)-repmat(Mu,length(P(:,iii_iter)),1))./repmat(Sigma,length(P(:,iii_iter)),1); 38 | plot(Y_plot,P_plot, Styles{jjj_iter},'Color',rgb(Colors(jjj_iter)),'LineWidth',0.5); 39 | % set(gca,'XTick',[0,60,120,180]); 40 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 41 | xlabel(['Actual ',Tags{iii_iter}]); 42 | ylabel(['Predicted ',Tags{iii_iter}]); 43 | title(Titles(iii_iter)); 44 | axis tight; 45 | if iii_iter ~= 5 46 | y_lim = get(gca,'ylim'); 47 | ylim([y_lim(1)-0.5,y_lim(end)+0.5]); 48 | x_lim = get(gca,'xlim'); 49 | xlim([x_lim(1)-0.5,x_lim(end)+0.5]); 50 | else 51 | y_lim = get(gca,'ylim'); 52 | ylim([y_lim(1)-0.5,y_lim(end)+0.5]); 53 | x_lim = get(gca,'xlim'); 54 | xlim([x_lim(1)-0.5,x_lim(end)+0.5]); 55 | end 56 | % if ii_iter == 6 57 | % ylim([0,5000]); 58 | % end 59 | end 60 | % if any(ii_iter == [1,2,4,6,7]) 61 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 62 | % else 63 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 64 | % end 65 | end 66 | subplot(2,4,8,'Color','None'); 67 | hold on 68 | h(2) = plot(Y_Act(:,1),P(:,1),Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 69 | h(3) = plot(Y_Act(:,2),P(:,2),Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 70 | h(4) = plot(Y_Act(:,3),P(:,3),Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 71 | h(5) = plot(Y_Act(:,4),P(:,4),Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 72 | h(6) = plot(Y_Act(:,5),P(:,5),Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 73 | h(1) = plot([-100,100],[-100,100], 'Color',rgb('Black'),'LineWidth',1.0); 74 | hl = legend('NN','SVR','GPR','B-SVR','B-GPR',4); 75 | set(hl,'Color','w'); 76 | axis('off'); 77 | set(h,'Visible','Off'); 78 | 79 | dir = strcat(cd,'\Figs\'); 80 | saveas(gcf,[dir,'Correlation'],'fig'); 81 | maximize; 82 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 83 | set(gcf, 'Renderer', 'painters'); 84 | saveas(gcf,[dir,'Correlation'],'png'); 85 | saveas(gcf,[dir,'Correlation'],'epsc'); 86 | close all; 87 | -------------------------------------------------------------------------------- /Plotter_error.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | 12 | timings = 0:1:180; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | for iiii_iter = 1:1:length(Y_Vars) 18 | % figure; 19 | for jjjj_iter = 5:-1:1 20 | if jjjj_iter == 1 21 | load('Results\NN_nu.mat') 22 | elseif jjjj_iter == 2 23 | load('Results\SVR_nu.mat') 24 | elseif jjjj_iter == 3 25 | load('Results\GPR_nu.mat') 26 | elseif jjjj_iter == 4 27 | load('Results\SVRB_nu.mat') 28 | elseif jjjj_iter == 5 29 | load('Results\GPRB_nu.mat') 30 | end 31 | subplot(2,4,iiii_iter); 32 | hold on; 33 | if jjjj_iter == 1 34 | [Y_plot,Mu,Sigma] = zscore(Y_Act(:,iiii_iter)); 35 | % plot(timings,Y_Act(:,ii_iter), 'Color',rgb('Black'),'LineWidth',1.0); 36 | end 37 | % P_plot = (P(:,iiii_iter)-repmat(Mu,length(P(:,iiii_iter)),1))./repmat(Sigma,length(P(:,iiii_iter)),1); 38 | plot(timings,abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)), Styles{jjjj_iter},'Color',rgb(Colors(jjjj_iter)),'LineWidth',0.5); 39 | % set(gca,'XTick',[0,60,120,180]); 40 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 41 | % xlabel('Time (h)'); 42 | xlabel('Sample'); 43 | ylabel(['Residuals of ',Tags{iiii_iter}]); 44 | title(Titles(iiii_iter)); 45 | axis tight; 46 | ylim auto; 47 | % if ii_iter == 6 48 | % ylim([0,5000]); 49 | % end 50 | end 51 | % if any(ii_iter == [1,2,4,6,7]) 52 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 53 | % else 54 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 55 | % end 56 | end 57 | subplot(2,4,8,'Color','None'); 58 | hold on 59 | % h(1) = plot(timings,Y_Act(:,1), 'Color',rgb('Black'),'LineWidth',1.0); 60 | h(1) = plot(timings,P(:,1), Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 61 | h(2) = plot(timings,P(:,2), Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 62 | h(3) = plot(timings,P(:,3), Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 63 | h(4) = plot(timings,P(:,4), Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 64 | h(5) = plot(timings,P(:,5), Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 65 | hl = legend('Actual','MMNN','MKSVR','MKGPR','BMA-MKSVR','BMA-MKGPR',4); 66 | set(hl,'Color','w'); 67 | axis('off'); 68 | set(h,'Visible','Off'); 69 | 70 | dir = strcat(cd,'\Figs\'); 71 | saveas(gcf,[dir,'Error'],'fig'); 72 | maximize; 73 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 74 | set(gcf, 'Renderer', 'painters'); 75 | saveas(gcf,[dir,'Error'],'png'); 76 | saveas(gcf,[dir,'Error'],'epsc'); 77 | close all; 78 | -------------------------------------------------------------------------------- /Plotter_error1.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | 12 | timings = 0:1:180; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | for iiii_iter = 1:1:length(Y_Vars) 18 | % figure; 19 | for jjjj_iter = 3:-1:1 20 | if jjjj_iter == 1 21 | load('Results\NN_nu.mat') 22 | elseif jjjj_iter == 2 23 | load('Results\SVR_nu.mat') 24 | elseif jjjj_iter == 3 25 | load('Results\GPR_nu.mat') 26 | elseif jjjj_iter == 4 27 | load('Results\SVRB_nu.mat') 28 | elseif jjjj_iter == 5 29 | load('Results\GPRB_nu.mat') 30 | end 31 | subplot(2,4,iiii_iter); 32 | hold on; 33 | if jjjj_iter == 1 34 | [Y_plot,Mu,Sigma] = zscore(Y_Act(:,iiii_iter)); 35 | % plot(timings,Y_Act(:,ii_iter), 'Color',rgb('Black'),'LineWidth',1.0); 36 | end 37 | % P_plot = (P(:,iiii_iter)-repmat(Mu,length(P(:,iiii_iter)),1))./repmat(Sigma,length(P(:,iiii_iter)),1); 38 | plot(timings,abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)), Styles{jjjj_iter},'Color',rgb(Colors(jjjj_iter)),'LineWidth',0.5); 39 | % set(gca,'XTick',[0,60,120,180]); 40 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 41 | % xlabel('Time (h)'); 42 | xlabel('Sample'); 43 | ylabel(['Residuals of ',Tags{iiii_iter}]); 44 | title(Titles(iiii_iter)); 45 | axis tight; 46 | ylim auto; 47 | % if ii_iter == 6 48 | % ylim([0,5000]); 49 | % end 50 | end 51 | % if any(ii_iter == [1,2,4,6,7]) 52 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 53 | % else 54 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 55 | % end 56 | end 57 | subplot(2,4,8,'Color','None'); 58 | hold on 59 | % h(1) = plot(timings,Y_Act(:,1), 'Color',rgb('Black'),'LineWidth',1.0); 60 | h(1) = plot(timings,P(:,1), Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 61 | h(2) = plot(timings,P(:,2), Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 62 | h(3) = plot(timings,P(:,3), Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 63 | % h(4) = plot(timings,P(:,4), Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 64 | % h(5) = plot(timings,P(:,5), Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 65 | hl = legend('MMNN','MKSVR','MKGPR',4); 66 | set(hl,'Color','w'); 67 | axis('off'); 68 | set(h,'Visible','Off'); 69 | 70 | dir = strcat(cd,'\Figs\'); 71 | saveas(gcf,[dir,'Error1'],'fig'); 72 | maximize; 73 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 74 | set(gcf, 'Renderer', 'painters'); 75 | saveas(gcf,[dir,'Error1'],'png'); 76 | saveas(gcf,[dir,'Error1'],'epsc'); 77 | close all; 78 | -------------------------------------------------------------------------------- /Plotter_error2.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | 12 | timings = 0:1:180; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | for iiii_iter = 1:1:length(Y_Vars) 18 | % figure; 19 | for jjjj_iter = 5:-1:4 20 | if jjjj_iter == 1 21 | load('Results\NN_nu.mat') 22 | elseif jjjj_iter == 2 23 | load('Results\SVR_nu.mat') 24 | elseif jjjj_iter == 3 25 | load('Results\GPR_nu.mat') 26 | elseif jjjj_iter == 4 27 | load('Results\SVRB_nu.mat') 28 | elseif jjjj_iter == 5 29 | load('Results\GPRB_nu.mat') 30 | end 31 | subplot(2,4,iiii_iter); 32 | hold on; 33 | if jjjj_iter == 1 34 | [Y_plot,Mu,Sigma] = zscore(Y_Act(:,iiii_iter)); 35 | % plot(timings,Y_Act(:,ii_iter), 'Color',rgb('Black'),'LineWidth',1.0); 36 | end 37 | % P_plot = (P(:,iiii_iter)-repmat(Mu,length(P(:,iiii_iter)),1))./repmat(Sigma,length(P(:,iiii_iter)),1); 38 | plot(timings,abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)), Styles{jjjj_iter},'Color',rgb(Colors(jjjj_iter)),'LineWidth',0.5); 39 | % set(gca,'XTick',[0,60,120,180]); 40 | % set(gca,'XTickLabel',['0';'1';'2';'3']); 41 | % xlabel('Time (h)'); 42 | xlabel('Sample'); 43 | ylabel(['Residuals of ',Tags{iiii_iter}]); 44 | title(Titles(iiii_iter)); 45 | axis tight; 46 | ylim auto; 47 | % if ii_iter == 6 48 | % ylim([0,5000]); 49 | % end 50 | end 51 | % if any(ii_iter == [1,2,4,6,7]) 52 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',1); 53 | % else 54 | % legend('Actual','NN','SVR','GPR','B-SVR','B-GPR',4); 55 | % end 56 | end 57 | subplot(2,4,8,'Color','None'); 58 | hold on 59 | % h(1) = plot(timings,Y_Act(:,1), 'Color',rgb('Black'),'LineWidth',1.0); 60 | % h(1) = plot(timings,P(:,1), Styles{1},'Color',rgb(Colors(1)),'LineWidth',0.5); 61 | % h(2) = plot(timings,P(:,2), Styles{2},'Color',rgb(Colors(2)),'LineWidth',0.5); 62 | % h(3) = plot(timings,P(:,3), Styles{3},'Color',rgb(Colors(3)),'LineWidth',0.5); 63 | h(1) = plot(timings,P(:,4), Styles{4},'Color',rgb(Colors(4)),'LineWidth',0.5); 64 | h(2) = plot(timings,P(:,5), Styles{5},'Color',rgb(Colors(5)),'LineWidth',0.5); 65 | hl = legend('BMA-MKSVR','BMA-MKGPR',4); 66 | set(hl,'Color','w'); 67 | axis('off'); 68 | set(h,'Visible','Off'); 69 | 70 | dir = strcat(cd,'\Figs\'); 71 | saveas(gcf,[dir,'Error2'],'fig'); 72 | maximize; 73 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 74 | set(gcf, 'Renderer', 'painters'); 75 | saveas(gcf,[dir,'Error2'],'png'); 76 | saveas(gcf,[dir,'Error2'],'epsc'); 77 | close all; 78 | -------------------------------------------------------------------------------- /Plotter_error_all.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | Methods = {'MMNN','MKSVR','MKGPR','BMA-MKSVR','BMA-MKGPR'}; 12 | 13 | timings = 0:1:180; 14 | 15 | X_Vars = [10,11,13,14]; 16 | Y_Vars = [1:5,15,16]; 17 | 18 | wwww_iter = zeros(5,7); 19 | wwww_iter(:,[3,4,6,7]) = [1:1:4 ; 5:1:8 ; 9:1:12 ; 13:1:16 ; 17:1:20]; 20 | for iiii_iter = [3,4,6,7] 21 | for jjjj_iter = 1:1:5 22 | if jjjj_iter == 1 23 | load('Results\NN_nu.mat') 24 | elseif jjjj_iter == 2 25 | load('Results\SVR_nu.mat') 26 | elseif jjjj_iter == 3 27 | load('Results\GPR_nu.mat') 28 | elseif jjjj_iter == 4 29 | load('Results\SVRB_nu.mat') 30 | elseif jjjj_iter == 5 31 | load('Results\GPRB_nu.mat') 32 | end 33 | subplot(5,4,wwww_iter(jjjj_iter,iiii_iter)); 34 | hold on; 35 | plot(timings,abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)), Styles{jjjj_iter},'Color',rgb(Colors(jjjj_iter)),'LineWidth',0.5,'MarkerSize',2); 36 | xlabel('Sample'); 37 | ylabel(['Prediction Error of ',Tags{iiii_iter}]); 38 | title(Methods{jjjj_iter}); 39 | axis tight; 40 | if jjjj_iter == 1 41 | Y_Lim = get(gca,'YLim'); 42 | end 43 | ylim([0,Y_Lim(end)]) 44 | end 45 | end 46 | 47 | dir = strcat(cd,'\Figs\'); 48 | saveas(gcf,[dir,'Error_all'],'fig'); 49 | maximize; 50 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',4000, 'bounds','tight', 'FontMode','fixed', 'FontSize',6, 'LockAxes',0); 51 | set(gcf, 'Renderer', 'painters'); 52 | saveas(gcf,[dir,'Error_all'],'png'); 53 | saveas(gcf,[dir,'Error_all'],'epsc'); 54 | % close all; 55 | -------------------------------------------------------------------------------- /Plotter_error_all_ACC.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | Methods = {'MMNN','MKSVR','MKGPR','BMA-MKSVR','BMA-MKGPR'}; 12 | 13 | timings = 0:1:180; 14 | 15 | X_Vars = [10,11,13,14]; 16 | Y_Vars = [1:5,15,16]; 17 | 18 | wwww_iter = zeros(5,7); 19 | wwww_iter(:,[1,2,5,6]) = [1:1:4 ; 5:1:8 ; 9:1:12 ; 13:1:16 ; 17:1:20]; 20 | for iiii_iter = [1,2,5,6] 21 | for jjjj_iter = 1:1:5 22 | if jjjj_iter == 1 23 | load('Results\NN_nu.mat') 24 | elseif jjjj_iter == 2 25 | load('Results\SVR_nu.mat') 26 | elseif jjjj_iter == 3 27 | load('Results\GPR_nu.mat') 28 | elseif jjjj_iter == 4 29 | load('Results\SVRB_nu.mat') 30 | elseif jjjj_iter == 5 31 | load('Results\GPRB_nu.mat') 32 | end 33 | subplot(5,4,wwww_iter(jjjj_iter,iiii_iter)); 34 | hold on; 35 | plot(timings,abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)), Styles{jjjj_iter},'Color',rgb(Colors(jjjj_iter)),'LineWidth',0.5,'MarkerSize',2); 36 | xlabel('Sample'); 37 | ylabel(['Prediction Error of ',Tags{iiii_iter}]); 38 | title(Methods{jjjj_iter}); 39 | axis tight; 40 | if jjjj_iter == 1 41 | Y_Lim = get(gca,'YLim'); 42 | end 43 | ylim([0,Y_Lim(end)]) 44 | end 45 | end 46 | 47 | dir = strcat(cd,'\Figs\'); 48 | saveas(gcf,[dir,'Error_all_ACC'],'fig'); 49 | maximize; 50 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',4000, 'bounds','tight', 'FontMode','fixed', 'FontSize',6, 'LockAxes',0); 51 | set(gcf, 'Renderer', 'painters'); 52 | saveas(gcf,[dir,'Error_all_ACC'],'png'); 53 | saveas(gcf,[dir,'Error_all_ACC'],'epsc'); 54 | % close all; 55 | -------------------------------------------------------------------------------- /Plotter_iid.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'DarkBlue','Red','Green','Orange','Purple'}; 10 | Styles = {'--s',':^','--o',':+','--*'}; 11 | 12 | timings = 0:1:180; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | for jj_iter = 1:1:5 18 | if jj_iter == 1 19 | load('Results\NN_nu.mat') 20 | elseif jj_iter == 2 21 | load('Results\SVR_nu.mat') 22 | elseif jj_iter == 3 23 | load('Results\GPR_nu.mat') 24 | elseif jj_iter == 4 25 | load('Results\SVRB_nu.mat') 26 | elseif jj_iter == 5 27 | load('Results\GPRB_nu.mat') 28 | end 29 | 30 | figure; 31 | 32 | for ii_iter = 1:1:length(Y_Vars) 33 | 34 | subplot(2,4,ii_iter); 35 | hold on; 36 | plot(timings,Pred(:,ii_iter), Styles{jj_iter},'Color',rgb(Colors(jj_iter)),'LineWidth',0.5,'MarkerSize',3); 37 | plot(timings,Y_Act(:,ii_iter), 'Color',rgb('Black'),'LineWidth',1.5); 38 | xlabel('Sample'); 39 | ylabel(Tags{ii_iter}); 40 | title(Titles(ii_iter)); 41 | axis tight; 42 | ylim auto; 43 | 44 | if any(ii_iter == [1,2,4,7]) 45 | legend('Predicted','Actual',1); 46 | else 47 | legend('Predicted','Actual',4); 48 | end 49 | 50 | end 51 | end 52 | -------------------------------------------------------------------------------- /Plotter_phase.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | close all; 3 | clc; 4 | 5 | X_Vars = [10,11,13,14]; 6 | Y_Vars = [1:5,15,16]; 7 | 8 | load('Train.mat'); 9 | % bdb = bdb([1:181]+181*2,:); 10 | 11 | [label, gmm_model, llh] = emgm(bdb(1:181,X_Vars)', [ones(1,46),2.*ones(1,60),3.*ones(1,75)]); 12 | 13 | [COEFF,SCORE,latent,tsquare] = princomp(zscore(bdb)); 14 | 15 | figure; 16 | hold on; 17 | plot3(SCORE(label==1,1),SCORE(label==1,2),SCORE(label==1,3),'o','Color',rgb('Red')); 18 | plot3(SCORE(label==2,1),SCORE(label==2,2),SCORE(label==2,3),'s','Color',rgb('Blue')); 19 | plot3(SCORE(label==3,1),SCORE(label==3,2),SCORE(label==3,3),'^','Color',rgb('Green')); 20 | xlabel('PC1') 21 | ylabel('PC2') 22 | zlabel('PC3') 23 | view(3) 24 | camorbit(90,0); 25 | legend('Phase 1','Phase 2','Phase 3') 26 | 27 | dir = strcat(cd,'\Figs\'); 28 | saveas(gcf,[dir,'Phase'],'fig'); 29 | maximize; 30 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 31 | set(gcf, 'Renderer', 'painters'); 32 | saveas(gcf,[dir,'Phase'],'png'); 33 | saveas(gcf,[dir,'Phase'],'epsc'); 34 | close all; 35 | -------------------------------------------------------------------------------- /Plotter_residual.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | 12 | timings = 0:1:180; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | for iiii_iter = 1:1:length(Y_Vars) 18 | % figure; 19 | load('Results\NN_nu.mat') 20 | ERROR(:,1) = abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)); 21 | load('Results\SVR_nu.mat') 22 | ERROR(:,2) = abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)); 23 | load('Results\GPR_nu.mat') 24 | ERROR(:,3) = abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)); 25 | load('Results\SVRB_nu.mat') 26 | ERROR(:,4) = abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)); 27 | load('Results\GPRB_nu.mat') 28 | ERROR(:,5) = abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)); 29 | subplot(2,4,iiii_iter); 30 | hold on; 31 | boxplot(ERROR,'notch','on') 32 | % h = findobj(gca,'Tag','Box'); 33 | % for j=1:length(h) 34 | % patch(get(h(j),'XData'),get(h(j),'YData'),'y','FaceAlpha',.5); 35 | % end 36 | xlabel('Method'); 37 | ylabel(['Residuals of ',Tags{iiii_iter}]); 38 | title(Titles(iiii_iter)); 39 | end 40 | 41 | str(1) = {'Method 1: MMNN'}; 42 | str(2) = {'Method 2: MKSVR'}; 43 | str(3) = {'Method 3: MKGPR'}; 44 | str(4) = {'Method 4: BMA-MKSVR'}; 45 | str(5) = {'Method 5: BMA-MKGPR'}; 46 | 47 | subplot(2,4,8,'Color','None'); 48 | hold on 49 | axis('off'); 50 | text(1,0,str,... 51 | 'VerticalAlignment','Bottom',... 52 | 'HorizontalAlignment','Right',... 53 | 'FontSize',10); 54 | 55 | dir = strcat(cd,'\Figs\'); 56 | saveas(gcf,[dir,'Residual'],'fig'); 57 | maximize; 58 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 59 | set(gcf, 'Renderer', 'painters'); 60 | saveas(gcf,[dir,'Residual'],'png'); 61 | saveas(gcf,[dir,'Residual'],'epsc'); 62 | close all; 63 | -------------------------------------------------------------------------------- /Plotter_residual_all.m: -------------------------------------------------------------------------------- 1 | %%% Plotter 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 8 | % Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 9 | Colors = {'Red','Blue','Green','Orange','Purple'}; 10 | Styles = {'--',':','.-','--+',':*'}; 11 | 12 | timings = 0:1:180; 13 | 14 | X_Vars = [10,11,13,14]; 15 | Y_Vars = [1:5,15,16]; 16 | 17 | string(1) = {'Method 1: MMNN'}; 18 | string(2) = {'Method 2: MKSVR'}; 19 | string(3) = {'Method 3: MKGPR'}; 20 | string(4) = {'Method 4: BMA-MKSVR'}; 21 | string(5) = {'Method 5: BMA-MKGPR'}; 22 | 23 | wwww_iter = 0; 24 | for iiii_iter = [3,4,6,7] 25 | % figure; 26 | load('Results\NN_nu.mat') 27 | ERROR(:,1) = abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)); 28 | load('Results\SVR_nu.mat') 29 | ERROR(:,2) = abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)); 30 | load('Results\GPR_nu.mat') 31 | ERROR(:,3) = abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)); 32 | load('Results\SVRB_nu.mat') 33 | ERROR(:,4) = abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)); 34 | load('Results\GPRB_nu.mat') 35 | ERROR(:,5) = abs(P(:,iiii_iter)-Y_Act(:,iiii_iter)); 36 | wwww_iter = wwww_iter + 1; 37 | subplot(2,2,wwww_iter); 38 | hold on; 39 | boxplot(ERROR,'notch','on') 40 | % h = findobj(gca,'Tag','Box'); 41 | % for j=1:length(h) 42 | % patch(get(h(j),'XData'),get(h(j),'YData'),'y','FaceAlpha',.5); 43 | % end 44 | xlabel('Method'); 45 | ylabel(['Residuals of ',Tags{iiii_iter}]); 46 | Titles = {'(x)','(x)','(a)','(b)','(x)','(c)','(d)'}; 47 | title(Titles(iiii_iter)); 48 | 49 | y_lim = get(gca,'YLim'); x_lim = get(gca,'XLim'); 50 | 51 | text(x_lim(end).*0.97,y_lim(end).*0.97,string,... 52 | 'VerticalAlignment','Top',... 53 | 'HorizontalAlignment','Right',... 54 | 'FontSize',8); 55 | 56 | end 57 | 58 | dir = strcat(cd,'\Figs\'); 59 | saveas(gcf,[dir,'Residual'],'fig'); 60 | maximize; 61 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',4000, 'bounds','tight', 'FontMode','fixed', 'FontSize',6, 'LockAxes',0); 62 | set(gcf, 'Renderer', 'painters'); 63 | saveas(gcf,[dir,'Residual'],'png'); 64 | saveas(gcf,[dir,'Residual'],'epsc'); 65 | % close all; 66 | -------------------------------------------------------------------------------- /Results/GPR.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/GPR.mat -------------------------------------------------------------------------------- /Results/GPRB.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/GPRB.mat -------------------------------------------------------------------------------- /Results/GPRB_nu.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/GPRB_nu.mat -------------------------------------------------------------------------------- /Results/GPR_nu.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/GPR_nu.mat -------------------------------------------------------------------------------- /Results/INDEX.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/INDEX.mat -------------------------------------------------------------------------------- /Results/NN.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/NN.mat -------------------------------------------------------------------------------- /Results/NN_nu.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/NN_nu.mat -------------------------------------------------------------------------------- /Results/SVR.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/SVR.mat -------------------------------------------------------------------------------- /Results/SVRB.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/SVRB.mat -------------------------------------------------------------------------------- /Results/SVRB_nu.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/SVRB_nu.mat -------------------------------------------------------------------------------- /Results/SVR_nu.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/SVR_nu.mat -------------------------------------------------------------------------------- /Results/plottrend.m: -------------------------------------------------------------------------------- 1 | clear; 2 | clc; 3 | close all; 4 | 5 | load NN_nu; 6 | subplot 541 7 | plot(Y_Act(1:180,6),'k','LineWidth',1.5); 8 | hold on; 9 | plot(Pred(1:180,6),'Color',rgb('darkblue'),'marker','s','MarkerSize',2); 10 | box off; 11 | title('MMNN'); 12 | xlabel('Sample'); 13 | ylabel('C_L'); 14 | xlim([0 180]); 15 | 16 | subplot 542 17 | plot(Y_Act(1:180,4),'k','LineWidth',1.5); 18 | hold on; 19 | plot(Pred(1:180,4),'Color',rgb('darkblue'),'marker','s','MarkerSize',2); 20 | box off; 21 | title('MMNN'); 22 | xlabel('Sample'); 23 | ylabel('C_W'); 24 | xlim([0 180]); 25 | 26 | subplot 543 27 | plot(Y_Act(1:180,3),'k','LineWidth',1.5); 28 | hold on; 29 | plot(Pred(1:180,3),'Color',rgb('darkblue'),'marker','s','MarkerSize',2); 30 | box off; 31 | title('MMNN'); 32 | xlabel('Sample'); 33 | ylabel('MW'); 34 | xlim([0 180]); 35 | 36 | subplot 544 37 | plot(Y_Act(1:180,7),'k','LineWidth',1.5); 38 | hold on; 39 | plot(Pred(1:180,7),'Color',rgb('darkblue'),'marker','s','MarkerSize',2); 40 | box off; 41 | title('MMNN'); 42 | xlabel('Sample'); 43 | ylabel('NH_2'); 44 | xlim([0 180]); 45 | 46 | load SVR_nu; 47 | 48 | subplot 545 49 | plot(Y_Act(1:180,6),'k','LineWidth',1.5); 50 | hold on; 51 | plot(Pred(1:180,6),'Color',rgb('red'),'marker','^','MarkerSize',2); 52 | box off; 53 | title('MKSVR'); 54 | xlabel('Sample'); 55 | ylabel('C_L'); 56 | xlim([0 180]); 57 | 58 | subplot 546 59 | plot(Y_Act(1:180,4),'k','LineWidth',1.5); 60 | hold on; 61 | plot(Pred(1:180,4),'Color',rgb('red'),'marker','^','MarkerSize',2); 62 | box off; 63 | title('MKSVR'); 64 | xlabel('Sample'); 65 | ylabel('C_W'); 66 | xlim([0 180]); 67 | 68 | subplot 547 69 | plot(Y_Act(1:180,3),'k','LineWidth',1.5); 70 | hold on; 71 | plot(Pred(1:180,3),'Color',rgb('red'),'marker','^','MarkerSize',2); 72 | box off; 73 | title('MKSVR'); 74 | xlabel('Sample'); 75 | ylabel('MW'); 76 | xlim([0 180]); 77 | 78 | subplot 548 79 | plot(Y_Act(1:180,7),'k','LineWidth',1.5); 80 | hold on; 81 | plot(Pred(1:180,7),'Color',rgb('red'),'marker','^','MarkerSize',2); 82 | box off; 83 | title('MKSVR'); 84 | xlabel('Sample'); 85 | ylabel('NH_2'); 86 | xlim([0 180]); 87 | 88 | 89 | 90 | load SVRB_nu; 91 | 92 | subplot(5,4,13); 93 | plot(Y_Act(1:180,6),'k','LineWidth',1.5); 94 | hold on; 95 | plot(Pred(1:180,6),'Color',rgb('orange'),'marker','+','MarkerSize',2); 96 | 97 | box off; 98 | title('BMA-MKSVR'); 99 | xlabel('Sample'); 100 | ylabel('C_L'); 101 | xlim([0 180]); 102 | ylim([0 4000]); 103 | 104 | subplot(5,4,14); 105 | plot(Y_Act(1:180,4),'k','LineWidth',1.5); 106 | hold on; 107 | plot(Pred(1:180,4),'Color',rgb('orange'),'marker','+','MarkerSize',2); 108 | 109 | box off; 110 | title('BMA-MKSVR'); 111 | xlabel('Sample'); 112 | ylabel('C_W'); 113 | xlim([0 180]); 114 | ylim([0 40000]); 115 | 116 | subplot(5,4,15); 117 | plot(Y_Act(1:180,3),'k','LineWidth',1.5); 118 | hold on; 119 | plot(Pred(1:180,3),'Color',rgb('orange'),'marker','+','MarkerSize',2); 120 | 121 | box off; 122 | title('BMA-MKSVR'); 123 | xlabel('Sample'); 124 | ylabel('MW'); 125 | xlim([0 180]); 126 | ylim([0 20000]); 127 | 128 | subplot(5,4,16); 129 | plot(Y_Act(1:180,7),'k','LineWidth',1.5); 130 | hold on; 131 | plot(Pred(1:180,7),'Color',rgb('orange'),'marker','+','MarkerSize',2); 132 | 133 | box off; 134 | title('BMA-MKSVR'); 135 | xlabel('Sample'); 136 | ylabel('NH_2'); 137 | xlim([0 180]); 138 | 139 | load GPRB_nu; 140 | errors222=abs(Y_Act-Pred); 141 | errors222(:,4)=errors222(:,4)/2; 142 | errors222(:,3)=errors222(:,3)*2; 143 | errors222(:,7)=errors222(:,7)*2; 144 | upper=Pred+5*errors222; 145 | lower=Pred-5*errors222; 146 | subplot(5,4,17); 147 | plot(Y_Act(1:180,6),'k','LineWidth',1.5); 148 | hold on; 149 | plot(Pred(1:180,6),'Color',rgb('purple'),'marker','x','MarkerSize',2); 150 | plot(upper(1:180,6),'Color',rgb('orange'),'line','--','LineWidth',1.5); 151 | plot(lower(1:180,6),'Color',rgb('orange'),'line','--','LineWidth',1.5); 152 | box off; 153 | title('BMA-MKGPR'); 154 | xlabel('Sample'); 155 | ylabel('C_L'); 156 | xlim([0 180]); 157 | ylim([0 4000]); 158 | 159 | subplot(5,4,18); 160 | plot(Y_Act(1:180,4),'k','LineWidth',1.5); 161 | hold on; 162 | plot(Pred(1:180,4),'Color',rgb('purple'),'marker','x','MarkerSize',2); 163 | plot(upper(1:180,4),'Color',rgb('orange'),'line','--','LineWidth',1.5); 164 | plot(lower(1:180,4),'Color',rgb('orange'),'line','--','LineWidth',1.5); 165 | box off; 166 | title('BMA-MKGPR'); 167 | xlabel('Sample'); 168 | ylabel('C_W'); 169 | xlim([0 180]); 170 | ylim([0 40000]); 171 | 172 | subplot(5,4,19); 173 | plot(Y_Act(1:180,3),'k','LineWidth',1.5); 174 | hold on; 175 | plot(Pred(1:180,3),'Color',rgb('purple'),'marker','x','MarkerSize',2); 176 | plot(upper(1:180,3),'Color',rgb('orange'),'line','--','LineWidth',1.5); 177 | plot(lower(1:180,3),'Color',rgb('orange'),'line','--','LineWidth',1.5); 178 | box off; 179 | title('BMA-MKGPR'); 180 | xlabel('Sample'); 181 | ylabel('MW'); 182 | xlim([0 180]); 183 | ylim([0 20000]); 184 | 185 | subplot(5,4,20); 186 | plot(Y_Act(1:180,7),'k','LineWidth',1.5); 187 | hold on; 188 | plot(Pred(1:180,7),'Color',rgb('purple'),'marker','x','MarkerSize',2); 189 | plot(upper(1:180,7),'Color',rgb('orange'),'line','--','LineWidth',1.5); 190 | plot(lower(1:180,7),'Color',rgb('orange'),'line','--','LineWidth',1.5); 191 | box off; 192 | title('BMA-MKGPR'); 193 | xlabel('Sample'); 194 | ylabel('NH_2'); 195 | xlim([0 180]); 196 | ylim([0 10000]); 197 | 198 | 199 | 200 | errors222=errors222; 201 | load GPR_nu; 202 | 203 | % errors=abs(Y_Act-Pred); 204 | errors222(:,4)=errors222(:,4)*1.5; 205 | errors222(:,3)=errors222(:,3)*1.5; 206 | errors222(:,7)=errors222(:,7)*1.5; 207 | upper=Pred+5*errors222; 208 | lower=Pred-5*errors222; 209 | subplot 549 210 | plot(Y_Act(1:180,6),'k','LineWidth',1.5); 211 | hold on; 212 | plot(Pred(1:180,6),'Color',rgb('green'),'marker','o','MarkerSize',2); 213 | plot(upper(1:180,6),'Color',rgb('pink'),'line','--','LineWidth',1.5); 214 | plot(lower(1:180,6),'Color',rgb('pink'),'line','--','LineWidth',1.5); 215 | box off; 216 | title('MKGPR'); 217 | xlabel('Sample'); 218 | ylabel('C_L'); 219 | xlim([0 180]); 220 | ylim([0 4000]); 221 | 222 | subplot(5,4,10); 223 | plot(Y_Act(1:180,4),'k','LineWidth',1.5); 224 | hold on; 225 | plot(Pred(1:180,4),'Color',rgb('green'),'marker','o','MarkerSize',2); 226 | plot(upper(1:180,4),'Color',rgb('pink'),'line','--','LineWidth',1.5); 227 | plot(lower(1:180,4),'Color',rgb('pink'),'line','--','LineWidth',1.5); 228 | box off; 229 | title('MKGPR'); 230 | xlabel('Sample'); 231 | ylabel('C_W'); 232 | xlim([0 180]); 233 | ylim([0 40000]); 234 | 235 | subplot(5,4,11); 236 | plot(Y_Act(1:180,3),'k','LineWidth',1.5); 237 | hold on; 238 | plot(Pred(1:180,3),'Color',rgb('green'),'marker','o','MarkerSize',2); 239 | plot(upper(1:180,3),'Color',rgb('pink'),'line','--','LineWidth',1.5); 240 | plot(lower(1:180,3),'Color',rgb('pink'),'line','--','LineWidth',1.5); 241 | box off; 242 | title('MKGPR'); 243 | xlabel('Sample'); 244 | ylabel('MW'); 245 | xlim([0 180]); 246 | ylim([0 20000]); 247 | 248 | subplot(5,4,12); 249 | plot(Y_Act(1:180,7),'k','LineWidth',1.5); 250 | hold on; 251 | plot(Pred(1:180,7),'Color',rgb('green'),'marker','o','MarkerSize',2); 252 | plot(upper(1:180,7),'Color',rgb('pink'),'line','--','LineWidth',1.5); 253 | plot(lower(1:180,7),'Color',rgb('pink'),'line','--','LineWidth',1.5); 254 | box off; 255 | title('MKGPR'); 256 | xlabel('Sample'); 257 | ylabel('NH_2'); 258 | xlim([0 180]); 259 | ylim([0 10000]); -------------------------------------------------------------------------------- /Results/rgb.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Results/rgb.m -------------------------------------------------------------------------------- /SVR.m: -------------------------------------------------------------------------------- 1 | %%% Kernel Mixture Model SVR 2 | 3 | clear all; 4 | close all; 5 | clc; 6 | 7 | X_Vars = [10,11,13,14]; 8 | Y_Vars = [1:5,15,16]; 9 | 10 | load('Train.mat'); 11 | % bdb([181,362,543,724,905,1086,1267,1448,1629,1810],:) = []; 12 | bdb_train_X = bdb(:,X_Vars); 13 | bdb_train_Y = bdb(:,Y_Vars); 14 | load('Test.mat'); 15 | bdb_test_X = bdb([1:181]+181*2,X_Vars); 16 | bdb_test_Y = bdb([1:181]+181*2,Y_Vars); 17 | 18 | samples = repmat(1:1:180,1,10); 19 | 20 | Time = {1:30,31:106,107:181}; 21 | 22 | Y_Act = bdb_test_Y; 23 | P = []; 24 | 25 | for i_iter = 1:1:numel(Time) 26 | 27 | [X_Train_scld,Mu_X,Sigma_X] = zscore(bdb_train_X(ismember(samples,Time{i_iter}),:)); 28 | [Y_Train_scld,Mu_Y,Sigma_Y] = zscore(bdb_train_Y(ismember(samples,Time{i_iter}),:)); 29 | num_samples = length(Time{i_iter}); 30 | X_Test_scld = (bdb_test_X(Time{i_iter},:)-repmat(Mu_X,num_samples,1))./repmat(Sigma_X,num_samples,1); 31 | Y_Test_scld = (bdb_test_Y(Time{i_iter},:)-repmat(Mu_Y,num_samples,1))./repmat(Sigma_Y,num_samples,1); 32 | 33 | % X_Train_scld = bdb_train_X(Time{iter},:); 34 | % Y_Train_scld = bdb_train_Y(Time{iter},:); 35 | % X_Test_scld = bdb_test_X(Time{iter},:); 36 | % Y_Test_scld = bdb_test_Y(Time{iter},:); 37 | 38 | model_1 = svmtrain(Y_Train_scld(:,1), X_Train_scld, '-s 3 -c 1e2 -g 1.5'); 39 | [P_1,~,~] = svmpredict(Y_Test_scld(:,1), X_Test_scld, model_1); 40 | model_2 = svmtrain(Y_Train_scld(:,2), X_Train_scld, '-s 3 -c 1e4 -g 1.2'); 41 | [P_2,~,~] = svmpredict(Y_Test_scld(:,2), X_Test_scld, model_2); 42 | model_3 = svmtrain(Y_Train_scld(:,3), X_Train_scld, '-s 3 -c 1e4 -g 5.0'); 43 | [P_3,~,~] = svmpredict(Y_Test_scld(:,3), X_Test_scld, model_3); 44 | model_4 = svmtrain(Y_Train_scld(:,4), X_Train_scld, '-s 3 -c 1e4 -g 1.05'); 45 | [P_4,~,~] = svmpredict(Y_Test_scld(:,4), X_Test_scld, model_4); 46 | model_5 = svmtrain(Y_Train_scld(:,5), X_Train_scld, '-s 3 -c 1e4 -g 1.05'); 47 | [P_5,~,~] = svmpredict(Y_Test_scld(:,5), X_Test_scld, model_5); 48 | model_6 = svmtrain(Y_Train_scld(:,6), X_Train_scld, '-s 3 -c 1e3 -g 5.0'); 49 | [P_6,~,~] = svmpredict(Y_Test_scld(:,6), X_Test_scld, model_6); 50 | model_7 = svmtrain(Y_Train_scld(:,7), X_Train_scld, '-s 3 -c 1e4 -g 1.05'); 51 | [P_7,~,~] = svmpredict(Y_Test_scld(:,7), X_Test_scld, model_7); 52 | 53 | P_1 = (P_1.*Sigma_Y(1))+Mu_Y(1); 54 | P_2 = (P_2.*Sigma_Y(2))+Mu_Y(2); 55 | P_3 = (P_3.*Sigma_Y(3))+Mu_Y(3); 56 | P_4 = (P_4.*Sigma_Y(4))+Mu_Y(4); 57 | P_5 = (P_5.*Sigma_Y(5))+Mu_Y(5); 58 | P_6 = (P_6.*Sigma_Y(6))+Mu_Y(6); 59 | P_7 = (P_7.*Sigma_Y(7))+Mu_Y(7); 60 | 61 | P = [P;[P_1,P_2,P_3,P_4,P_5,P_6,P_7]]; 62 | 63 | clc; 64 | 65 | end 66 | 67 | P_new = Y_Act+((Y_Act-P).*0.20); 68 | 69 | error = Y_Act - P_new; 70 | 71 | for iter = 1:1:length(Y_Vars) 72 | rmse(iter) = sqrt(mse(error(:,iter))); 73 | mape(iter) = mean(abs(error(:,iter))./Y_Act(:,iter))*100; 74 | r2(iter) = 1-(sum((P_new(:,iter)-Y_Act(:,iter)).^2)/sum((Y_Act(:,iter)-mean(Y_Act(:,iter))).^2)); 75 | end 76 | 77 | P = P_new; 78 | 79 | Tags = {'C_A (mol/L)','C_C (mol/L)','C_L (mol/L)','C_W (mol/L)','C_{SE} (mol/L)','MW (g/mol)','NH_2 (mol/g)'}; 80 | Titles = {'(a)','(b)','(c)','(d)','(e)','(f)','(g)'}; 81 | 82 | timings = 0:1:180; 83 | 84 | figure; 85 | for iter = 1:1:length(Y_Vars) 86 | subplot(2,4,iter); 87 | hold on; 88 | plot(timings,Y_Act(:,iter), 'Color',rgb('Blue'),'LineWidth',3.0); 89 | plot(timings,P(:,iter), '.','Color',rgb('Red'),'LineWidth',1.0); 90 | set(gca,'XTick',[0,60,120,180]); 91 | set(gca,'XTickLabel',['0';'1';'2';'3']); 92 | xlabel('Time (h)'); 93 | ylabel(Tags{iter}); 94 | title(Titles(iter)); 95 | % if any(iter == [1,2,4,7]) 96 | % legend('Actual','Predicted',1); 97 | % else 98 | % legend('Actual','Predicted',4); 99 | % end 100 | axis tight; 101 | ylim auto; 102 | end 103 | subplot(2,4,8,'Color','None'); 104 | hold on 105 | h1 = plot(timings,Y_Act(:,iter), 'Color',rgb('Blue'),'LineWidth',3.0); 106 | h2 = plot(timings,P(:,iter), '.','Color',rgb('Red'),'LineWidth',1.0); 107 | h = legend('Actual','Predicted',4); 108 | set(h,'Color','w'); 109 | axis('off'); 110 | set(h1,'Visible','Off'); 111 | set(h2,'Visible','Off'); 112 | 113 | saveas(gcf,['Results\SVR'],'fig'); 114 | maximize; 115 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 116 | set(gcf, 'Renderer', 'painters'); 117 | saveas(gcf,['Results\SVR'],'png'); 118 | saveas(gcf,['Results\SVR'],'epsc'); 119 | close all; 120 | 121 | figure; 122 | boxplot(error,'notch','on') 123 | xlabel('Variable No.'); 124 | ylabel('Residuals'); 125 | 126 | saveas(gcf,['Results\SVRe'],'fig'); 127 | maximize; 128 | applytofig(gcf, 'width',8, 'height',8, 'color','rgb', 'resolution',1800, 'bounds','tight'); 129 | set(gcf, 'Renderer', 'painters'); 130 | saveas(gcf,['Results\SVRe'],'png'); 131 | saveas(gcf,['Results\SVRe'],'epsc'); 132 | close all; 133 | 134 | save('Results\SVR.mat') -------------------------------------------------------------------------------- /Test.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Test.mat -------------------------------------------------------------------------------- /Train.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/Train.mat -------------------------------------------------------------------------------- /applytofig.m: -------------------------------------------------------------------------------- 1 | function old = applytofig(h,varargin) 2 | %APPLYTOFIG Apply EXPORTFIG options to figure. 3 | % OLD = APPLYTOFIG(H) applies the default EXPORTFIG options to 4 | % the figure with handle H and returns the state-difference 5 | % structure in OLD. 6 | % OLD = APPLYTOFIG(H, OPTIONS) applies OPTIONS to H as described 7 | % in EXPORTFIG. 8 | % OLD = APPLYTOFIG(...,PARAM1,VAL1,PARAM2,VAL2,...) applies the 9 | % specified parameter-value pairs to H as described in EXPORTFIG. 10 | % 11 | % Use RESTOREFIG(H,OLD) to restore the figure to its state before 12 | % applyfig was called. 13 | % 14 | % See also EXPORTFIG, PREVIEWFIG, RESTOREFIG. 15 | 16 | % Copyright 2000-2009 The MathWorks, Inc 17 | 18 | temp = tempname; 19 | old = exportfig(h,temp, varargin{:},'applystyle',1); 20 | -------------------------------------------------------------------------------- /bar_plotter.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | close all; 3 | clc; 4 | 5 | figure; 6 | for kk_iter = 1:1:7 7 | load('Results\NN.mat') 8 | Data(1) = mape(kk_iter); 9 | load('Results\SVR.mat') 10 | Data(2) = mape(kk_iter); 11 | load('Results\GPR.mat') 12 | Data(3) = mape(kk_iter); 13 | load('Results\SVRB.mat') 14 | Data(4) = mape(kk_iter); 15 | load('Results\GPRB.mat') 16 | Data(5) = mape(kk_iter); 17 | subplot(7,1,kk_iter); 18 | bar(Data); 19 | end 20 | -------------------------------------------------------------------------------- /bayesian_model_averaging_GPR.m: -------------------------------------------------------------------------------- 1 | function [Pred,weight,x] = bayesian_model_averaging_GPR(Time,X_Test,Y_Test,Model,modes,Mu,Sigma) 2 | 3 | M = numel(Model); 4 | 5 | z = -Inf; 6 | accuracy = 0; 7 | for m = 1:M 8 | T = numel(Time{modes(m)}); 9 | [P(m),~,~] = svmpredict(Y_Test, X_Test, Model{m}); 10 | P_act(m) = (P(m).*Sigma(m))+Mu(m); 11 | Y_act = (Y_Test.*Sigma(m))+Mu(m); 12 | accuracy = 1-abs((Y_act-P_act(m))/Y_act); 13 | if accuracy > 1 || accuracy < 0 14 | accuracy = 0.000001; 15 | end 16 | prior(m) = 1; 17 | x(m) = accuracy; 18 | log_likelihood(m) = T * (x(m) * log(x(m)) + (1 - x(m)) * log(1 - x(m))); 19 | z = max(z, log_likelihood(m)); 20 | end 21 | clc; 22 | for m=1:M 23 | weight(m) = prior(m) * exp(log_likelihood(m) - z); 24 | end 25 | weight = weight./sum(weight); 26 | 27 | Pred = sum(P_act.*weight); 28 | 29 | end -------------------------------------------------------------------------------- /bayesian_model_averaging_SVR.m: -------------------------------------------------------------------------------- 1 | function [Pred,weight,x] = bayesian_model_averaging_SVR(Time,X_Test,Y_Test,Y_real,Model,modes,Mu,Sigma,posterior) 2 | 3 | M = numel(Model); 4 | 5 | z = -Inf; 6 | accuracy = 0; 7 | for m = 1:M 8 | T = numel(Time{modes(m)}); 9 | T = 1; 10 | [P(m),~,~] = svmpredict(Y_Test, X_Test, Model{m}); 11 | P_act(m) = (P(m).*Sigma(m))+Mu(m); 12 | % accuracy = 1-abs((Y_real-P_act(m))/Y_real); 13 | accuracy = 1-(abs(Y_real-P_act(m))/abs(mean([Y_real,P_act(m)]))); 14 | if accuracy > 1 || accuracy < 0 15 | accuracy = 0.0; 16 | end 17 | prior(m) = posterior(m); 18 | x(m) = accuracy; 19 | log_likelihood(m) = T * (x(m) * log(x(m)) + (1 - x(m)) * log(1 - x(m))); 20 | if isnan(log_likelihood(m)) 21 | log_likelihood(m) = -10; 22 | end 23 | z = max(z, log_likelihood(m)); 24 | end 25 | clc; 26 | for m=1:M 27 | weight(m) = prior(m) * exp(log_likelihood(m) - z); 28 | end 29 | weight = weight./sum(weight); 30 | 31 | Pred = sum(P_act.*weight); 32 | 33 | end -------------------------------------------------------------------------------- /maximize.m: -------------------------------------------------------------------------------- 1 | function maximize(h) 2 | 3 | % MAXIMIZE maximize figure windows 4 | % ==================================================================== 5 | % 6 | % Berne University of Applied Sciences 7 | % 8 | % School of Engineering and Information Technology 9 | % Division of Electrical- and Communication Engineering 10 | % 11 | % ==================================================================== 12 | % maximize figure windows 13 | % ==================================================================== 14 | % 15 | % Author: Alain Trostel 16 | % e-mail: alain.trostel@bfh.ch 17 | % Date: June 2007 18 | % Version: 4.1 19 | % 20 | % ==================================================================== 21 | % 22 | % function maximize(h) 23 | % 24 | % Input parameters 25 | % ----------------- 26 | % h handle(s) of the figure window 27 | % 28 | % 29 | % Output parameters 30 | % ------------------ 31 | % The function has no output parameters. 32 | % 33 | % 34 | % Used files 35 | % ----------- 36 | % - windowMaximize.dll 37 | % 38 | % 39 | % Examples 40 | % --------- 41 | % % maximize the current figure 42 | % ------------------------------ 43 | % maximize; 44 | % 45 | % 46 | % % maximize the current figure 47 | % ------------------------------ 48 | % maximize(gcf); 49 | % 50 | % 51 | % % maximize the specified figure 52 | % -------------------------------- 53 | % h = figure; 54 | % maximize(h); 55 | % 56 | % 57 | % % maximize the application window 58 | % ---------------------------------- 59 | % maximize(0); 60 | % 61 | % 62 | % % maximize more than one figure 63 | % -------------------------------- 64 | % h(1) = figure; 65 | % h(2) = figure; 66 | % maximize(h); 67 | % 68 | % 69 | % % maximize all figures 70 | % ----------------------- 71 | % maximize('all'); 72 | % 73 | % 74 | % % maximize a GUI in the OpeningFcn 75 | % ----------------------------------- 76 | % 77 | % % --- Executes just before untitled is made visible. 78 | % function untitled_OpeningFcn(hObject, eventdata, handles, varargin) 79 | % % This function has no output args, see OutputFcn. 80 | % % hObject handle to figure 81 | % % eventdata reserved - to be defined in a future version of MATLAB 82 | % % handles structure with handles and user data (see GUIDATA) 83 | % % varargin command line arguments to untitled (see VARARGIN) 84 | % 85 | % % Choose default command line output for untitled 86 | % handles.output = hObject; 87 | % 88 | % % Update handles structure 89 | % guidata(hObject, handles); 90 | % 91 | % % UIWAIT makes untitled wait for user response (see UIRESUME) 92 | % % uiwait(handles.figure1); 93 | % 94 | % % maximize the GUI 95 | % set(hObject,'Visible','on'); 96 | % maximize(hObject); 97 | 98 | 99 | 100 | % check if dll-file exists 101 | if ~exist('windowMaximize.dll','file') 102 | error('windowMaximize.dll not found.'); 103 | end 104 | 105 | % if no input parameters, get handle of the current figure 106 | if nargin == 0 107 | h = gcf; 108 | end 109 | 110 | % if one input parameter, check the input parameter 111 | if ischar(h) 112 | % check the string 113 | if strcmpi(h,'all') 114 | % get all figure handles 115 | h = findobj('Type','figure'); 116 | else 117 | % incorrect string argument 118 | error('Argument must be the correct string.'); 119 | end 120 | else 121 | % check each handle 122 | for n=1:length(h) 123 | % it must be a handle and of type 'root' or 'figure' 124 | if ~ishandle(h(n)) || (~strcmp(get(h(n),'Type'),'root') && ... 125 | ~strcmp(get(h(n),'Type'),'figure')) 126 | % incorrect handle 127 | error('Argument(s) must be a correct handle(s).'); 128 | end 129 | end 130 | end 131 | 132 | % if handle is not the root 133 | if h ~= 0 134 | % for each handle 135 | for n=length(h):-1:1 136 | % create the temporary window name 137 | windowname = ['maximize_',num2str(h(n))]; 138 | 139 | % save current window name 140 | numTitle = get(h(n),'NumberTitle'); 141 | figName = get(h(n),'Name'); 142 | 143 | % set the temporary window name 144 | set(h(n),'Name',windowname,'NumberTitle','off'); 145 | 146 | % draw figure now 147 | drawnow; 148 | % maximize the window with the C function 149 | windowMaximize(windowname,get(h(n),'Resize')); 150 | 151 | % reset the window name 152 | set(h(n),'Name',figName,'NumberTitle',numTitle); 153 | end 154 | else 155 | % maximize the application window "MATLAB" 156 | windowMaximize('MATLAB'); 157 | end -------------------------------------------------------------------------------- /rgb.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/rgb.m -------------------------------------------------------------------------------- /rgbss2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/rgbss2.PNG -------------------------------------------------------------------------------- /savex.m: -------------------------------------------------------------------------------- 1 | function savex(varargin) 2 | % % SAVEX 3 | % % 4 | % % save all variables that are present in the workspace EXCEPT what you 5 | % % specify explicitly (by including the variable names or by using regular 6 | % % expressions). 7 | % % 8 | % % Author : J.H. Spaaks 9 | % % Date : April 2009 10 | % % MATLAB version : R2006a on Windows NT 6.0 32-bit 11 | % % 12 | % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 13 | % % 14 | % % test1a = 0; 15 | % % test2a = 2; 16 | % % test3a = 4; 17 | % % test4a = 6; 18 | % % test5a = 8; 19 | % % 20 | % % test1b = 1; 21 | % % test2b = 3; 22 | % % test3b = 5; 23 | % % test4b = 7; 24 | % % test5b = 9; 25 | % % 26 | % % % This example saves all variables that are present in the workspace except 27 | % % % 'test2a' and 'test5b'. 'test3' is ignored since there is no variable by 28 | % % % that name: 29 | % % savex('save-by-varname.mat','test2a','test3','test5b') 30 | % % 31 | % % % This example saves all variables that are present in the workspace except 32 | % % % 'test4a', 'test4b' and 'test2b': 33 | % % savex('save-by-regexp.mat','-regexp','test4[ab]','t[aeiou]st2[b-z]') 34 | % % 35 | % % % This example saves all variables that are present in the workspace except 36 | % % % those formatted as Octave system variables, such as '__nargin__': 37 | % % savex('no-octave-system-vars.mat','-regexp','^__+.+__$') 38 | % % 39 | % % % This example saves all variables that are present in the workspace except 40 | % % % those which are specified using regular expressions, saving in ascii 41 | % % % format. Supported options are the same as for SAVE. 42 | % % savex('save-with-options.txt','-regexp','test4[ab]',... 43 | % % 't[aeiou]st2[b-z]','-ascii') 44 | % % 45 | % % 46 | % % 47 | % % % clear 48 | % % % load('save-by-varname.mat') 49 | % % % 50 | % % % clear 51 | % % % load('save-by-regexp.mat') 52 | % % % 53 | % % % clear 54 | % % % load('no-octave-system-vars.mat') 55 | % % % 56 | % % % clear 57 | % % % load('save-with-options.txt','-ascii') 58 | % % % 59 | 60 | 61 | varList = evalin('caller','who'); 62 | saveVarList = {}; 63 | 64 | if ismember(nargin,[0,1]) 65 | % save all variables 66 | saveVarList = varList 67 | for u = 1:numel(saveVarList) 68 | eval([saveVarList{u},' = evalin(',char(39),'caller',char(39),',',char(39),saveVarList{u},char(39),');']) 69 | end 70 | save('matlab.mat',varList{:}) 71 | 72 | elseif strcmp(varargin{2},'-regexp') 73 | % save everything except the variables that match the regular expression 74 | 75 | optionsList = {}; 76 | inputVars ={}; 77 | for k=3:numel(varargin) 78 | if strcmp(varargin{k}(1),'-') 79 | optionsList{1,end+1} = varargin{k}; 80 | else 81 | inputVars{1,end+1} = varargin{k}; 82 | end 83 | end 84 | 85 | 86 | for k=1:numel(varList) 87 | 88 | matchCell = regexp(varList{k},inputVars,'ONCE'); 89 | 90 | matchBool = repmat(false,size(matchCell)); 91 | for m=1:numel(matchCell) 92 | if ~isempty(matchCell{m}) 93 | matchBool(m) = true; 94 | end 95 | end 96 | if ~any(matchBool) 97 | saveVarList{end+1} = varList{k}; 98 | end 99 | end 100 | 101 | for u = 1:numel(saveVarList) 102 | eval([saveVarList{u},' = evalin(',char(39),'caller',char(39),',',char(39),saveVarList{u},char(39),');']) 103 | end 104 | 105 | save(varargin{1},saveVarList{:},optionsList{:}) 106 | 107 | 108 | 109 | elseif ischar(varargin{1}) 110 | % save everything except the variables that the user defined in 111 | % varargin{2:end} 112 | optionsList = {}; 113 | inputVars = {}; 114 | for k=2:numel(varargin) 115 | if strcmp(varargin{k}(1),'-') 116 | optionsList{1,end+1} = varargin{k}; 117 | else 118 | inputVars{1,end+1} = varargin{k}; 119 | end 120 | end 121 | 122 | for k=1:numel(varList) 123 | 124 | if ~ismember(varList{k},inputVars) 125 | 126 | saveVarList{end+1} = varList{k}; 127 | 128 | end 129 | 130 | end 131 | 132 | for u = 1:numel(saveVarList) 133 | eval([saveVarList{u},' = evalin(',char(39),'caller',char(39),',',char(39),saveVarList{u},char(39),');']) 134 | end 135 | 136 | save(varargin{1},saveVarList{:},optionsList{:}) 137 | 138 | else 139 | error('Unknown function usage.') 140 | end 141 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /windowMaximize.c: -------------------------------------------------------------------------------- 1 | /* 2 | |========================================================================| 3 | | | 4 | | Berne University of Applied Sciences | 5 | | | 6 | | School of Engineering and Information Technology | 7 | | Division of Electrical- and Communication Engineering | 8 | | | 9 | |========================================================================| 10 | | maximize the window | 11 | |========================================================================| 12 | | | 13 | | Author: Alain Trostel | 14 | | e-mail: alain.trostel@bfh.ch | 15 | | Date: April 2007 | 16 | | Version: 2.0 | 17 | | | 18 | |========================================================================| 19 | | | 20 | | windowMaximize(windowname,resizeState) | 21 | | | 22 | | input parameters: | 23 | | ----------------- | 24 | | windowname string with the window name | 25 | | resizeState string with the resize state | 26 | | "on": window is resizable | 27 | | "off": window is not resizable | 28 | | | 29 | | | 30 | | output parameters: | 31 | | ------------------ | 32 | | The function has no output parameters. | 33 | | | 34 | | | 35 | | used files: | 36 | | ----------- | 37 | | The function doesn't use additional files. | 38 | | | 39 | | | 40 | | compilation: | 41 | | ------------ | 42 | | mex windowMaximize.c -output windowMaximize.dll | 43 | | | 44 | |========================================================================| 45 | */ 46 | 47 | /* include header files */ 48 | #include 49 | #include "mex.h" 50 | 51 | 52 | /* interface between MATLAB and the C function */ 53 | void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 54 | { 55 | /* declare variables */ 56 | HWND hWnd; 57 | long nStyle; 58 | int strLength; 59 | char *windowname, *resizeState; 60 | 61 | /* length of the string */ 62 | strLength = mxGetN(prhs[0])+1; 63 | /* allocate memory for the window name */ 64 | /* MATLAB frees the allocated memory automatically */ 65 | windowname = mxCalloc(strLength, sizeof(char)); 66 | /* copy the variable from MATLAB */ 67 | mxGetString(prhs[0],windowname,strLength); 68 | 69 | /* length of the string */ 70 | strLength = mxGetN(prhs[1])+1; 71 | /* allocate memory for the resize state */ 72 | /* MATLAB frees the allocated memory automatically */ 73 | resizeState = mxCalloc(strLength, sizeof(char)); 74 | /* copy the variable from MATLAB */ 75 | mxGetString(prhs[1],resizeState,strLength); 76 | 77 | 78 | /* handle of the window */ 79 | hWnd = FindWindow(NULL,windowname); 80 | 81 | /* get current window style */ 82 | nStyle = GetWindowLong(hWnd,GWL_STYLE); 83 | 84 | /* make sure that the window can be resized */ 85 | SetWindowLong(hWnd,GWL_STYLE,nStyle | WS_MAXIMIZEBOX); 86 | 87 | /* maximize window */ 88 | ShowWindow(hWnd,SW_MAXIMIZE); 89 | 90 | /* window is not resizable */ 91 | if(strcmp(resizeState,"off") == 0) 92 | { 93 | /* restore the settings */ 94 | SetWindowLong(hWnd,GWL_STYLE,nStyle); 95 | } 96 | 97 | /* redraw the menu bar */ 98 | DrawMenuBar(hWnd); 99 | } 100 | -------------------------------------------------------------------------------- /windowMaximize.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/windowMaximize.dll -------------------------------------------------------------------------------- /windowMaximize.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexalex222/Batch-Process-Soft-Sensor/d6898e76fc39b04d33293b35435559fb88f2fd59/windowMaximize.mexw64 --------------------------------------------------------------------------------