Advertisement
ArBa

loop

Oct 26th, 2020 (edited)
2,411
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 3.31 KB | None | 0 0
  1. clear all;
  2. close all;
  3.  
  4. Sorting = true;
  5. SortingIdealPoint = true;
  6. sortCol = 3;
  7. Filtering = true;
  8.  
  9. params = 10;
  10. items = 1000;
  11. different = 40;
  12.  
  13. pointCompareArray = zeros(1, different);
  14. dimmCompareArray = zeros(1, different);
  15. timeArray = zeros(1, different);
  16.  
  17. for l=1:different
  18.     paretoOptimal = [];
  19.     x = dataCreate(params, items);
  20.     tic
  21.  
  22.     if Sorting && ~SortingIdealPoint
  23.         x = sortrows(x, sortCol);
  24.     end
  25.     if SortingIdealPoint
  26.         x = sortIdealPoint(x);
  27.     end
  28.  
  29.     dimmCompareCnt = 0;
  30.     pointCompareCnt = 0;
  31.  
  32.     while size(x, 1) > 0
  33.         y = 1;
  34.         j = 2;
  35.         fl = false;
  36.         while j <= size(x, 1)
  37.             pointCompareCnt = pointCompareCnt + 1;
  38.             dimmCompareCnt = dimmCompareCnt + 1;
  39.             a = x(y, :);
  40.             b = x(j, :);
  41.            
  42.             signum = sign(x(y, 1) - x(j, 1));
  43.             comparable = true;
  44.             for k = 2: size(x, 2)
  45.                 signumK = sign(x(y, k)-x(j, k));
  46.                 if signum == 0
  47.                     signum = signumK;
  48.                 end
  49.                 dimmCompareCnt = dimmCompareCnt + 1;
  50.                 if signum * signumK < 0
  51.                     comparable = false;
  52.                     break
  53.                 end
  54.             end
  55.             if comparable && signum > 0
  56.                 x(y, :) = [];
  57.                 y = j - 1;
  58.                 j = j - 1;
  59.                 fl = true;
  60.             elseif comparable
  61.                 x(j, :) = [];
  62.                 j = j - 1;
  63.             end
  64.             j = j + 1;
  65.         end
  66.        
  67.         checkPoint = x(y, :);
  68.         if fl == false || Filtering
  69.             paretoOptimal = [paretoOptimal; x(y, :)];
  70.             x(y, :) = [];
  71.         end
  72.        
  73.         if Filtering
  74.             j = 1;
  75.             while j < size(x, 1)
  76.                 pointCompareCnt = pointCompareCnt + 1;
  77.                 dimmCompareCnt = dimmCompareCnt + 1;
  78.                 signum = sign(checkPoint(1) - x(j, 1));
  79.                 comparable = true;
  80.                 for k = 2: size(x, 2)
  81.                     signumK = sign(checkPoint(k)-x(j, k));
  82.                     if signum == 0
  83.                         signum = signumK;
  84.                     end
  85.                     dimmCompareCnt = dimmCompareCnt + 1;
  86.                     if signum * signumK < 0
  87.                         comparable = false;
  88.                         break
  89.                     end
  90.                 end
  91.                 if comparable && signum < 0
  92.                     x(j, :) = [];
  93.                     j = j - 1;
  94.                 end
  95.                 j = j + 1;
  96.             end
  97.             if size(x, 1) == 1
  98.                 paretoOptimal = [paretoOptimal; x(1, :)];
  99.                 x(1, :) = [];
  100.             end
  101.         end
  102.     end
  103.  
  104.     dimmCompareArray(l) = dimmCompareCnt;
  105.     pointCompareArray(l) = pointCompareCnt;
  106.     timeArray(l) = toc;
  107. end
  108.  
  109.  
  110. fprintf('dimm compare\t mean: %f\tstd: %f\n', mean(dimmCompareArray), std(dimmCompareArray))
  111. fprintf('point compare\t mean: %f\tstd: %f\n', mean(pointCompareArray), std(pointCompareArray))
  112. fprintf('time\t\t mean: %f\tstd: %f\n', mean(timeArray), std(timeArray))
  113. fprintf('%f\t%f\t%f\t%f\t%f\t%f\n', mean(pointCompareArray), std(pointCompareArray), mean(dimmCompareArray), std(dimmCompareArray) ,mean(timeArray), std(timeArray))
  114.  
  115.  
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement