Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- close all;
- clear all;
- Sorting = true;
- sortCol = 3;
- Filtering = false;
- x = xlsread('data.xlsx','Decisions');
- x = x(:,2:5);
- % x = xlsread('20181015-1', 'Arkusz1').';
- % x = xlsread('20181015-2', 'Arkusz1').';
- % x = x(3:end, :);
- all = x;
- paretoOptimal = [];
- x = dataCreate(params, items);
- if Sorting
- x = sortrows(x, sortCol);
- end
- while size(x, 1) > 0
- y = 1;
- j = 2;
- fl = false;
- while j <= size(x, 1)
- signum = sign(x(y, 1) - x(j, 1));
- comparable = true;
- for k = 2: size(x, 2)
- signumK = sign(x(y, k)-x(j, k));
- if signum == 0
- signum = signumK;
- end
- if signum * signumK < 0
- comparable = false;
- break
- end
- end
- if comparable && signum > 0
- x(y, :) = [];
- y = j - 1;
- j = j - 1;
- fl = true;
- elseif comparable
- x(j, :) = [];
- j = j - 1;
- end
- j = j + 1;
- end
- checkPoint = x(y, :);
- if fl == false || Filtering
- paretoOptimal = [paretoOptimal; x(y, :)];
- x(y, :) = [];
- end
- if Filtering
- j = 1;
- while j < size(x, 1)
- signum = sign(checkPoint(1) - x(j, 1));
- comparable = true;
- for k = 2: size(x, 2)
- signumK = sign(checkPoint(k)-x(j, k));
- if signum == 0
- signum = signumK;
- end
- dimmCompareCnt = dimmCompareCnt + 1;
- if signum * signumK < 0
- comparable = false;
- break
- end
- end
- if comparable && signum < 0
- x(j, :) = [];
- j = j - 1;
- end
- j = j + 1;
- end
- if size(x, 1) == 1
- paretoOptimal = [paretoOptimal; x(1, :)];
- x(1, :) = [];
- end
- end
- end
- % Rysowanie wykresu
- aH = axes;
- oneMat = ones(size(all,1),1);
- xL = get(aH,'XLim');
- yL = get(aH,'XLim');
- zL = get(aH,'XLim');
- hold on;
- % Rzutowania punktów w 3d na płaszczyzny 2d
- plot3(oneMat .* xL(1), all(:,2), all(:,3), '.b');
- plot3(all(:,1), oneMat .* yL(1), all(:,3), '.b');
- plot3(all(:,1), all(:,2), oneMat .* zL(1), '.b');
- oneMat = ones(size(x,1),1);
- plot3(oneMat .* xL(1), x(:,2), x(:,3), '.r');
- plot3(x(:,1), oneMat .* yL(1), x(:,3), '.r');
- plot3(x(:,1), x(:,2), oneMat .* zL(1), '.r');
- grid on
- hold off;
- % Wykres punktów w 3d
- scatter3(all(:,1),all(:,2),all(:,3),'filled')
- hold on;
- scatter3(x(:,1),x(:,2),x(:,3),'red','filled')
- % Zaznaczenie punktu idealnego - zielony punkt na wykresie
- scatter3(min(x(:,1)),min(x(:,2)),min(x(:,3)),'green','filled'),
- plot3(oneMat .* xL(1), min(x(:,2)), min(x(:,3)), '.g');
- plot3(min(x(:,1)), oneMat .* yL(1), min(x(:,3)), '.g');
- plot3(min(x(:,1)), min(x(:,2)), oneMat .* zL(1), '.g');
- % Zaznaczenie nadiru - żółty punkt na wykresie
- scatter3(max(x(:,1)),max(x(:,2)),max(x(:,3)),'yellow','filled'),
- plot3(oneMat .* xL(1), max(x(:,2)), max(x(:,3)), '.y');
- plot3(max(x(:,1)), oneMat .* yL(1), max(x(:,3)), '.y');
- plot3(max(x(:,1)), max(x(:,2)), oneMat .* zL(1), '.y');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement