How to find the feasible solution space of a nonlinear constraint optimization problem?
Show older comments
I want to find the feasible objective space of a Multi objective nonlinear constraint optimisation problem. The problem is in the following form.
min [F1(X),F2(X)]
hk(X)=0 k=1,...,ne % equality constraints
gi(X)≤0 i=1,...,n % Inequality constraints.
Ul<X<UB % UB and UL are upper and lower bounds of X
where X=[x1,x2,...,xj]
It should be noted that, some optimisation variables, (`some x`) are not bounded at the Ul<X<UB . But they will be restricted through the equality and inequality constraints.
SO basically as a possible solution I think that I should generate some random numbers for X=[x1,...,xn] first and then check the constraints. if generated point satisfies the constraint, so it is a feasible point in the solution space. Thus, I can pass it to the objective function to get its value [F1(X),F2(X)] in order for obtaining the feasible objective space. But I don't know how to check the constraint. Any idea?
Thanks for your help.
Accepted Answer
More Answers (1)
Alan Weiss
on 5 Jun 2015
0 votes
I am not sure what you are asking. It seems to me that you check the constraints by evaluating hk(X) and gi(X).
But you are unlikely to satisfy your equality constraints with a random point. I suggest that, if this is really the way you want to proceed, you first solve a feasibility problem. Set your objective function to @(x)0, and give only your nonlinear equality constraint to fmincon. Then for every initial guess you enter, you will get a "solution" that satisfies the nonlinear equality constraints. From there you can proceed as you outlined.
But I would not do this at all. I would use fgoalattain to try to find a tradeoff curve between my two objective functions, along the lines of this example.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
5 Comments
Jamais avenir
on 5 Jun 2015
Alan Weiss
on 5 Jun 2015
I'm sorry, but I am not at all sure that I understand you.
If you have a linear inequality constraint of the form
A*x <= b
then all you have to do to check it is to take your point x, and calculate A*x - b.
Similarly, if you have a set of nonlinear inequality constraints h1(x), h2(x), etc, then all you have to do is evaluate these functions at your test point x.
But you already knew that, so all this shows is why I do not understand what you are asking.
Alan Weiss
MATLAB mathematical toolbox documentation
Jamais avenir
on 5 Jun 2015
Alan Weiss
on 8 Jun 2015
Again, I have a great deal of trouble understanding what you mean when you say "Unfortunately, the constraints are so tight, so a generated random guess doesn't exceed to a solution. However, with a proper initial guess, it converge to a solution."
Let me reiterate my suggestion.
- Construct a large number of initial points x0 in your solution space.
- For each initial point, use fmincon to solve the auxiliary nonlinear problem of minimizing the function @(x)0 subject to all of your constraints.
- Take all the resulting feasible points and plot them in your 2-D objective space. This will give you a series of dots that might cover a fair portion of your feasible objective space.
- If you have the Pareto front, you can plot that, too, and see whether the resulting feasible points trace out something close to the front.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
Jamais avenir
on 14 Jun 2015
Categories
Find more on Choose a Solver in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!