diff --git a/DATA_case1.mat b/DATA_case1.mat
index 004ec10e0d4293447c5ef96ff1b845873931e076..f65feaed2a210fae64321e106a7291e55f5217d1 100644
Binary files a/DATA_case1.mat and b/DATA_case1.mat differ
diff --git a/DATA_case2.mat b/DATA_case2.mat
index e66e8aa3eabf7b54bb1562ff923c4f07abfb300f..e34ea4de08f603b4aa3e5a1111416bbfb74c624e 100644
Binary files a/DATA_case2.mat and b/DATA_case2.mat differ
diff --git a/Skript.m b/Skript.m
index b820493783a50870aabece2c9a31ea3c1a9ba592..15b4176a97a3f608f78c7299bf449939cbc2a7d4 100644
--- a/Skript.m
+++ b/Skript.m
@@ -39,7 +39,7 @@ load("DATA_case1.mat")
 % load("DATA_case1.mat")
 % save DATA_case1.mat X1 Y1 X1_P Y1_P time1 time1_P
 % 
-% X1  -  set of operating conditions for epsilon constraint method (2x40)
+% X1  -  set of operating conditions for epsilon constraint method (2x200)
 % Y1  -  system output using X2 (5x40)
 %
 % X1_P  -  set of operating conditions from paretosearch (2x200)
@@ -52,23 +52,25 @@ startTime=datetime("now");
 A= [-1 1]; b= -.1; Aeq=[]; beq=[]; lb = [30;30]; ub = [70;70];
 option_mesh = 1e4; option_BVP = 1e-6; option_data = 1;
 foptions = optimoptions('fmincon','Display','off','Algorithm','interior-point', 'StepTolerance', 1e-12, 'OptimalityTolerance',1e-4, 'MaxFunEvals',100);
-%foptions = optimoptions('fmincon','Display','iter-detailed','Algorithm','interior-point', 'StepTolerance', 1e-12, 'OptimalityTolerance',1e-3, 'MaxFunEvals',100);
 rng default
 %
-FWmin=linspace(0.0065, 0.3861, 40); 
-X0=[linspace(60,69.99,40);linspace(55,50,40)];
+FWmin=linspace(0.0065, 0.3861, 200); 
+X0=[linspace(60,69.99,200);linspace(55,50,200)];
 %
-parfor i=1:40
+parfor i=1:200
     epsilon=1;
     minFW=-FWmin(i);
     x0=X0(:,i);
-    while epsilon > .9
+    while epsilon > .1
         [x_neu, minSEC] = fmincon(@(x)fun_1(x,option_data,'SEC',option_mesh,option_BVP),x0   ,A,b,Aeq,beq,lb,ub,@(x)nonlcon(x,'FW' ,option_data,option_mesh,option_BVP,-minFW ),foptions);
         [x0, minFW]     = fmincon(@(x)fun_1(x,option_data,'FW' ,option_mesh,option_BVP),x_neu,A,b,Aeq,beq,lb,ub,@(x)nonlcon(x,'SEC',option_data,option_mesh,option_BVP,-minSEC),foptions);
-        epsilon = max(norm(x0-x_neu)),
+        y_neu = fun_1(x_neu,option_data,'Pareto',option_mesh,option_BVP),
+        y_0   = fun_1(x0,option_data,'Pareto',option_mesh,option_BVP),
+        epsilon = min(norm(x0-x_neu), norm(y_neu-y_0));
     end
-    X1(:,i)=x0; %x_neu;
+    X1(:,i)=x0;
     Y1(:,i)=fun_1([X1(:,i)],option_data,'sol',option_mesh,option_BVP);
+    i,
 end
 endTime=datetime("now");
 time1 = endTime - startTime;
@@ -79,7 +81,7 @@ scatter(Y1(1,:),Y1(2,:),'MarkerEdgeColor',[0 0 0],'MarkerFaceColor','r'); hold o
 grid on; xlim([-5.501 -.5]); ylim([0 0.48]);view(2);
 legend('Single SWRO unit','SWRO with ERD','Location', 'Northeast');ylabel('FW [m^3/h]','FontSize',16);xlabel('SEC_{net} [kWh/m^3]','FontSize',16);
 
-% Optimisation - case2 (epsilon constraint method)
+%% Optimisation - case2 (epsilon constraint method)
 %
 % Create Paretofront for SWRO+ERD 
 %
@@ -99,24 +101,27 @@ load("DATA_case2.mat")
 %
 startTime=datetime("now");
 A= [-1 1]; b= -.1; Aeq=[]; beq=[]; lb = [30;30]; ub = [70;70];
-option_mesh = 1e4; option_BVP = 1e-6; option_data = 1;
+option_mesh = 1e4; option_BVP = 1e-6; option_data = 2;
 foptions = optimoptions('fmincon','Display','off','Algorithm','interior-point', 'StepTolerance', 1e-12, 'OptimalityTolerance',1e-4, 'MaxFunEvals',100);
 rng default
 %
-FWmin=linspace(0.0015, 0.3769, 40); 
-X0=[linspace(37,70,40);linspace(36,50,40)];
+FWmin=linspace(0.0015, 0.3769, 16); 
+X0=[linspace(37,70,16);linspace(36,50,16)];
 %
-parfor i=1:40
+parfor i=1:16
     epsilon=1;
     minFW=-FWmin(i);
     x0=X0(:,i);
-    while epsilon > .9
+    while epsilon > .1
         [x_neu, minSEC] = fmincon(@(x)fun_1(x,option_data,'SEC',option_mesh,option_BVP),x0   ,A,b,Aeq,beq,lb,ub,@(x)nonlcon(x,'FW' ,option_data,option_mesh,option_BVP,-minFW ),foptions);
         [x0, minFW]     = fmincon(@(x)fun_1(x,option_data,'FW' ,option_mesh,option_BVP),x_neu,A,b,Aeq,beq,lb,ub,@(x)nonlcon(x,'SEC',option_data,option_mesh,option_BVP,-minSEC),foptions);
-        epsilon = max(norm(x0-x_neu)),
+        y_neu = fun_1(x_neu,option_data,'Pareto',option_mesh,option_BVP),
+        y_0   = fun_1(x0,option_data,'Pareto',option_mesh,option_BVP),
+        epsilon = min(norm(x0-x_neu), norm(y_neu-y_0));
     end
-    X2(:,i)=x0; %x_neu;
-    Y2(:,i)=fun_1([X1(:,i)],option_data,'sol',option_mesh,option_BVP);
+    X2(:,i)=x0; 
+    Y2(:,i)=fun_1([X2(:,i)],option_data,'sol',option_mesh,option_BVP);
+    i,
 end
 endTime=datetime("now");
 time2 = endTime - startTime;
@@ -126,8 +131,16 @@ scatter(Y2(1,:),Y2(2,:),'MarkerEdgeColor',[0 0 0],'MarkerFaceColor','b'); hold o
 grid on; xlim([-5.501 -.5]); ylim([0 0.48]);view(2);
 legend('Single SWRO unit','SWRO with ERD','Location', 'Northeast');ylabel('FW [m^3/h]','FontSize',16);xlabel('SEC_{net} [kWh/m^3]','FontSize',16);
 
+%% test 
 
-
+X0=[linspace(37,70,16);linspace(36,50,16)];
+A=zeros(1,16);B=A;
+parfor i=1:16
+    Y0=fun_1([X0(:,i)],option_data,'sol',option_mesh,option_BVP);
+    A(i)=Y0(1);
+    B(i)=Y0(2);
+end
+scatter(A,B,'MarkerEdgeColor',[0 0 0],'MarkerFaceColor','g'); hold on
 
 
 
diff --git a/fun_1.m b/fun_1.m
index 8fdab10d8129818059b53266e69a9ae28e0e0d7d..7179491c85a441412c1c141effa8bbaef195d21c 100644
--- a/fun_1.m
+++ b/fun_1.m
@@ -157,20 +157,20 @@ SWRO_Recovery =(J_f(end)./J_d(1))*100;     % SWRO freshwater recovery [%]
 PRO_Recovery = (1- Q_f(end)./Q_f(1))*100;  % PRO recovery rate [%]
 % warning flags:
     if FW < 0 
-        fprintf(2,' \nERROR: Waring: Freshwater production is negative! \n');
+        %fprintf(2,' \nERROR: Waring: Freshwater production is negative! \n');
     end
     if SWRO_Recovery > 100 
-        fprintf(2,' \nERROR: Waring: SWRO recovery is greater then 100 %% \n');
+        %fprintf(2,' \nERROR: Waring: SWRO recovery is greater then 100 %% \n');
     end
     if SWRO_Recovery < 0 
-        fprintf(2,' \nERROR: Waring: SWRO recovery is negative! \n');
+        %fprintf(2,' \nERROR: Waring: SWRO recovery is negative! \n');
     end
     if version(6)>1
         if PRO_Recovery > 100 
-            fprintf(2,' \nERROR: Waring: PRO recovery is greater then 100 %% \n');
+            %fprintf(2,' \nERROR: Waring: PRO recovery is greater then 100 %% \n');
         end
         if PRO_Recovery < 0 
-            fprintf(2,' \nERROR: Waring: PRO recovery is negative! \n');
+            %fprintf(2,' \nERROR: Waring: PRO recovery is negative! \n');
         end
     end
 %% Output of System
@@ -199,7 +199,7 @@ W_p4 = 1/LP_eff * (p_f(1)-pE)*(Q_f(1)*Z)./local_ro_f(1); W_p4 = W_p4*W_r;
         if pERD < 0; pERD=pMax; end  
         W_p3 = 1/HP_eff * (P_d(1)-pERD)*(J_ERD*swro_Z)/rho_ERD; W_p3=W_p3*swro_W_r; W_p4=0; W_t=0;
             if W_p3 < 0 
-                fprintf(2,' \nERROR: Waring: Pump 3 generates generates power! \n');
+                %fprintf(2,' \nERROR: Waring: Pump 3 generates generates power! \n');
                 sol.stats.maxerr =1000;
             end
     end