飞行管理问题的优化模型.docx
- 文档编号:12625720
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:14
- 大小:16.58KB
飞行管理问题的优化模型.docx
《飞行管理问题的优化模型.docx》由会员分享,可在线阅读,更多相关《飞行管理问题的优化模型.docx(14页珍藏版)》请在冰豆网上搜索。
飞行管理问题的优化模型
MATLAB:
%约束条件函数
function[c,ceq]=aircon(delta)
x0=[150,85,150,145,130,0];
y0=[140,85,155,50,150,0];
alpha0=[243,236,220.5,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);
fori=2:
6
forj=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);
ift(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=[];
/***************分割符****************************/
%目标函数
functionf=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;
fori=1:
n
delta0=10*(rand(1,6)-0.5);
[dt,feval]=fmincon(@airfun,delta0,[],[],[],[],lb,ub,@aircon,options);
if(feval 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'); fori=1: 6 text(x(i)+2,y(i),num2str(i)); end c=[542163]; axis([-10,195,-10,170]); gridon;holdon; 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]+[6.045.565.08-6.15-5.674.78]; %zt=[270,270,270,270,270,0]+[-7.71725.54350.3477-1.04486.0843-3.4276]; zt1=zt*pi/180;vt=1; dx=vt*cos(zt1);dy=vt*sin(zt1); forvt=1: 160 x1=x+dx;y1=y+dy; scatter(x1,y1,11,c,'filled'); forj=1: 5 fork=2: 6 ifk~=j tx=x1(j)-x1(k);ty=y1(j)-y1(k); dl=sqrt(tx^2+ty^2); ifdl<=8 fprintf('\ni=%dj=%dvt=%d',j,k,vt); end end end end x=x1;y=y1;pause(0.1); end x=[60,60,60,60,60,0]; y=[80,70,60,90,100,60]; scatter(x,y,30,'r','filled'); fori=1: 6 text(x(i)+2,y(i),num2str(i)); end c=[542163]; axis([-10,195,-10,170]); gridon;holdon; plot([0,160,160,0,0],[0,0,160,160,0],'b'); zt=[180,180,180,180,180,0]; %zt=[180,180,180,180,180,0]+[-1.29,-1.77,9.74,-0.81,-0.335,5.58]; zt1=zt*pi/180;vt=1; dx=vt*cos(zt1);dy=vt*sin(zt1); forvt=1: 160 x1=x+dx;y1=y+dy; scatter(x1,y1,11,c,'filled'); forj=1: 5 fork=2: 6 ifk~=j tx=x1(j)-x1(k);ty=y1(j)-y1(k); dl=sqrt(tx^2+ty^2); ifdl<=8 fprintf('\ni=%dj=%dvt=%d',j,k,vt); end end end end x=x1;y=y1;pause(0.1); end clc x=[0,55,90,40,80,0]; y=[70,5,60,130,5,60]; scatter(x,y,30,'r','filled'); fori=1: 6 text(x(i)+2,y(i),num2str(i)); end c=[542163]; axis([-10,195,-10,170]); gridon;holdon; plot([0,160,160,0,0],[0,0,160,160,0],'b'); zt=[0,90,180,270,180,0]; %zt=[0,90,180,270,180,0]+[5.19,6.13,4.53,0.0,0.0,5.67]; %zt=[0,90,180,270,180,0]+[0-2.682928-2.6829280.00.0.0]; zt1=zt*pi/180;vt=1; dx=vt*cos(zt1);dy=vt*sin(zt1); forvt=1: 160 x1=x+dx;y1=y+dy; scatter(x1,y1,11,c,'filled'); forj=1: 5 fork=2: 6 ifk~=j tx=x1(j)-x1(k);ty=y1(j)-y1(k); dl=sqrt(tx^2+ty^2); ifdl<=8 fprintf('\ni=%dj=%dvt=%d',j,k,vt); end end end end x=x1;y=y1;pause(0.1); end clc x=[150,85,150,145,130,0]; y=[140,85,155,50,150,0]; scatter(x,y,30,'r','filled'); fori=1: 6 text(x(i)+2,y(i),num2str(i)); end c=[123456]; %c=[542163]; axis([-10,195,-10,170]); gridon;holdon; plot([0,160,160,0,0],[0,0,160,160,0],'b'); zt=[243,236,220.5,159,230,52]; %zt=[243,236,220.5,159,230,52]+[0,0,2.84,0,0,0.79]; %zt=[243,236,220.5,159,230,52]+[0.00000.00010.00000.0000-1.3846-7.0638]; zt1=zt*pi/180;vt=1; dx=vt*cos(zt1);dy=vt*sin(zt1); forvt=1: 160 x1=x+dx;y1=y+dy; scatter(x1,y1,11,c,'filled'); forj=1: 5 fork=2: 6 ifk~=j tx=x1(j)-x1(k);ty=y1(j)-y1(k); dl=sqrt(tx^2+ty^2); ifdl<=8 fprintf('\ni=%dj=%dvt=%d',j,k,vt); %任意两架飞机距离小于8公里记录下来 end end end end x=x1;y=y1;pause(0.1); end % clc;clear; lb=-pi/18*ones(6,1);ub=pi/18*ones(6,1); options=optimset('LargeScale','off'); n=20;fmin=100; fori=1: n z0=10*(rand(6,1)-0.5); [x,fval]=fmincon(@fun1,z0,[],[],[],[],lb,ub,@fun2,options); iffval fmin=fval;xmin=x; end end %xmin fmin=xmin'*xmin; xmin=xmin*180/pi fmin=fmin*180/pi functionf=fun1(zt) f=zt'*zt; function[g,h]=fun2(zt) zt1=zeros(6,1); %x=[150,85,150,145,130,0]'; %y=[140,85,155,50,150,0]'; %zt0=[243,236,220.5,159,230,52]'; %第一组数据; x=[60,70,80,50,40,0]'; y=[100,100,100,100,100,40]'; zt0=[270,270,270,270,270,0]'; %第二组数据; %x=[60,60,60,60,60,0]'; %y=[80,70,60,90,100,60]'; %zt0=[180,180,180,180,180,0]'; %第三组数据; %x=[0,55,90,40,80,0]'; %y=[70,5,60,130,5,60]'; %zt0=[0,90,180,270,180,0]'; zt0=zt0*pi/180;v=800; fori=1: 6 zt1(i)=zt0(i)+zt(i); end fori=2: 6 forj=1: i-1 dx(i,j)=x(i)-x(j);dy(i,j)=y(i)-y(j); c(i,j)=cos(zt1(i))-cos(zt1(j)); s(i,j)=sin(zt1(i))-sin(zt1(j)); t(i,j)=-(dy(i,j)*s(i,j)+dx(i,j)*c(i,j))/(c(i,j)^2+s(i,j)^2)/v; if(t(i,j)<0) d(i,j)=1000; else d(i,j)=(dx(i,j)*s(i,j)-dy(i,j)*c(i,j))^2/(c(i,j)^2+s(i,j)^2); end end end g=64-[d(2,1),d(3,1: 2),d(4,1: 3),d(5,1: 4),d(6,1: 5)]'; h=[]; x=[150,85,150,145,130,0]; y=[140,85,155,50,150,0]; scatter(x,y,30,'r','filled'); fori=1: 6 text(x(i)+2,y(i),num2str(i)); end axis([-10,195,-10,170]); gridon;holdon; plot([0,160,160,0,0],[0,0,160,160,0],'g'); zt=[243,236,220.5,159,230,52]; zt1=zt*pi/180;a=40; x1=x+a*cos(zt1);y1=y+a*sin(zt1); fori=1: 6 plot([x(i),x1(i)],[y(i),y1(i)],'b') end holdoff LEGO程序: model: sets: fj/p1..p6/: zt0,dzt,zt1,x0,y0;! fj-飞机; sj/t1..t901/: t;! sj--时间,将时间离散化; endsets data: x0=150,85,150,145,130,0; y0=140,85,155,50,150,0; zt0=243,236,220.5,159,230,52; v=800;PI=3.14159265359; enddata min=@sum(fj: @abs(dzt));! 目标函数; ! min=@sum(fj: @abs(dzt*dzt));! 目标函数; @for(sj(k): t(k)=(k-1)/3000); @for(fj: @bnd(-10,dzt,10));! 限制偏差角的变化范围; ! @for(fj: zt0=zt*PI/180);! 把角度化为弧度; @for(fj: zt1=zt0+dzt); @for(sj(k): @for(fj(i)|i#lt#6: @for(fj(j)|j#gt#i: (x0(i)-x0(j)+v*t(k)*(@cos(zt1(i)*PI/180)-@cos(zt1(j)*PI/180)))^2 +(y0(i)-y0(j)+v*t(k)*(@sin(zt1(i)*PI/180)-@sin(zt1(j)*Pi/180)))^2>=64))); End model: sets: fj/p1..p6/: zt0,dzt,zt1,x0,y0;! fj-飞机; sj/t1..t901/: t;! sj--时间,将时间离散化; endsets data: v=800;PI=3.14159265359; ! 第一组数据; x0=60,70,80,50,40,0; y0=100,100,100,100,100,40; zt0=270,270,270,270,270,0; ! 第二组数据; ! x0=60,60,60,60,60,0; ! y0=80,70,60,90,100,60; ! zt0=180,180,180,180,180,0; ! 第三组数据; ! x0=0,55,90,40,80,0; ! y0=70,5,60,130,5,60; ! zt0=0,90,180,270,180,0; enddata ! min=@sum(fj: @abs(dzt));! 目标函数; min=@sum(fj: @abs(dzt*dzt));! 目标函数; @for(sj(k): t(k)=(k-1)/3000); @for(fj: @bnd(-10,dzt,10));! 限制偏差角的变化范围; @for(fj: zt1=zt0+dzt); @for(sj(k): @for(fj(i)|i#lt#6: @for(fj(j)|j#gt#i: (x0(i)-x0(j)+v*t(k)*(@cos(zt1(i)*PI/180)-@cos(zt1(j)*PI/180)))^2 +(y0(i)-y0(j)+v*t(k)*(@sin(zt1(i)*PI/180)-@sin(zt1(j)*Pi/180)))^2>=64))); end model: sets: fj/p1..p6/: zt,zt0,dzt,zt1,x0,y0;! fj-飞机; links(fj,fj): c,s,dx,dy; endsets data: x0=150,85,150,145,130,0; y0=140,85,155,50,150,0; zt=243,236,220.5,159,230,52; v=800; enddata min=@sum(fj: @abs(dzt));! 目标函数; @for(fj: @bnd(-0.1,dxt,0.1));! 限制偏差角的变化范围; @for(fj: zt0=zt*3.14159265359/180);! 把角度化为弧度; @for(fj: zt1=zt0+dzt); ! @for(links(i,j): c(i,j)=@cos(zt1(i))-@cos(zt1(j))); ! @for(links(i,j): s(i,j)=@sin(zt1(i))-@sin(zt1(j))); ! @for(links(i,j): dx(i,j)=x0(i)-x0(j)); ! @for(links(i,j): dy(i,j)=y0(i)-y0(j)); @for(fj(i)|i#lt#6: @for(fj(j)|j#gt#i: ((x0(i)-x0(j))*(@cos(zt1(i))-@cos(zt1(j))) +(y0(i)-y0(j))*(@sin(zt1(i))-@sin(zt1(j))))/((@cos(zt1(i))-@cos(zt1(j)))^2 +(@sin(zt1(i))-@sin(zt1(j)))^2)/v<=0)); @for(fj(i)|i#lt#6: @for(fj(j)|j#gt#i: ((x0(i)-x0(j))*(@sin(zt1(i))-@sin(zt1(j))) -(y0(i)-y0(j))*(@cos(zt1(i))-@cos(zt1(j))))^2/((@cos(zt1(i))-@cos(zt1(j)))^2 +(@sin(zt1(i))-@sin(zt1(j)))^2)>=64)); ! @for(links(i,j)|i#lt#6#and#j#gt#i: -(c(i,j)*(x0(i)-x0(j))+s(i,j)*(y0(i)-y0(j)))/(c(i,j)^2+s(i,j)^2)/v>=0); ! @for(links(i,j)|i#lt#6#and#j#gt#i: (c(i,j)*(y0(i)-y0(j))-s(i,j)*(x0(i)-x0(j)))^2/(c(i,j)^2+s(i,j)^2)>=64); end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 飞行 管理 问题 优化 模型