pow_p can’t support

object fromula

Presuming z_k is the only variable, and \gamma_k \ge 0, \alpha \ge 0, then I believe the expression is convex for z_k \ge 0, but not for z_k < 0.

Because it is not convex over its entire natural domain, it seems doubtful this can be reformulated as a DCP-compliant expression. I don’t rule out the possibility that one of the more clever conic reformulators among the forum readers can figure out how to do so.

As for the question in the topic title, if `x`

is a CVX variable or an affine expression, `x^1.15`

can be entered directed as such in CVX, and is a convex expression. But that is not necessarily usable in a larger expression which does not allow a convex sub-expression, as in the expression in your first post.

**Edit**: The very clever conic reformulator @Michal_Adamaszek did indeed come up with a conic (DCP) reformulation,under my assumptions above, in his answer below.

Thank you for your reply very much!

Am I the first person to use the term "“conic reformulator”. There were no google hits just now. Although I am surprised that Google didn’t find this page.

@Michal_Adamaszek

@hfriberg

@Erling

@Joachim_Dahl

I, at best, qualify for conic reformulator, J.V. (junior varsity)

In the CVX code you showed H looks like a variable and z_k looks like some norm/sum of squares. So it seems very unlikely that will be convex or representable.

Moreover you write your constraint as `log(1+gama_k*inv_pos(...))>=0`

which is confusing since it is either always satisfied or not depending just on `gama_k`

.

On the other hand if you really just have constant H and z_k is a scalar variable as in @Mark_L_Stone 's answer , then you are essentially asking for a model of t\geq \mathrm{log}(1+\frac{1}{x^\alpha}) and that should be possible the same way as log-sum-inv in 5 Exponential cone optimization — MOSEK Modeling Cookbook 3.3.0

Sorry, i am first use cvx tool to slove problem.

And original problem is

and my code is

```
clc; clear;
Q = 1e5;%throughput
Qk = [0.1,0.1,0.1];
%UAV参数
Wei = 20;%UAV重量
p_air = 1.225;%air density kg/m^3
R_UAV = 0.4;%UAV扇叶半径
A_UAV = 0.503;%UAV扇叶面积
V_BLADE = 300;%叶片角速度
U_tip = 120;%叶片尖端速度
b = 4;%叶片数量
c = 0.0157;%叶片或翼型弦长度
s = 0.05;%Rotor solidity
S_PF = 0.0151;%Fuselage euivalent flat plate area in m^2
d0 = 0.6;%Fuselage drag ratio
k = 0.1;%Incremental correction factor to induced power
v0 = 4.03;%Mean rotor induced velocity in hover
f_p = 0.012;%Profile drag coefficient
%位置信息
v_max = 30;%UAV最大飞行速度
qi = [0;
0];%UAV initial location
qf = [800;
800];%UAV final location
%通信相关参数
H = 100;%UAV的高度
B = 1e6;%带宽
gama_0 = 52.5;%信噪比
Pc = 5;%UAV通信功率
P = 20;%发射功率
%GN参数
K_GN = 3;%GN numbers GN1 = [500;500];%GN1的位置GN2 = [390;900];%GN2的位置GN3 = [390;100];%GN3的位置
wk = [390,500,390;
100,500,900];%GN location
%LOS
C = 10;%环境参数
D = 0.6;
k_los = 0.2;%附加因子
a = 2.3;%路径损失的指数
P0 = (f_p/8)*p_air*s*A_UAV*V_BLADE^3*R_UAV^3;%P0 constant
Pi = ((1+k)*Wei^(3/2))/sqrt(2*p_air*A_UAV);%Pi constant
Ph = P0+Pi;%Ph
%%%%%%%%%%%%%%%%%%%%%%%Algorithm1
qk = [0,390,500,390,800;
0,100,500,900,800];%initial location
qk_l = [0,390,500,390,800;
0,100,500,900,800];%iteration location
pklos=1/(1+C*exp(-D*(90-C)));
gama_k = (pklos+(1-pklos)*k_los)*gama_0; %cal gama_K
v_mr = 18;%Vmr
E0_new = P0*(1/v_mr+3*v_mr/U_tip^2)+Pi*(sqrt(sqrt(v_mr^(-4)+1/(4*v0^2))-1/(2*v0^2)))+1/2*d0*p_air*s*A_UAV*v_mr^2;%E0*
cvx_clear;
for cy=1:3;
qk_l1=qk_l;%update hovering location
cvx_begin gp
variables Dtr(1) yita_k(1,3) qk_l(2,5);
expression temp(1,3);
for i=1:K_GN
temp(:,i) = Qk(:,i)*inv_pos(yita_k(:,i));
end
OBJ = E0_new*Dtr+(Ph+Pc)*sum(temp);
minimize(OBJ);
subject to
Dtr_l = 0;
for i=1:K_GN
Dtr_l=Dtr_l+norm(qk_l1(:,i+1)-qk_l1(:,i));
end
Dtr_l<=Dtr;
for i=1:K_GN
yita_k(:,i)>=0;
end
for i=1 :K_GN
temp_bk=(gama_k*(a/2)*(log(exp(1))/log(2)))*inv_pos((pow_pos(H,2)+pow_pos(norm(qk_l1(:,i+1)-wk(:,i)),2))*(pow_pos((pow_pos(H,2)+pow_pos(norm(qk_l1(:,i+1)-wk(:,i)),2)),a/2)+gama_k));
yita_k(:,i)<=log(1+gama_k*inv_pos(pow_pos(pow_pos(H,2)+pow_pos(norm(qk_l1(:,i+1)-wk(:,i)),2),a/2)))/log(2)-temp_bk*(pow_pos(norm(qk(:,i+1)-wk(:,i)),2)-pow_pos(norm(qk_l1(:,i+1)-wk(:,i)),2));
end
cvx_end
end
```

but cvx answer so strange