Illegal operation: pow_p( {convex}, {0.00015758} )

You have violated the rules:

help pow_p

 pow_p   Positive branch of the power function.
    pow_p(X,P) computes a convex or concave branch of the power function:
            P < 0: pow_p(X,P) = X.^P if X >  0, +Inf otherwise
       0 <= P < 1: pow_p(X,P) = X.^P if X >= 0, -Inf otherwise
       1 <= P    : pow_p(X,P) = X.^P if X >= 0, +Inf otherwise
    Both P and X must be real.
 
    Disciplined convex programming information:
        The geometry of pow_p(X,P) depends on the precise value of P,
        which must be a real constant:
                 P < 0: convex  and nonincreasing; X must be concave.
            0 <= P < 1: concave and nondecreasing; X must be concave.
            1 <= P    : convex  and nonmonotonic;  X must be affine.
        In all cases, X must be real.

However, your code, as shown, does not do anything with ph, whose computation involves the illegal operation. Did you omit the code which uses it because you got the error? If so, have you proven the optimization problem is convex?