multi- objective solution for specified range of output values for the two functions

2 views (last 30 days)
Hello Alan Weiss sir,
I want to optimize two equations simultaneously having one independent variable (n), such that I want to maximize y(1) and minimize y(2), so I assigned a negative sign to y(1).
For this, I have defined the two functions in a function file: multi_fault.m like as follows:
function y = multi_fault(n)
a = -97.466; b = 1.3921; x0 = 1.7766; y0 = 93.7192;
a1 = -110228.0527; b1 = 213.913; x01 = 1.5279; y01 = 110230.5287;
y(1) = -(y0+a*exp(-0.5*((n-x0)/b)^2));
y(2) = (y01+a1*exp(-0.5*((n-x01)/b1)^2));
Now, I am using gamultiobj function to get optimized function values within variable range 1.5<n>6.
ObjectiveFunction = @multi_fault;
[n,fval] = gamultiobj(ObjectiveFunction,nvars,[],[],[],[],1.5,6);
It is giving correct result, such that it is giving a series of optimized combination values for y1 and y2 for different values of n.
My problem is that, I want to define the range of output values of the two functions also. Like
-95<y(1)<-80 and 5<y(2)<25.
After optimization, it should give only that n value satisfying these output function values.
Sir, I don't know how to set this output function limit. I have tried fgoalattain and other functions , but do not get the right result. In summary, I also want to define the particular values of the two functions to be optimized rather simply maimizing/ minimizing for the given range of input values.
Kindly help me to solve this. I need it urgently please.
Thanx in advance.....

Accepted Answer

Alan Weiss
Alan Weiss on 27 Oct 2014
I know of no simple way of obtaining what you want within the optimization. But it seems to me that you could apply a filter after solving that discards all points on the Pareto front that are outside the ranges you set. In this case, I suggest that you increase the population a bit so that you have plenty of points after discarding the ones outside your desired range.
Alan Weiss
MATLAB mathematical toolbox documentation
  2 Comments
smriti garg
smriti garg on 27 Oct 2014
Thanx for the reply....Ok, I got it what you suggest.
Further, I want to ask whether 'fgoalattain' can be used for defining multiobjective functions values, say, y(1) = -90, y(2) = 15 and ...finding the value of variable 'n' within bound 1.5<n>6 ?
Smriti
Alan Weiss
Alan Weiss on 27 Oct 2014
Edited: Alan Weiss on 27 Oct 2014
Yes, fgoalattain can address this kind of problem by using nonlinear inequality constraints for the objective functions. There is a relatively new example here on plotting a Pareto front using fgoalattain.
Of course, I might have misunderstood you. Both fgoalattain and gamultiobj accept bounds on the independent variable n.
Good luck,
Alan Weiss MATLAB mathematical toolbox documentation

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!