These days I have been working on one optimization problem to solve a set of linear equations AF=k, where A is m x N matrix, and F and k are both vectors of length N. Typically m = 12, N = 50, so it is an under determined problem. The constraints on F is that F(1) = 0, F(N) = 1, and F is a smooth, non-negative function and increases monotonically from zero to one. The CVX part of the code is as follows:
variable F(N) nonnegative
subject to % specify monotonically increasing feature F(1) == 0.0; F(N) == 1.0; F(2:N)-F(1:N-1) >= 0.0;
The second term in the penalty function constrains the vector or function F to be smooth and I typically set the smoothing factor to be unity ‘smooth = 1’. For most of the cases I studied, CVX does minimize the penalty function and return a smooth and monotonically increasing function F. However, there’s one case I’m studying for which CVX does not solve the linear equations AF = k, which can be told by comparing the input k vector and the forward calculated k vector based on F returned by CVX. At this point, I believe the reason why it does not solve the problem is that the magnitude of the matrix elements in A is very small. In fact, many elements are very close to zero, and other elements with significant values are around 0.05. For my other successfully solved optimization problems, I found the significant values of the matrix A is around 0.12.
Has anyone encountered this type of problem before? I tried to multiply some rows of A and k by some factors in hope of increasing the coefficients and solving the problem, but it still does not work. Any suggestions? Thank you very much!