transform linear inequality constraints into bound constraints for optimization solvers
Suppose there are linear inequality constraints and are the parameters optimized by fmincon, lsqnonlin, or friends.
Since linear inequality constraints can generally not be enforced at intermediate iterations, I want to transform them into bound constraints which can be enforced at all iterations.
General idea:
If is dense and has rows (i.e, there are constraints), then we can make a "change of variables"
, where are the rows of , for instance, .
This leads to simple bound constraints . Does that make sense?
Specific problem:
My parameters represent interpolation values corresponding to interpolation points and the resulting interpolation function is supposed to be convex on the interpolation domain. For the specific case of linear interpolation, @Matt J showed that convexity is realized by increasing second order finite differences
(which represents a set of linear inequality constraints)
This can be transformed into simpler bounds on the new parameters by the change of variables
with
What I am really working with are smoother B-spline basis functions of higher degree using spapi function. @Bruno Luong showed that the linear inequality matrix is given by
% k: spline order, x: points where values y live
B = spapi(k,x,eye(length(x)));
Bdd = fnder(B,2);
A = Bdd.coefs’
and
is a sufficient condition for convexity.
I am wondering whether a change of variables (like for linear interpolation functions) can be applied here to transform the inequalities into bounds?
Any opinions are greatly appreciated!Suppose there are linear inequality constraints and are the parameters optimized by fmincon, lsqnonlin, or friends.
Since linear inequality constraints can generally not be enforced at intermediate iterations, I want to transform them into bound constraints which can be enforced at all iterations.
General idea:
If is dense and has rows (i.e, there are constraints), then we can make a "change of variables"
, where are the rows of , for instance, .
This leads to simple bound constraints . Does that make sense?
Specific problem:
My parameters represent interpolation values corresponding to interpolation points and the resulting interpolation function is supposed to be convex on the interpolation domain. For the specific case of linear interpolation, @Matt J showed that convexity is realized by increasing second order finite differences
(which represents a set of linear inequality constraints)
This can be transformed into simpler bounds on the new parameters by the change of variables
with
What I am really working with are smoother B-spline basis functions of higher degree using spapi function. @Bruno Luong showed that the linear inequality matrix is given by
% k: spline order, x: points where values y live
B = spapi(k,x,eye(length(x)));
Bdd = fnder(B,2);
A = Bdd.coefs’
and
is a sufficient condition for convexity.
I am wondering whether a change of variables (like for linear interpolation functions) can be applied here to transform the inequalities into bounds?
Any opinions are greatly appreciated! Suppose there are linear inequality constraints and are the parameters optimized by fmincon, lsqnonlin, or friends.
Since linear inequality constraints can generally not be enforced at intermediate iterations, I want to transform them into bound constraints which can be enforced at all iterations.
General idea:
If is dense and has rows (i.e, there are constraints), then we can make a "change of variables"
, where are the rows of , for instance, .
This leads to simple bound constraints . Does that make sense?
Specific problem:
My parameters represent interpolation values corresponding to interpolation points and the resulting interpolation function is supposed to be convex on the interpolation domain. For the specific case of linear interpolation, @Matt J showed that convexity is realized by increasing second order finite differences
(which represents a set of linear inequality constraints)
This can be transformed into simpler bounds on the new parameters by the change of variables
with
What I am really working with are smoother B-spline basis functions of higher degree using spapi function. @Bruno Luong showed that the linear inequality matrix is given by
% k: spline order, x: points where values y live
B = spapi(k,x,eye(length(x)));
Bdd = fnder(B,2);
A = Bdd.coefs’
and
is a sufficient condition for convexity.
I am wondering whether a change of variables (like for linear interpolation functions) can be applied here to transform the inequalities into bounds?
Any opinions are greatly appreciated! splines, optimization, fmincon, spapi, interpolation MATLAB Answers — New Questions