Clear Filters
Clear Filters

How to loosen equation constaints in my fmincon process?

3 views (last 30 days)
My objective function (including analytical gradients) and equality constaints are a bit too bulky to present them here.
I start fmincon process from various initial infeasable points using all available algorithms and always observe the same behavior. fmincon always finds a fesable point (each time different) and stops without any noticable reduction in objective function and with:
Optimization completed because the objective function is non-decreasing in ↵feasible directions, to within the value of the optimality tolerance,
↵and constraints are satisfied to within the value of the constraint tolerance.↵↵<stopping criteria details>↵↵Optimization completed:
The first-order optimality measure, 1.230569e-17, is less↵than options.OptimalityTolerance = 1.000000e-06, and the maximum constraint violation,↵9.663546e-30, is less than options.ConstraintTolerance = 1.000000e-02.↵↵'
All found feasable points render almost the same minimal objective function values. Taking contours by various parameter pair in the areas around my initial points show that the objective function values differ in times.
Here I have loosened ConstraintTolerance to 1e-2 as above, but fmincon seems to be obsessed with oversatisfying constraints. I tried to reduce OptimalityTolerance. I took a square of the ceq (there are 7 equations) in order to achieve constraints satisfaction ealier. All in attempt to loosen constraints and force objective function minimization. It does not happen.
I appreciate that somehow all feasable points may have very narrow range of the objective function, but I would find it very suprising. Any suggestions on how to effectively reduce the effect of the constraints.
Valeri Aronov
Valeri Aronov on 6 Dec 2021
There is none. The observations prompt rather that there is perhaps a manifold where the objective function has near-minimal values. Very strange.
Here is the set problem in a few words.
The objective function is an integral sensitivity of transfer function magnitude sensitivities to linear system parameters. The constraints are the conditions of polynomial identity of parameters to a known good solution for minimal sensitivities. 7 equations express equality of every coefficient in the numerator and the denominator polynomials to their counterparts in the targeted transfer function. I am trying to improve on the known solution.
Matt J
Matt J on 7 Dec 2021
The observations prompt rather that there is perhaps a manifold where the objective function has near-minimal values. Very strange.
Nothing strange about that. Any convex function with non-unique minima has such a manifold, at least locally.

Sign in to comment.

Answers (1)

Matt J
Matt J on 6 Dec 2021
Edited: Matt J on 6 Dec 2021
It doesn't sound like you need to loosen your tolerances. It sounds like you need to tighten them or, more preferably, rescale your objective and constraints to more natural units.
Judging from these numbers 1.230569e-17 and 9.663546e-30, it looks like your objective and constraint functions are scaled to produce very small scale values (<1e-17) at just about any input point x that you supply. Therefore, the stopping tolerances can't distinguish well between points that are optimal/feasible and those that aren't.
You need to scale up your objective and constraints by about 17 orders of magnitude. Or you can scale down your tolerance parameters, though I prefer the former.
Matt J
Matt J on 7 Dec 2021
Then another possibility is that you have discontinuities or non-differentiabilities in your objective function. It's hard to diagnose anything without at least a mathematical description of the objective and constraints.
Valeri Aronov
Valeri Aronov on 8 Dec 2021
The functions involved are all differentiable, with no discontinuities. The gradient of the objective function is checked and approved by fmincon itself.
May I dare to attach two files for your review: the script to generate the obj function and the constraints (Schoeffler_Script) and the function to run the fmincon process. I run the latter by calling this:
Optimize_Schoeffler(logspace(log10(3500),log10(4500),15), 1.1*targetX, @Schoeffler_and_Grad_Func, @SchoefflerConstraintsFunc)
I was changing the coefficient of the second parameter to 1.05, 2, 2.8 (for example) for using a variety of initial points. I observed fmincon inability to reach feasibility when this coefficient was much greater than those mentioned.

Sign in to comment.


Find more on Get Started with Optimization Toolbox in Help Center and File Exchange




Community Treasure Hunt

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

Start Hunting!