2018年第七届数学建模国际赛小美赛A题空中加油飞行计划解题全过程文档及程序

2018年第七届数学建模国际赛小美赛

A题 空中加油飞行计划

原题再现:

  太平洋中部一个小岛上的居民被自然灾害困住。救援人员需要派遣一架轻型飞机运送少量急救药品到岛上,并运送一名重伤者到医疗基地求救。岛上有一个无人值守的简易机场,可以使用,但没有飞机或燃料储备。飞机从距离该岛615海里的基地起飞。在正常载荷条件下,飞机最大航程为680海里。为了返回,我们必须进行空中加油。
  这种飞机能够在空中接收油。经过简单的改装,同一型号的飞机可以完成合作伙伴空中加油的任务,即将自己的燃油分配给合作伙伴。该类型飞机的最大燃油容量为155kg。空中加油设备安装后,最大载油量增加至170kg,其他载油量无法承载。基地拥有一支机队和足够的装备,可以在短时间内改装成油轮。

  问题:
  1、请设计可行的空中加油方案,使救援人员能够完成任务。
  2、空中加油属于高风险作业,有失败的可能。运输和加油飞机也有发生故障的概率。请考虑工程各部分的失败概率。当我们需要保证总成功率时,请给出相应的最优解决方案。

整体求解过程概述(摘要)

  在特定情况下,救援人员需要派遣轻型飞机将伤员从岛上运送到医疗基地进行救援。在本文中,我们设计了一个可行的空中加油方案,使救援人员能够完成任务,然后考虑失败的概率,得到一个最优解。
  首先,我们假设往返途中分别有m个加油点和n个加油点,每个加油点允许一个加油机为飞机加油。在救援成功的前提下,引入决策变量0和1来确定需要加油的点。确保剩余油足以支持飞机在最后一次加油后到达下一个加油点并安全返回基地,其油量不得超过最大容量。此外,我们考虑为油轮和飞机留下少量的安全油。以油船总油耗最小为目标函数,建立了混合整数非线性规划模型。利用Lingo软件,采用分枝定界法对模型进行求解。最后得出合理的加油方案:配备4艘加油船,2艘加油船分别在离岛90海里和270海里加油20.51471kg和40.58824kg;另外两艘加油船分别在距基地310海里和200海里处加油23.67647kg和45.58824kg。
  为了改进我们的模型,我们考虑了爬升、平层和着陆三个阶段的不同石油消耗比例。在加油过程中设置了一个恒定的距离,并尝试了三级距离和油耗比的不同参数组。通过敏感性分析发现,我国主要需要4艘油船,总油耗在467kg~555kg之间,说明了模型和加油方案的可行性。具体程序如表2和图4所示。
  其次,将换料过程分为交会、对接、换料和解体四个阶段。我们考虑前三个阶段的不同情况,其中有相应的失效概率。本文建立了以成功率最大、总油耗最小为目标函数的双目标规划模型。然后选择遗传算法对规划模型进行求解,分别以总成功率为85%和90%为一个成功任务。最后选取八组三阶段失效概率在相应情况下进行灵敏度分析。表3和表4的结果表明,该方案合理可行。
  由于故障事件的增加将导致空中加油的不确定性,因此需要更多的加油机来确保较高的成功率。在相同的事件概率下,较高的成功率阈值迫使我们派遣更多的油轮。保证更高的成功率,成功率越低,我们为更省油的目的派出的飞机就越少。

模型假设:

  1、为了简化我们的模型,不考虑轻型飞机和油轮的起飞时间,假设油轮和飞机是同步的,这样就可以在需要的时候立即接收燃油。

  2、不考虑油轮向其他油轮供油的情况。

  3、每辆加油车完成一次加油任务后返回。

  4、不考虑天气等外部环境因素的影响

  5、救援人员和加油人员经过严格的飞行训练,确保飞行安全。

问题重述:

  问题背景

  太平洋中部一个小岛上的居民被自然灾害困住。救援人员需要派遣一架轻型飞机运送少量急救药品到岛上,并运送一名重伤者到医疗基地求救。飞机从距离该岛615海里的基地起飞。在正常载荷条件下,飞机最大航程为680海里。为了返回,我们必须进行空中加油。
  这种飞机能够在空中接收油。经过简单的改装,同一型号的飞机可以完成合作伙伴空中加油的任务,即将自己的燃油分配给合作伙伴。该类型飞机的最大燃油容量为155kg。空中加油设备安装后,最大油量增加至170kg。基地拥有一支机队和足够的装备,可以在短时间内改装成油轮。

  问题重述

  1、设计可行的空中加油方案,使救援人员能够完成任务。
  2、空中加油属于高风险作业,有失败的可能。运输和加油飞机也有发生故障的概率。考虑到各部分工作的失效概率,需要保证总成功率和相应的最优解。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

c=0.2279411764705;
Xg0=0;
Yg0=155;
Xb0=615;
Yb0=0;
Rg0=0;
n=38;
enddata
sets:
gg/1..n/:g_use,Xg,Yg,Tg,costg;
bb/1..n/:b_use,Xb,Yb,Tb,costb;
Rgg/1..n/:Rg;
Rbb/1..n/:Rb;
Endsets
min=(@Sum(gg(i):costg(i))+@Sum(bb(i):costb(i)));
@for(gg(i):@Bin(g_use(i));Xg(i)=i*380/n);
@for(bb(i):@Bin(b_use(i));Xb(i)=380-(i-1)*380/n);
@for(gg(i):costg(i)=2*c*g_use(i)*Xg(i)+g_use(i)*Yg(i);@BND(0,Yg(i),165);@BND(0,cost
g(i),165)); 
@for(bb(i):costb(i)=2*c*b_use(i)*Xb(i)+b_use(i)*Yb(i);@BND(0,Yb(i),165);@BND(0,cost
b(i),165)); 
@for(Rgg(i):Rg(i)=@IF(i#eq#1,Rg0+Yg0-c*(Xg(i)-Xg0),Rg(i-1)+g_use(i-1)*Yg(i-1)-
c*(Xg(i)-Xg(i-1))); 
@for(gg(i):Tg(i)=Rg(i)+g_use(i)*Yg(i));@BND(0,Tg(i),155));
Rb0=Rg(n)+g_use(n)*Yg(n)-c*(615-Xg(n));
@for(Rbb(i):Rb(i)=@IF(i#eq#1,Rb0+Yb0-c*(Xb0-Xb(i)),Rb(i-1)+b_use(i-1)*Yb(i-1)-
c*(Xb(i-1)-Xb(i))); 
@for(bb(i):Tb(i)=Rb(i)+b_use(i)*Yb(i));@BND(0,Tb(i),155)); 
@for(gg(i):Rg(i)>=5);
@for(bb(i):Rb(i)>=5);
Rb0>=5;
Rb(n)+b_use(n)*Yb(n)-c*Xb(n)>=5;
x=20;
s1=0.15;
s3=0.15;
l1=50;
m1=5;
l3=50;
m2=5;
Xg0=0;
Yg0=155;
Xb0=615;
n=38;
enddata
sets:
start/1..m1/;
load/1..m2/;
gg/1..n/:g_use,Xg,Yg,Tg,costg;
bb/1..n/:b_use,Xb,Yb,Tb,costb;
Rgg/1..n/:Rg;
Rbb/1..n/:Rb;
endsets
!min=@Sum(gg(i):g_use(i))+@Sum(bb(i):b_use(i));
min=(@Sum(gg(i):costg(i))+@Sum(bb(i):costb(i)));
s2=1-s1-s3;
l2=615-l1-l3;
c=155*s2/(680-l1-l3);
@for(gg(i):@Bin(g_use(i));Xg(i)=i*380/n);
@for(bb(i):@Bin(b_use(i));Xb(i)=380-(i-1)*380/n);
@for(start(i):g_use(i)=0);
@for(load(i):b_use(n-i+1)=0);
@for(gg(i):costg(i)=g_use(i)*170*(s1+s3)+c*g_use(i)*(2*Xg(i)+2*x-l1-
l3)+g_use(i)*Yg(i);@BND(0,Yg(i),165);@BND(0,costg(i),165)); 
@for(bb(i):costb(i)=b_use(i)*170*(s1+s3)+c*b_use(i)*(2*Xb(i)-l1-
l3)+b_use(i)*Yb(i);@BND(0,Yb(i),165);@BND(0,costb(i),165)); 
@for(Rgg(i):Rg(i)=@IF(i#eq#1,Yg0-Yg0*s1-c*(Xg(i)-Xg0-l1),Rg(i-1)+g_use(i-1)*Yg(i-1)-
c*(Xg(i)-Xg(i-1)))); 
@for(gg(i):Tg(i)=Rg(i)+g_use(i)*Yg(i)-c*x;@BND(0,Tg(i),155));
Rb0=Rg(n)+g_use(n)*Yg(n)-c*(615-Xg(n));
@for(Rbb(i):Rb(i)=@IF(i#eq#1,Rb0-155*s1-c*(Xb0-l1-Xb(i)),Rb(i-1)+b_use(i-1)*Yb(i-1)-
c*(Xb(i-1)-Xb(i)))); 
@for(bb(i):Tb(i)=Rb(i)+b_use(i)*Yb(i)-c*x;@BND(0,Tb(i),155)); 
@for(Rgg(i):Rg(i)>=5);
@for(Rbb(i):Rb(i)>=5);
Rb0>=5;
Rb(n)+b_use(n)*Yb(n)-c*Xb(n)-155*s3>=5;
END
clc,clear
tic;
pop_size = 200; % population size
pop_len = 71;
gnmax = 300; % maximum number of generations
pc = 0.8; %crossover probability 
pm = 0.1; %mutation probability
% The formation of an initial population
s = zeros(pop_size,pop_len);
for i=1:pop_sizetmp = rand(1,pop_len);tmp(tmp>0.3)=1;tmp(tmp<=0.3)=0;s(i,:) = tmp;
end
% Calculate fitness function
[~,p] = objf(s);
gn = 1; %The current algebra.
ymean = zeros(gn,1);
ymin = zeros(gn,1);
xmin = zeros(pop_size,pop_len);
scnew = zeros(pop_size,pop_len); %Store crossover populations
smnew = zeros(pop_size,pop_len); %Store the mutant population
while gn<gnmax+1for j=1:2:pop_sizeseln=sel(p); %selectscro=cro(s,seln,pc); scnew(j,:)=scro(1,:);scnew(j+1,:)=scro(2,:);smnew(j,:)=mut(scnew(j,:),pm); smnew(j+1,:)=mut(scnew(j+1,:),pm);ends = smnew; % New populations have emerged[f,p] = objf(s); % Calculate the fitness of the new population% Optimal fitness and optimal individual location[fmin,nmin] = min(f);% Average fitness and optimal fitness were recordedymean(gn) = mean(f);ymin(gn) = fmin;% Record the best individuals of the current generationx = s(nmin,:);
xmin(gn,:) = x;gn = gn+1;
end
% Remove maximum points from the image
max_ymin = 0;
for i=1:length(ymin)if ymin(i) ~= 9999999if max_ymin < ymin(i)max_ymin = ymin(i);endend
end
for i=1:length(ymin)if ymin(i) == 9999999ymin(i) = max_ymin;end
end
[min_ymin,index] = min(ymin);
best_ym = ymin(index);
best_x = xmin(index,:);
figure(1);
plot(ymin,'r'); hold on;grid;
title('search process');
xlabel('The number of iterations');
ylabel('Refuel')
legend('Optimal solution');
fprintf('Refuel:%d
\n',min_ymin);
fprintf('best_x:');
disp(best_x);
toc; %------------------------------------------------
%The fitness of all populations was calculated
function [f,p]=objf(s)inn=size(s,1); %Read the population sizef=zeros(inn,1);for i=1:innf(i)=fitness(s(i,:)); %Calculate fitnessendtmp = f;f=(1000./f)'; %Take the bottom% Get the wheelfsum=0;
for i=1:innfsum=fsum+f(i)^15;endps=zeros(inn,1);for i=1:innps(i)=f(i)^15/fsum;end%Calculate the cumulative probabilityp=zeros(inn,1);p(1)=ps(1);for i=2:innp(i)=p(i-1)+ps(i);endp=p';f = tmp;
end
%--------------------------------------------------
%Determine the probability
function pcc=pro(pc)
test(1:100)=0;
p=round(100*pc);
test(1:p)=1;
n=round(rand*99)+1;
pcc=test(n); 
end
%--------------------------------------------------
%Select operation
function seln=sel(p)
seln=zeros(2,1);
%Choose two individuals from a population
%preferably not the same individual twice
for i=1:2r=rand; prand=p-r;j=1;while prand(j)<0j=j+1;endseln(i)=j; if i==2&&j==seln(i-1) %If they're the same, I'm going to do it again
r=rand; prand=p-r;j=1;while prand(j)<0j=j+1;endend
end
end
%------------------------------------------------
%Crossover operations
function scro=cro(s,seln,pc)
bn=size(s,2);
pcc=pro(pc); 
scro(1,:)=s(seln(1),:);
scro(2,:)=s(seln(2),:);
if pcc==1c1 = round(rand*(bn-2))+1; c2 = round(rand*(bn-2))+1;chb1 = min(c1,c2);chb2 = max(c1,c2);middle = scro(1,chb1+1:chb2);scro(1,chb1+1:chb2) = scro(2,chb1+1:chb2);scro(2,chb1+1:chb2) = middle;
end
end
%--------------------------------------------------
%Mutation operation
function snnew=mut(snew,pm)
bn=size(snew,2);
snnew=snew;
pmm=pro(pm); 
if pmm==1for i=1:3c1=round(rand*(bn-2))+1;snnew(c1)=1-snnew(c1);end
end
end
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/231772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

50ms时延工业相机

华睿工业相机A3504CG000 参数配置&#xff1a; 相机端到端理论时延&#xff1a;80ms 厂家同步信息&#xff0c;此款设备帧率上线23fps&#xff0c;单帧时延&#xff1a;43.48ms&#xff0c;按照一图缓存加上传输显示的话&#xff0c;厂家预估时延在&#xff1a;80ms 厂家还有…

基于Docker Compose的容器编排技术

1.1 介绍一下 Docker 建议我们每⼀个容器中只运⾏⼀个服务&#xff0c;因为 Docker 容器本身占⽤资源极少&#xff0c;所以最好是 将每个服务单独的分割开来但是这样我们⼜⾯临了⼀个问题&#xff1f; 如果我需要同时部署好多个服务&#xff0c;难道要每个服务单独写 Dockerf…

深入了解Linux信号:作用、产生、捕捉和阻塞

这里写目录标题 引言1. 信号的基本概念1.1 信号的分类和编号&#xff1a;1.2 查看信号默认处理动作1.3 信号的作用1.4 信号的产生 2. 常见信号及其作用示例 3. 信号捕捉和处理3.1 信号捕捉函数3.2 sigaction 函数示例 4. 信号阻塞示例 结语 引言 Linux操作系统中&#xff0c;信…

EM(Expectation-Maximum)算法

EM算法 简介 EM算法的核心分为两步 E步&#xff08;Expection-Step&#xff09;M步&#xff08;Maximization-Step&#xff09; 因为在最大化过程中存在两个参量 r , θ r,\theta r,θ&#xff0c;其中若知道 r r r&#xff0c;则知道 θ \theta θ&#xff1b;若知道 θ \…

机器学习之线性回归(Linear Regression)

概念 线性回归(Linear Regression)是机器学习中的一种基本的监督学习算法,用于建立输入变量(特征)与输出变量(目标)之间的线性关系。它假设输入变量与输出变量之间存在线性关系,并试图找到最佳拟合线来描述这种关系。 在简单线性回归中,只涉及两个变量:一个是自变量…

Go环境安装

目录 下载地址 安装 macos环境 window及其他环境 GOPROXY 非常重要 Go开发编辑器 下载地址 Go官网下载地址&#xff1a;https://golang.org/dl/ Go官方镜像站&#xff08;推荐&#xff09;&#xff1a;https://golang.google.cn/dl/ 选择要下载的系统版本&#xff1a; 安装 注意…

Github 2023-12-19开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2023-12-19统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4Rust项目2非开发语言项目2C#项目1TypeScript项目1 Avalonia: 跨平台UI框架和Avalonia XPF 创建周…

弹幕情感分析可视化

弹幕情感分析可视化 引言1. 弹幕数据爬取2. 弹幕数据处理3. 弹幕数据可视化4. 弹幕情感分析5. 创新点&#xff1a;弹幕情感倾向分布 引言 当今互联网时代&#xff0c;大量的弹幕数据蕴含着丰富的信息&#xff0c;通过对这些数据进行分析和可视化&#xff0c;我们能够深入了解用…

端口占用命令 netstat (centos)+netstat (windows)

linux 1.使用 netstat 命令查看端口占用情况 netstat -tlnp 使用 -p 选项查看进程信息。 使用 -t 选项列出 TCP 协议的连接&#xff1a;类似&#xff08;使用 -u 选项列出 UDP 协议的连接&#xff1a;&#xff09; 2.查找占用指定端口号的应用信息 netstat -tlnp | grep 3…

输电线路定位:精确导航,确保电力传输安全

在现代社会中&#xff0c;电力作为生活的基石&#xff0c;其安全稳定运行至关重要。而输电线路作为电力传输的重要通道&#xff0c;其故障定位和修复显得尤为重要。恒峰智慧科技将为您介绍一种采用分布式行波测量技术的输电线路定位方法&#xff0c;以提高故障定位精度&#xf…

windows安装conda小环境 windows安装anaconda python jupyter anaconda

1 如果想体验在线版的jupyter&#xff0c;可以访问anaconda在Anaconda Cloud&#xff0c;需要注册github&#xff1a; 1 下载anaconda &#xff0c;并安装 1.1 下载 或者去清华镜像下载 Free Download | Anacondahttps://www.anaconda.com/downloadIndex of /anaconda/arch…

Excel只读模式带有密码,怎么办?

打开Excel文件之后发现是只读模式&#xff0c;并且excel只读模式是带有密码的&#xff0c;该如何取消带有密码的excel只读文件呢&#xff1f; 带有密码的只读模式&#xff0c;是设置了excel文件的修改权限&#xff0c;取消修改权限&#xff0c;我们需要先输入密码&#xff0c;…

Android-高效加载大图

Android 高效加载大图 前言读取位图尺寸和类型将按比例缩小的版本加载到内存中 前言 图片有各种形状和大小。在很多情况下&#xff0c;它们的大小超过了典型应用界面的要求。例如&#xff0c;系统“图库”应用会显示使用 Android 设备的相机拍摄的照片&#xff0c;这些照片的分…

windows下wsl(ubuntu)ldconfig报错

错误 sudo ldconfig /sbin/ldconfig.real: Cant link /usr/lib/wsl/lib/libnvoptix_loader.so.1 to libnvoptix.so.1 /sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link解决&#xff1a; 处理 sudo ldconfig 报错 libcuda.so.1 is not a symbolic …

简单几步完成SVN的安装

介绍以及特点 SVN&#xff1a;Subversion&#xff0c;即版本控制系统。 1.代码版本管理工具 2.查看所有的修改记录 3.恢复到任何历史版本和已经删除的文件 4.使用简单上手快&#xff0c;企业安全必备 下载安装 SVN的安装分为两部分&#xff0c;第一部分是服务端安装&…

pytorch文本分类(三)模型框架(DNNtextCNN)

pytorch文本分类&#xff08;三&#xff09;模型框架&#xff08;DNN&textCNN&#xff09; 原任务链接 目录 pytorch文本分类&#xff08;三&#xff09;模型框架&#xff08;DNN&textCNN&#xff09;1. 背景知识深度学习 2. DNN2.1 从感知器到神经网络2.2 DNN的基本…

源码编译 METIS 以及 GKlib 在Linux ubuntu上

1. GKlib 构建 $ git clone --recursive gitgithub.com:Kleenelan/GKlib.git $ cd GKlib/ $ make config ccgcc openmpset $ make $ make install源码构建了 GKlib 的 openmp 版本&#xff0c;以便充分使用多核的算力&#xff1b; make config ccgcc openmpset 的效果图&#…

鸿蒙端H5容器化建设——JSB通信机制建设

1. 背景 2023年鸿蒙开发者大会上&#xff0c;华为宣布为了应对国外技术封锁的潜在风险&#xff0c;2024年的HarmonyOS NEXT版本中将不再兼容Android&#xff0c;并推出鸿蒙系统以及其自研的开发框架&#xff0c;形成开发生态闭环。同时&#xff0c;在更高维度上华为希望将鸿蒙…

智能优化算法应用:基于黑猩猩算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黑猩猩算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黑猩猩算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑猩猩算法4.实验参数设定5.算法结果6.参考文…

音视频学习(二十一)——rtmp收流(tcp方式)

前言 本文主要介绍rtmp协议收流流程&#xff0c;在linux上搭建rtmp服务器&#xff0c;通过自研的rtmp收流库发起取流请求&#xff0c;使用ffmpegqt实现视频流的解码与播放。 关于rtmp协议基础介绍可查看&#xff1a;https://blog.csdn.net/www_dong/article/details/13102607…