forked from ilog-ecnu/PCPSO
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWOF_transformationFunctionMatrixForm.m
87 lines (81 loc) · 4.06 KB
/
WOF_transformationFunctionMatrixForm.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
function value = WOF_transformationFunctionMatrixForm(xPrime,weight,maxVal,minVal,method)
% Implements the transformation functions used in WOF. Three
% methods can be chosen. The p-Value and Multiplication-transformations
% have been introduced in publication (3), see the WOF.m main file.
% The Intervall-transformation (parameter free) has been introduced in
% publication (2), see above. The interval-intersection method from (3)
% is currently not implemented.
% -----------------------------------------------------------------------
% Copyright (C) 2020 Heiner Zille
%
% This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0
% International License. (CC BY-NC-SA 4.0). To view a copy of this license,
% visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or see the
% pdf-file "License-CC-BY-NC-SA-4.0.pdf" that came with this code.
%
% You are free to:
% * Share ? copy and redistribute the material in any medium or format
% * Adapt ? remix, transform, and build upon the material
% Under the following terms:
% * Attribution ? You must give appropriate credit, provide a link to the
% license, and indicate if changes were made. You may do so in any reasonable
% manner, but not in any way that suggests the licensor endorses you or your use.
% * NonCommercial ? You may not use the material for commercial purposes.
% * ShareAlike ? If you remix, transform, or build upon the material, you must
% distribute your contributions under the same license as the original.
% * No additional restrictions ? You may not apply legal terms or technological
% measures that legally restrict others from doing anything the license permits.
%
% Author of this Code:
% Heiner Zille <[email protected]> or <[email protected]>
%
% This code is based on the following publications:
%
% 1) Heiner Zille
% "Large-scale Multi-objective Optimisation: New Approaches and a Classification of the State-of-the-Art"
% PhD Thesis, Otto von Guericke University Magdeburg, 2019
% http://dx.doi.org/10.25673/32063
%
% 2) Heiner Zille and Sanaz Mostaghim
% "Comparison Study of Large-scale Optimisation Techniques on the LSMOP Benchmark Functions"
% IEEE Symposium Series on Computational Intelligence (SSCI), IEEE, Honolulu, Hawaii, November 2017
% https://ieeexplore.ieee.org/document/8280974
%
% 3) Heiner Zille, Hisao Ishibuchi, Sanaz Mostaghim and Yusuke Nojima
% "A Framework for Large-scale Multi-objective Optimization based on Problem Transformation"
% IEEE Transactions on Evolutionary Computation, Vol. 22, Issue 2, pp. 260-275, April 2018.
% http://ieeexplore.ieee.org/document/7929324
%
% 4) Heiner Zille, Hisao Ishibuchi, Sanaz Mostaghim and Yusuke Nojima
% "Weighted Optimization Framework for Large-scale Mullti-objective Optimization"
% Genetic and Evolutionary Computation Conference (GECCO), ACM, Denver, USA, July 2016
% http://dl.acm.org/citation.cfm?id=2908979
%
% This file is intended to work with the PlatEMO framework version 2.5.
% Date of publication of this code: 06.04.2020
% Last Update of this code: 06.04.2020
% A newer version of this algorithm may be available. Please contact the author
% or see http://www.ci.ovgu.de/Research/Codes.html.
%
% The files may have been modified in Feb 2021 by the authors of the Platemo framework to work with the Platemo 3.0 release.
% -----------------------------------------------------------------------
value = xPrime;
switch method
case 1 %multiplication
value = xPrime*weight;
case 2 %p-value
pWert = 0.2;
value = xPrime+pWert.*(weight-1.0).*(maxVal-minVal);
case 3 %interval
interval = xPrime - minVal;
value = minVal + weight .* interval;
interval = maxVal - xPrime;
value(weight > 1.0) = xPrime(weight > 1.0) + (weight(weight > 1.0)-1.0) .* interval(weight > 1.0);
end
%do repair
if value < minVal
value = minVal;
elseif value > maxVal
value = maxVal;
end
end