The object function and constraints:




My programs:
clc
clear all
M = 5;
ui = [0 ,0];
uf = [5000 ,5000];
Hu = 100;
Hg = 25;
c1 = 9.26e-4;
c2 = 2250;
C = 10;
D = 0.6;
k = 0.2;
Gm = 30;
N0 = 8;
Kc = 15;
delta2 = -110;
belta0 = -60;
alpha = 2.2;
B = 1;
samax = 20;
N = 400;
Vmax = 50;
Vmin = 3;
amax = 5;
Pmax = 1;
Emax = 21;
g = 9.8;
gamma = 52.5;
GU = [1000 3500 4800 4000 1800;1800 4500 3200 1000 300]; % gm
plot(ui(1,1),ui(1,2),‘o’,‘MarkerEdgeColor’,‘b’,‘MarkerSize’,12)
text(ui(1,1),ui(1,2),‘ui’)
hold on
plot(uf(1,1),uf(1,2),‘o’,‘MarkerEdgeColor’,‘b’,‘MarkerSize’,12)
text(uf(1,1),uf(1,2),‘uf’);
for b = 1:5
plot(GU(1,b),GU(2,b),’^’)
text( GU(1,b),10+ GU(2,b),[‘GBS s’,num2str(b)]);
end
xlabel(‘x(m)’)
ylabel(‘y(m)’)
axis([0 5000 0 5000])
axis square
grid on
T = norms(uf(1,1)-ui(1,1))/Vmax; %飞行总时间
delta_t = T/N;%最大速度下每个小路径所花的时间
m = round(norms(uf(1,1)-ui(1,1))/Vmax/delta_t);
qmr = zeros(2,N);
for i = 1:m
qmr(:,i)=ui(1,1) + (uf(1,1) - ui(1,1))./m.*i;%对qmr进行赋值
end
qmr(:,N) = [5000 ,5000];
%qmr 是从起点到终点的各个节点的坐标
plot(qmr(1,1:N),qmr(2,1:N),“b-”,‘linewidth’,2)
un0 = qmr;
bmn0 = ones(5,N);
fmn0 = ones(5,N);
taon = 0.01.*ones(1,N);
vn = ceil(rand(1,N)*10);
v0 = 15;
an = ones(1,N);
Pn = ones(1,N);
Amnr = zeros(5,N);
for m = 1:5
for n = 1:N
Amnr(m,n) = pow_pos(((Hu - Hg)^2 + pow_pos(norms(un0(:,n)-GU(:,m)),2)),alpha/2);
end
end
Imnr = zeros(5,N);
for m = 1:5
for n = 1:N
Imnr(m,n) = B*log2(1 + (Pn(1,n).*gamma)/Amnr(m,n));
end
end
Jmnr = ones(5,N);
for m = 1:5
for n = 1:N
Jmnr(m,n) = (B.*Pn(1,n).gamma.(alpha/2)log2(exp(1)))/((Hu - Hg)^2 + pow_pos(norms(un0(:,n)-GU(:,m)),2)(Amnr(m,n) + Pn(1,n).*gamma));
end
end
Rmin = 200;
cvx_begin
variable un_opt(2,N) nonnegative;
variable bmn_opt(5,N) nonnegative;
variable fmn_opt(5,N);
variable taon_opt(1,N) nonnegative;
variable yita nonnegative;
maximize yita
subject to
for m = 1:5
for n = 1:N
Imnr(m,n) - Jmnr(m,n)*(pow_pos( norms(un_opt(:,n)-GU(:,m)),2) - pow_pos(norms(un0(:,n)- GU(:,m)),2)) >= fmn_opt(m,n);
end
end
sum(sum((bmn0(:,1:N)+fmn0(:,1:N)).*(bmn_opt(:,1:N)+fmn_opt(:,1:N))-(1/2).*pow_pos(bmn0(:,1:N)+fmn0(:,1:N),2) -(1/2).*(pow_pos(bmn_opt(:,1:N),2)+ pow_pos(fmn_opt(:,1:N),2)))) >= yita;
for i = 1:N
sum((bmn0(:,i)+fmn0(:,i)).*(bmn_opt(:,i)+fmn_opt(:,i))-(1/2).*pow_pos(bmn0(:,i)+fmn0(:,i),2) -(1/2).*(pow_pos(bmn_opt(:,i),2)+pow_pos(fmn_opt(:,i),2))) >= Rmin .*taon_opt(1,i);
end
for i_ = 1:N
sum(bmn_opt(:,i_)) <= taon_opt(1,i_);
end
for i = 1:5
for i_ = 1:N
bmn_opt(i,i_) >= 0;
end
end
for i = 2:N
norms(un_opt(:,i)- un_opt(:,i-1)) <= samax;
un_opt(:,i) - un_opt(:,i-1) == ((vn(1,i) + vn(1,i-1))./2).*taon_opt(1,i);
norms(vn(1,i)-vn(1,i-1)).*inv_pos(taon_opt(1,i)) <= amax;
end
norms(un_opt(:,1) - ui.') <= samax;
un_opt(:,1) - ui.' == taon_opt(1,1)*(vn(1,1) + v0)/2;
norms(vn(1,1) - v0).*inv_pos(taon_opt(1,1)) <= amax;
sum(c1.*taon_opt(1,2:N).*pow_pos(vn(1,2:N),3) + c2.*taon_opt(1,2:N)./norms(vn(1,2:N)) + (c2.*pow_pos(norms(vn(1,2:N) - vn(1,1:N-1)),2)).*inv_pos(taon_opt(1,2:N))./(g^2)./norms(vn(1,2:N))) ...
+(c1.*taon_opt(1,1).*pow_pos(vn(1,1),3) + c2.*taon_opt(1,1)./norms(vn(1,1)) + (c2*pow_pos(norms(vn(1,1) - v0),2)).*inv_pos(taon_opt(1,1))./(g^2)./vn(1,1))...
+sum(Pn(1,1:N).*sum(bmn_opt(:,1:N))) <= Emax;
cvx_end
val1= cvx_optval;
un0 = un_opt;
bmn0 = bmn_opt;
fmn0 = fmn_opt;
taon = taon_opt;