help pareto front?
3 次查看(过去 30 天)
显示 更早的评论
what does the 3rd line in 2nd function 'pickindex' mean? and what is 'k'?
0 个评论
回答(2 个)
Brendan Hamm
2016-4-21
The function simple_mult contains two objective functions and returns the objective function evaluation of both of these objectives. That is
f(1) = sqrt(1+x.^2);
f(2) = 4 + 2*sqrt(1+(x-1).^2);
Since these functions will have different minimums we want to run the optimization on each of them separately. To do this we call this function inside of pickindex and then return only one of the solutions. So if k = 1, we are returned the sqrt(1+x.^2) evaluated at x and if k = 2, we get 4 + 2*sqrt(1+(x-1).^2) evaluated at x. Since the return depends on k, when we run the minimization fminbnd with a specified value of k we are minimizing the corresponding objective function from simple_mult.
Brendan Hamm
2016-4-21
编辑:Brendan Hamm
2016-4-21
1. Do your objective functions take exactly one input argument? I assume you have more based upon this error. 2. I can't really point out what the issue is with your objective functions without seeing your code. Please place your code in a comment and make sure to format it with the { } Code button (located at the top of the text box where you type your comments).
You can see that the code works with the following example. Try this create a function file called runPareto.m and define the file to look exactly as below:
function goal = runPareto
k = 1;
[min1,minfn1] = fminbnd(@(x)pickindex(x,k),-1,2);
k = 2;
[min2,minfn2] = fminbnd(@(x)pickindex(x,k),-1,2);
goal = [min1,min2];
end
function f = simple_mult(x)
f(:,1) = sqrt(1+x.^2);
f(:,2) = 4 + 2*sqrt(1+(x-1).^2);
end
function z = pickindex(x,k)
z = simple_mult(x); % evaluate both objectives
z = z(k); % return objective k
end
Now at the command line you can run:
goal = runPareto
and this should return to you the vector [0,1] (i.e. the x that minimizes each function).
12 个评论
Brendan Hamm
2016-5-21
So, what exactly is the code you sent. There seem to be several files which somebody else wrote and one file which is un-commented. I am not sure how you intended these files to be called or what the relation is to your original problem which you posted. I am not going to pour through hundreds of lines of code searching for a similarity to the pareto front problem you mentioned. Provide some information if you would like me to spend any of my time on this.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Multiobjective Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!