MATLAB:
%约束条件函数
function [c,ceq]=aircon(delta)
x0=[150, 85, 150, 145, 130, 0];
y0=[140, 85, 155, 50, 150, 0];
alpha0=[243,236,,159,230,52];
%第一组数据;
%x0=[60, 70, 80, 50, 40, 0];
%y0=[100, 100, 100, 100, 100, 40];
%alpha0=[270, 270, 270, 270, 270, 0];
%第二组数据;
%x0=[60, 60, 60, 60, 60, 0];
%y0=[80, 70, 60, 90, 100, 60];
%alpha0=[180, 180, 180, 180, 180, 0];
%第三组数据;
%x0=[0, 55, 90, 40, 80, 0];
%y0=[70, 5, 60, 130, 5, 60];
%alpha0=[0, 90, 180, 270, 180, 0];
alpha0=alpha0*pi/180; v=800;
co=cos(alpha0+delta);
si=sin(alpha0+delta);
for i=2:6
for j=1:i-1
b(i,j)=(x0(i)-x0(j))*(co(i)-co(j))+(y0(i)-y0(j))*(si(i)-si(j));
a(i,j)=v*((co(i)-co(j))^2+(si(i)-si(j))^2);
t(i,j)=-b(i,j)/a(i,j);
if t(i,j)<0
d(i,j)=1000;
else
d(i,j)=(x0(i)-x0(j)+v*t(i,j)*(co(i)-co(j)))^2+(y0(i)-y0(j)+v*t(i,j)*(si(i)-si(j)))^2;
end
end
end
c=64-[d(2,1), d(3,1:2), d(4,1:3), d(5,1:4), d(6,1:5)];
ceq=[ ];
/***************分割符****************************/
%目标函数
function f=airfun(delta)
f=delta*delta';
%f=sum(abs(delta));
/***************分割符****************************/
%计算程序
clear; clc
lb=-pi/18*ones(1,6); ub=pi/18*ones(1,6);
options=optimset('LargeScale','off');
n=20; fval=100;
for i=1:n
delta0=10*(rand(1,6)-);
[dt,feval]=fmincon(***@airfun,delta0,[ ],[ ], [ ], [ ],lb,ub,***@aircon,options);
if (feval<fval)
fval=feval; dl=dt;
end
end
dl=dl*180/pi,
f=dl*dl'
%f=sum(abs(dl))
clc
x=[60, 70, 80, 50, 40, 0];
y=[100,100,100,100,100,40];
scatter(x,y,30,'r','filled');
for i=1:6
text(x(i)+2, y(i), num2str(i));
end
c=[5 4 2 1 6 3];
axis([-10, 195, -10, 170]);
grid on; hold on;
plot([0,160,160,0,0],[0,0,160,160,0],'b');
zt=[270,270,270,270,270,0];
%zt=[270, 270, 270, 270, 270, 0]+[ - - ];
%zt=[270, 270, 270, 270, 270, 0]+ [- - -];
zt1=zt*pi/180; vt=1;
dx=vt*cos(zt1); dy=vt*sin(zt1);
for vt=1:160
x1=x+dx; y1=y+dy;
scatter(x1,y1,11,c,'filled');
for j=1:5
for k=2
飞行管理问题的优化模型 来自淘豆网m.daumloan.com转载请标明出处.