Before asking, let me show my pseudocode (as known as difference of convex (DC) programming):
K = 10; // given parameter Pmax = 10; // given parameter Pmax_each = 1.3*ones(K,1); // given parameter P_prev = Pmax/K*ones(K,1); // Initialize P (which is the variable that I want to optimize.) fobj_prev = inf; iter = 0; while iter < 100 iter = iter + 1; clear cvx_P cvx_precision high cvx_begin quiet variable cvx_P(K) fobj = 0; for k_in_cvx = 1:K fobj = fobj + ...; // fobj is defined as the sum of the function of cvx_P and P_prev over all k. end minimize ( fobj ) subject to sum(cvx_P) <= Pmax; cvx_P(:) <= Pmax_each(:); cvx_P(:) >= 0 cvx_end if norm(fobj_prev - fobj) < 1e-8 break else fobj_prev = fobj; P_prev = cvx_P; end end
The “fobj” function above has a term with a very large coefficient (randomly generated) and it is plugged into the logarithmic function. Due to this, results such as “Inaccurate/Solved, Inaccurate/Unbounded, Inaccurate/Infeasible” occurred very often depending on the value of the coefficients. However, by adding the phrase “cvx_precision high,” I could resolve the inaccurate issue, so that the problem result has been changed to “Solved.” Nevertheless, I am worried about some situations where the results are still in “Inaccurate” status.
Is there a command that hides most of the results but shows whether “inaccurate” or “accurate” only?
The “quiet” command I use hides everything, but I only want to check if the results are correct or inaccurate without any diagnostic results.