The object to be optimized is a discontinuous function, which can lead to serious drags in the optimization results, this picture shows the function I need to get from CVX.
the red line is ORIGIN and the blue one is RECONSTRUCTION , We can see that there is a drag at the break point.
cvx_begin
variable x(n);
minimize(norm(S-T*x))
subject to
cvx_end
and for X is the discontinuous function that I want to restore, S and T is what I know.
Thank you for your answer and suggestion!
the problem is very simple there is S=T * I ,We know T and S so want to get the I, always the T is not a n*n matrix so I can’t solve it by T inversion .
is that a linear least squares problem? I don’t know, because I don’t understand what all your symbols are. But how would a linear least squares model match the curves you plotted? So you need to clarify what all the symbols are.
Thank you for your answer and suggestion!
Maybe I need to clear my question again, in the beginning with T (m * n) and I (n * 1), we get S = T * I (this is usually a unknown physical process, but we know T matrix, and then we can get S in some ways ). so in fact, we know that S(m * 1) and T(m * n), need to work out the I(n * 1), we use CVX tools, but because of I is a discontinuous vector, The resulting I has some drags at the discontinuity point(The part that comes out of the green coil).
the red line is ORIGIN and the blue one is RECONSTRUCTION
The preceding will handle piecewise linear models, which are MIDCP representable. But not piecewise nonlinear models, which are not MIDCP representable (and for which you would need an MINLP solver).