2020年数学建模竞赛优秀选_第1页
2020年数学建模竞赛优秀选_第2页
2020年数学建模竞赛优秀选_第3页
2020年数学建模竞赛优秀选_第4页
2020年数学建模竞赛优秀选_第5页
免费预览已结束,剩余69页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目一、问题重 问题的背 问题的提 二、问题分析及建模准 问题一的分 问题二的分 问题三的分 问题四的分 三、基本假 四、符号说 五、问题一的求 问题分 模型建 模型求 模型结 模型有效性验 六、问题二的求 问题分 模型建 模型求 模型结 模型有效性验 七、问题三的求 问题分 模型建 模型求 模型结 模型有效性验 八、问题四的求 问题分 模型建 模型求 模型结 模型有效性验 九、模型评 十、参考文 一、问题问题的背务要求和发的工作需求。在任务执行过程中,飞行器的质心[3]变化对飞行器的控制有箱的供油策略可用其向发或其它油箱供油的速度曲线来描述。问题的提针对问题一:6个油箱的供油速度及飞行器在飞行过程中的针对问题二:已知某次任务的飞行器计划耗油速度数据,与飞行器在飞行器坐标系下(0)的任务规划过程6(𝑡)与理想质心位置(𝑡)的欧氏距离的最大值达到最小,..||!(𝑡)#(0)6个油箱初始载油量及供油策略,使得本次任务结束时6个油箱剩余燃油总量至少1𝑚$,并且飞行器每一时刻的质心位置⃗!(𝑡)与理想质心位置𝑐⃗"(𝑡)的欧氏距离的最大值达到最小,i.e,||!(𝑡)#针对问题四:在实际任务规划过程中,飞行器俯仰角随时间变化。已知飞行器俯仰角的变化数据和耗油速度数据。要为任务制定油箱供油策略,使得飞行器瞬时质心!(𝑡)()𝑐.||!(𝑡)−#二、问题分析及建模问题一的分通过对问题的分析,可知这是一个典型的质算问题。先对不同的油量及俯仰角进行分类,然后分析每种情况下油箱质心的计算公式,最后带入数据得到油箱质心的具问题二的分已知某次任务的飞行器计划耗油速度数据和飞行器在飞行器坐标系下的理想质心位质心位置(𝑡)与理想质心位置(𝑡)问题三的分已知某次任务的飞行器计划耗油速度数据和飞行器在飞行器坐标系下的理想质心位6油箱初始载油量及供油策略,目标是使得飞行器每一时刻质心位置(𝑡)与理想质心位置𝑐"⃗(𝑡)的欧氏距离的最大值达到最小。初步分析,该问题仍然是一个目标问题四的分𝑐⃗(𝑡)三、基本油箱均为长方体且固定在飞行器,设第𝑖个油箱长、宽、高分别为𝑎&,𝑏&和𝑐&,𝑖=1,2,…,6。长、宽、高的三个方向与飞行器坐标系的𝑥,𝑦,𝑧轴三个方向平行。位置为Ρ⃗',𝑖=1,2,…,6。飞行器(不载油)总重量为M。第𝑖个油箱的供油速度上限为U&(U&>0),𝑖1,26。每个油箱一次供油的持续时间不少于60秒。油箱2和油箱5供油,不能直接向发供油。由于受到飞行器结构的限制,至多2个油箱可同时向发供油,至多3个油四、符号符 解释说 油的密度 𝑐⃗(𝑡) 时刻𝑡下第𝑘个油箱供油的速度+)𝑡 ,-. 时刻𝑡下第𝑘个油箱的油在𝑥𝑧轴二维平面构成的面积 五、问题一的问题分通过对问题的分析,可知这是一个典型的质算问题。先对不同的油量及俯仰角进行分类,然后分析每种情况下油箱质心的计算公式,最后带入数据得到油箱质心的具

𝑐⃗

𝑀((𝑡) 𝑚%+ 模型建模型预处“三转二维平面”通对题进分可发当器直,𝑦。产生5种不同的形状,包括矩形、三角形、梯形(2种)和五边形。9个质心公式,具体可看5.2.3油面质心求解。“油箱左下角为分析原点”:为了方便求解,问题一的质算都先以油箱左下𝐴点暂时作为分析的原点,已知第𝑘个油箱在𝑥、𝑦、𝑧轴方向的中心位置分别表示为𝑥(𝑦((、(𝑐(2)~(4点的坐标为((!,(!,(!1(!=𝑥(−𝑎(∗1(!=𝑦(−𝑏(∗1(!=𝑧(−𝑐(∗

(计算出以𝐴点为原点的油箱的质心 ⃗′(𝑡)(𝑥1,𝑦1,𝑧′)后,再加上𝐴点的坐标即可得到油体相(

𝑄(⃗(𝑡)=(𝑥(+𝑥1,𝑦(+𝑦1,𝑧(+ “油箱质量的求取”:根据油箱每秒的的供油速度𝑣((𝑡),可以得到𝑡 如油箱2,5。𝑀((𝑡)=𝑀((𝑡−1)−𝑣((𝑡)∗ 𝑘= 𝑀((𝑡)=𝑀((𝑡−1)+𝑣((𝑡)∗ 𝑘= 从飞行器参数文件中得知每个油箱中油的初始体积𝑉((0)和密度𝜌=850𝑘𝑔/𝑚$,可以𝑀((0)=𝑉((0)∗ 临界值𝜽当𝜃=0,飞行器水平前行,油面呈现为“矩形”;当𝜃≠0,油面会呈现多种形状,在大到!,油面之后会变成三角形形状,如图2所示。𝑆(𝑡)

=𝑆(𝑡)=𝐴𝐸∗𝐴𝐷=𝑎(ta!∗ 其中𝑆678EAD的面积,根据公式(8)计算出的𝑆((𝑡)可以解得!

=tan9!𝜌𝑏

(情况二:倾斜角度𝜃继续增大,直到增大到𝜃",之后油面将变成梯形形状,如图3由于侧面积𝑆((𝑡) 𝑆((𝑡)=

=𝐴𝐵∗𝐴𝐸2 2

其中𝑆:76代表三角形BAE的面积,根据公式(8)计算出的𝑆((𝑡)𝜃"=9!

油的体积大于油箱体积的一半时,𝒉(𝒕)>𝒄𝒌,油面只会呈现梯形或五边形形斜角度𝜃增大到𝜃$,油面之后变成五边形形状,如图4所示。𝑆(𝑡)= + =𝐵𝑁∗𝑁𝐹+𝐴𝐷∗𝐴𝑁=𝑎(𝑡𝑎𝑛𝜃$𝑎(+𝑎(𝑐−𝑎𝑡𝑎𝑛𝜃 其中:;<,7;<8分别代表三角形BNF和矩形ANFD的面积公式(8)计算出的𝑆((𝑡)2e𝑐(𝑎(−𝜃$=9 ((

𝑆(𝑡)=

+

𝐹𝐸∗ = +𝐴𝐵∗𝐴𝐸

𝑡𝑎𝑛𝜃=+𝑐e𝑎

𝜃==

(𝑀( 油面质心求

2e𝑐(𝑎(

油面呈现为“矩形”𝜃=06如果俯仰角𝜃=0,代表飞行器水平前行,油面将呈现矩形形状ℎ((𝑡)代表第𝑘个油箱在飞行器平飞时,油箱形成矩形油面的高,已知𝑆((𝑡)为时刻𝑡下ℎ(𝑡)=𝑆((𝑡)=𝑆((𝑡)=𝑉((𝑡)=

⃗(

f𝑄′𝑡=f

f=

𝑎(,𝑏(, 油面呈现为“三角形”ℎ((𝑡)≤>#并且!|𝜃并且|𝜃|≤𝜃"7"如果𝜽为正已知𝑆((𝑡)为时刻𝑡下第𝑘个油箱的油在𝑥𝑧轴二维平面构成的面积,假设𝐴𝐹=𝑥𝑆(𝑡)= =𝐴𝐸∗𝐴𝐹=𝑥𝑡𝑎𝑛𝜃∗ 𝑥=

⃗( 𝑥6+𝑥7+𝑥<𝑏(𝑦6+𝑦7+ 𝑄(′𝑡= ,2 0+0+𝐴𝐹𝑏(𝐴𝐸+0+ 𝑥𝑏(= ,

f=(3

, 如果𝜽为负:计算过程类似于𝜃为正的步骤,最后得到(𝑄⃗′(𝑡)=(

𝑥−32

油面呈现为“梯形1”:|𝜃|<!且ℎ((𝑡)≤>#;|𝜃|<𝜃$且ℎ((𝑡)>>#8 8:ℎ((𝑡)≤>#和ℎ((𝑡)>>#1 如果𝜽为正已知𝑆((𝑡)为时刻𝑡下第𝑘个油箱的油在𝑥𝑧轴二维平面构成的面积,假设𝐴𝑁=𝑥𝑆(𝑡)= + =𝑁𝐸∗𝑁𝐹+𝑁𝐴∗𝐴𝐷=𝑎(𝑡𝑎𝑛𝜃∗𝑎(+ 其中;<和7;<8分别代表三角形ENF和矩形NADF的面积,结合公式(8)𝑥=𝑀((𝑡)− (𝑡)∗ ⃗(𝑡)+ (𝑡)∗ 𝑄⃗′(𝑡)=

(𝑡)+

6;<𝑏(𝜌i𝑥6+𝑥+𝑥<,𝑏(,𝑦6+𝑦;+𝑦<j+7;<8(𝜌(𝑥8,𝑏(, ;<(𝜌+;<8(𝑎(𝑡𝑎𝑛𝜃∗

0+0+

0+0+

𝑏(

j+𝑥𝑎((2 , 2𝑎(𝑡𝑎𝑛𝜃∗2

i

,

,

j+

,𝑏(,) 2 2)

其中

和 ⃗(𝑡)分别代表三角形ENF和矩形NADF对应的油体的相对点A的质心位置如果𝜽为负:计算过程类似于𝜃为正的步骤,最后得到𝑎(𝑡𝑎𝑛𝜃∗𝑎(2𝑎(𝑏( 𝑎(𝑏(𝑄⃗′(𝑡) i3,2,3j+𝑥𝑎(i2,2,

油面呈现为“梯形2”:|𝜃|>𝜃"且ℎ((𝑡)≤>#;|𝜃|𝜃=且ℎ((𝑡)>>#9 9:ℎ((𝑡)≤>#和ℎ((𝑡)>>#2 如果𝜽为正已知𝑆((𝑡)为时刻𝑡下第𝑘个油箱的油在𝑥𝑧轴二维平面构成的面积,假设𝐴𝑁=𝑥𝑁𝐸∗ 𝑐(𝑆((𝑡)=6;<+𝑆7;6:

+𝑁𝐴∗𝐴𝐵 𝑡𝑎𝑛𝜃+ 其中𝑆6;<和𝑆7;6:ENFNADF的面积,结合公式(8)

𝑥=𝑀((𝑡) (𝑡)∗ ⃗(𝑡)+𝑀(!%$((𝑡)∗ 𝑄⃗′(𝑡)=

(𝑡)+

6;<𝑏(𝜌i𝑥6+𝑥+𝑥<,𝑏(,𝑦6+𝑦;+<+7;6:𝑏((,𝑏(,: ;<(𝜌+ 𝑥+𝑥+𝑥+ 𝑐+0+ 𝑥 𝑐(𝑡𝑎𝑛𝜃 𝑡𝑎𝑛𝜃,(, l+𝑥𝑐 ,(,2=𝑐

𝑥

(2 (𝑡𝑎𝑛𝜃i𝑥 ,(,(j+𝑥𝑐(i,(,( 3𝑡𝑎𝑛𝜃 2

其中

(𝑡)分别代表三角形ENF和矩形ANEB对应的油体的质量,𝑄 和 ⃗(𝑡)分别代表三角形ENF和矩形ANEB对应的油体的相对点A的质心位置如果𝜽为负:计算过程类似于𝜃为正的步骤,最后得到

𝑡(

𝑥 i𝑎(−𝑥 ,(,(j+𝑥𝑐(i𝑎( ,(,𝑄⃗′(𝑡) 3𝑡𝑎𝑛𝜃 2 油面呈现为“五边形”ℎ((𝑡且𝜃$≤|𝜃|≤𝜃=10"如果𝜽为正已知𝑆((𝑡)为时刻𝑡下第𝑘个油箱的油在𝑥𝑧轴二维平面构成的面积,假设𝐴𝐹=𝑥𝑆((𝑡)=𝑆6?@+𝑆7:6<+𝑆<?@8=(𝑎(−𝑥)"𝑡𝑎𝑛𝜃

𝐸𝐺∗2

+𝐴𝐹∗𝐴𝐵+𝐹𝐷∗ +𝑥𝑐(+(𝑎(−𝑥)(𝑐(−(𝑎(−𝑥)𝑡𝑎𝑛𝜃) 其中𝑆6?@和𝑆7:6<和𝑆<?@8EGMABEFFGMD的面积,结𝑥=

2e𝑎(𝑐(−n n

(𝑡)∗ ⃗(𝑡)+𝑀(&)'(𝑡)∗ 𝑄⃗′(𝑡)

(𝑡)+

(𝑡)+

(𝑎(−𝑥)"𝑡𝑎𝑛𝜃𝑥+𝑥+𝑎(𝑏(𝑐(+2(𝑐(−(𝑎(− ,2 ( 𝑆(𝑥𝑏( 𝑎(+𝑥𝑏((𝑐(−(𝑎(−𝑥𝑐(i2,2,2j+(𝑎(−𝑥)(𝑐(−(𝑎(−𝑥)𝑡𝑎𝑛𝜃)( 𝑆(

,2 如果𝜽为负:计算过程类似于𝜃为正的步骤,最后得到(𝑄((𝑎(−𝑥)"𝑡𝑎𝑛𝜃2𝑎(−2𝑥𝑏(𝑐(+2(𝑐(−(𝑎(− ,2 ( 𝑆(𝑥𝑏( 𝑎(−𝑥𝑏((𝑐(−(𝑎(−𝑥𝑐(i𝑎(−2,2,2j+(𝑎(−𝑥)(𝑐(−(𝑎(−𝑥)𝑡𝑎𝑛𝜃)( 𝑆(

,2 模型求算法实现的关键基于质心公式的代码实现主要根据供油速度计算出当前的油箱质量根据当前质量,可以获得油体体积,从而得到矩形油面的高将相对质心的位置加上𝐴点坐标,获得油箱相对飞行器的质心算法实现伪代forboxinbox_list:fortintime_interval:

基于质心公式的代码实现伪form,vinm_list,v_list:h=current_V/𝜌ififtheta>theta2:使用梯形2公式计算mass_centerififtheta>theta4:使用梯形2公式计算mass_center模型结质心结果。下面将对关键时刻的质心求解结果进行展示,如表3所示:时xy时xy 备11秒,2-2.268e-俯仰角一0,-1.356e-俯仰角开始变化,并持续-3.050e-油 最后一质心变化曲线:已知质心为三的点,又因质心随着时间的变化而变化。时间𝑡的推移。当𝑡=1时颜色最深(黑色)𝑡=7200时颜色最浅(白色。模型有效=图(图11)的连续性也在这个意义上验证了方法的正确性。x,y,zt12x,y,z的变化都成连续趋势,很好的匹配了供油速度和俯仰角连续变化的特性。12:𝑥𝑦,𝑧轴数据分别随时间𝑡另外,本文补充了六个油箱单独的质心变化曲线,如图13(a)~(f。其连续性间接佐 13(a)~(f)六、问题二的问题分已知某次任务的飞行器计划耗油速度数据和飞行器在飞行器坐标系下的理想质心位质心位置(𝑡)与理想质心位置(𝑡)的欧氏距离的最大值达到最小。模型建约束条“油箱状态”约束:开与关。本文用𝑂((𝑡)表示第𝑘个油箱在时刻𝑡下的开关状态𝑂((𝑡)是一个示性函数,即𝑂((𝑡)=

“同时供油”约束:至多2个油箱同时向发供油,至多3个油箱同时供油。A1≤ 𝑂((𝑡)≤ /2≤ 𝑂((𝑡)≤3,𝑖𝑓𝑂!(𝑡)+𝑂/(𝑡)= /2≤ 𝑂((𝑡)≤3,𝑖𝑓𝑂!(𝑡)+𝑂/(𝑡)= “供油时间”约束:60秒。假设𝑇1为一个油箱最短的连续供油时间长度(单位为“秒),该约束可以描述为:𝑓(&)−((&9= 𝑖=1,2,…,7200− 𝑂(s𝑡Bt=𝑇+1,𝑇≥ “供油速度”四个主油箱的供油速度之和大于或等于飞行器所需耗油的速 A ((&(((&9!−((&))≥𝑁𝑒𝑒𝑑(𝑡&),𝑖=1,2,… &𝑀((𝑖)=𝑀((0)−

𝑖=1,2,… 𝑣((𝑡)≤,-. 上述公式中以𝑁𝑒𝑒𝑑(𝑡)表示飞行器在𝑡时刻下所需要消耗油的质量,𝑣((𝑡)表示第𝑘个油箱在时刻𝑡下的供油的速(单位为“千克/秒,𝑀((𝑡k个油箱在时刻𝑡下的剩余油的质量,,-.𝑘表示第𝑘个油箱参数中目标函𝑐⃗(𝑡)𝑐⃗ "#"‖𝑐⃗(𝑡)−𝑐⃗ =xs𝑥(𝑡)−𝑥(𝑡)t"+s𝑦(𝑡)−𝑦(𝑡)t"+s𝑧(𝑡)−𝑧 A 1≤ 𝑂((𝑡)≤⎪ 2≤⎪⎪⎪/

𝑂(𝑡)≤3,𝑖𝑓𝑂(𝑡)+𝑂(𝑡)= 2≤ 𝑂((𝑡)≤3,𝑖𝑓𝑂!(𝑡)+𝑂/(𝑡)= 𝑖𝑓𝑂(𝑡)−𝑂 )=𝑠. & 𝑂(s𝑡Bt=𝑇+1,𝑖=1,2,…,7200−𝑇,𝑇≥A A 𝑂(𝑡)(𝑀 )−𝑀(𝑡))≥𝑁𝑒𝑒𝑑(𝑡),𝑖=1,2,… ( ⎪

( & 𝑀((𝑖)=𝑀((0)−

𝑖=1,2,… 𝑣((𝑡)≤,-.𝑐⃗(𝑡)={!()!(𝑡)!(𝑡 𝑐"⃗(𝑡)={𝑥"(𝑡),𝑦"(𝑡),𝑧"(𝑡) ! !𝑡 !(𝑡表示为本文所求得的质心位置的空间坐标,𝑥"(𝑡),𝑦"(𝑡),𝑧"(𝑡)表单目标优化模⃗(𝑡),850𝑘𝑔/𝑚$X𝑉(𝑡)= 因为题干中说明飞机没有俯仰角,又已知油箱的长宽高分别为𝑎(、𝑏(、𝑐(𝑡((⃗(𝑡):ℎ(𝑡)

850∗𝑎(∗𝑄⃗(𝑡)=e𝑥,𝑦,𝑧+ℎ((𝑡)−

𝑐⃗

𝑚%+

𝑀((𝑡) 下面要计算𝑀((𝑡)𝑄(⃗(𝑡)。𝑄(⃗(𝑡)由𝑀((𝑡)决定,𝑀((𝑡)由供油策略决定,供油策略为0模型求表4:满足约束条件的供油组合列表供油箱 供油组单箱供油(4种 【2【3【4【5【1,21,31,41,5【2,32,42,52,6双箱供油(14种三箱供油(16种

【3,43,53,6【4,54,6【5,6【1,2,31,2,41,2,51,2,6【1,3,41,3,51,3,6【1,4,51,4,6【1,5,6【6,2,36,2,46,2,5【6,3,46,3,5【6,4,534种供油组合,7200秒内则有34E"%%种情况,这是一个指数级别的计算规模,难以准确求得模型假“油箱供油时长”假设:每个油箱每次供油的持续时长为𝑇(𝑇为飞行时长“油箱供油速度”假设:2521号油箱以最大供油速度供油。5“油箱供油比例”假设:当有多个油箱为发供油时,本文假设这两个油箱在“油箱供油总量”假设:油箱不会多供油,即向发供油的量与发消耗的算法思想--贪婪策基于贪心思想的飞行器供油策略等于发耗油速度+&)𝑡)如果否,则按照固定比例对组合油箱的供油速检查该速度是否违背油箱“供油速度约束”的2个子项(四个主油箱;基于贪心思想的飞行器供油策略for𝑇inforitemin选中的油箱: 未选中:𝑂(=𝑆((𝑡)=)𝑡𝑆((𝑡)=𝑟𝑎𝑡𝑖𝑜∗))ifsum(𝑆((𝑡))<+&)𝑡or𝑆((𝑡)>,-.or𝑀((𝑡)<0:求解得计算计算模型结结果分本文使用Python语言实现了上述模型约束,并用贪心思想进行了模型求解。本文将满足假设条件“607200的因数”的所有𝑇情况进行代入求解,用算法计算出质心欧实验发现:过长的持续供油时间会导致质心失衡,𝑇的合适范围为60~90。在60~90范14所示,当𝑻=𝟖𝟓时, 10

0 10

10

11000015(a)~(f)1000 16:641721000质心点的坐标为(-1.8139,0.0678,0.0316)结果总心位置距理想质心欧式距离最小的6个油箱供油策略,据此求得的结果如表7。要答已完模型有效1.69945、1.4、1.59643、1.1,均不大于附件一中给出的油箱的最大供油速度限制1.1、1.81.7、1.5、1.6、1.1对比飞行中油箱最大供油速度(单位为:千克/秒实际供供油上为了验证(2),从图18中可以看出,飞行器的耗油速度曲线与4个主油箱的供油速度321000 七、问题三的问题分已知某次任务的飞行器计划耗油速度数据和飞行器在飞行器坐标系下的理想质心位6油箱初始载油量及供油策略,目标是使得飞行器每一时刻质心位置(𝑡)与理想质心位置𝑐"⃗(𝑡)的欧氏距离的最大值达到最小。初步分析,该问题仍然是一个目标模型建约束条在任务结束时,6个油箱中的剩余燃油总量至少有1𝑚$。已知油的密度为850𝑘𝑔/𝑚$,所以该约束等价于在7200秒时,6个油箱中的剩余燃油总量的质量至少有850𝑘𝑔。第𝑘个油箱分配得到的油量为𝑀(,因此该目标可在数学上表达为/ 𝑀((7200)≥

本文基于这样的考虑:6个油箱中油的总重量至少为飞行器在这段时间内的总耗油量知油的密度为850𝑘𝑔/𝑚$,第𝑘个油箱的长宽高分别为𝑎、𝑏(、𝑐(,因此该约束可表达为:𝑀(≤850∗𝑎(∗𝑏(∗ / 𝑀(=

“初始质心”约束:分配后,飞行器的质心要尽可能地接近0时刻的理想飞行器质心。在0时刻飞行器的理想质心为(𝑥%,𝑦%,𝑧%),飞行器质量为𝑚%,第𝑘个油箱在𝑥、𝑦、𝑧轴方向的中心位置分别表示为𝑥(、𝑦(、𝑧(3 = 𝑚%+ = 𝑚%+∑∑

−+850∗𝑎(∗ 2

= 𝑚%+0目标函目标一𝐷(0) 𝑐,⃗!"' 𝑀&(7200)≥ 𝑀&≤850∗𝑎&∗𝑏&∗ 𝑀&=

−𝑐&𝑠. 𝑀&F𝑧&+850∗𝑎&∗ (

𝑐,$⃗0

,&($ ,⎪⎪⎪⎪⎪⎩目标二

⎨𝑚)+⎪⎪⎩

𝑚)+𝑐,⃗

𝑚)+ ⎪⎪⎭𝑐⃗(𝑡)𝑐⃗ #/ 𝑀((7200)≥ 𝑀(≤850∗𝑎(∗𝑏(∗ ⎪ 𝑀(=⎪ =𝑠. 𝑚%+ ⎪⎪⎪⎪

=𝑚%+ −2+850∗𝑎(∗ 2 =⎩7.3.3单目标优化模

𝑚%+针对目标一:差分进化 差分优化步。针对目标二:同问题二贪心模型求算法实现的关键问题三求解算法T𝑀取值进行实验,求得每个𝑀%对应的质心欧式距离最大值的最小值,拟合不同𝑀%取值下的欧式距离然后再用多个不同𝑀%取值进行实验求得每个𝑀%对应的质心欧式距离最大值的最小值,实验结果如图19所示:000初始油量质心欧式距离的最图 19:不同初始油量质心欧式距离的最11展示了不同𝑀%取值下的欧式距离最大值,可以看出初始油总7655.17467+0.5*850=8080.1467时产生了最佳的分配方案,此时飞行器质心与理想质心距离的最大值为0.172049米。模型结结果分12:6123456000

210 110001000020(a)~(f)42121000飞行器瞬时质心与飞行器(不载油)质心𝑐⃗%的最大距离偏差0.172049米,此时飞行器飞行3349秒,质心点的坐标为(0.5786,-0.1050,-0.0433)。结果总量及供油策略,使得结束时6个油箱剩余燃油总量至少1𝑚$,并且飞行器每一时刻的质心位置与理想质心位置的欧氏距离的最大值达到最小,据此求得的结果如表13所示:要 答

给出6个油箱的供油速度曲线 图给出4个主油箱的总供油速度曲线 图飞行器质心与理想质心距离的最大值 给出4个主油箱的总供油量; 将6个油箱的初始油量存入结果表中; 将6个油箱的供油速度数据按时间存入结果表中; 模型有效为了验证(2),从图20、表14中可得1~6号油箱的实际供油速度分别为0.7、1.763、kg/s1.1、1.8、1.7、1.5、1.6、1.1对比飞行中油箱最大供油速度(单位为:千克/秒实际供供油上为了验证(3),从图22中可以看出,飞行器的耗油速度曲线与4个主油箱的供油速度21000 八、问题四的问题分𝑐⃗(𝑡)模型建本问题在问题二的基础上增加了一个约束条件:飞行器的俯仰角𝜃会随时间变化,另外本问题将飞行器的质心固定为飞行器不载油时的质心𝑐⃗%=(0,0,0)。模型求(1)在计算欧式距离时,飞行器的理想质心坐标不再由附件读入,而是替换为𝑐⃗(2)引入了俯仰角,俯仰角是从附件中读入的随时间变化的函数𝜃#,因此计算飞行器质心坐标需要使‖𝑐⃗(𝑡)−𝑐"⃗(𝑡)‖"=(!(𝑡−0)"+(!(𝑡)−0)"+!(𝑡)−& 𝑀&(𝑡)&

𝑐⃗

𝑚%+ &基于贪心思想的飞行器供油策略等于发耗油速度+&)𝑡)如果否,则按照固定比例对组合油箱的供油速;中解得的与𝜃和6个油箱质量有关的质心坐标计算公式来计算欧式距离;模型结结果分实验发现:当𝑻=𝟔𝟕时,质心欧式距离的最大值达到最小。110

0 10

10000 10

10

23(a)~(f)1000 飞行器瞬时质心与飞行器(不载油)质心𝑐⃗%的最大距离偏差0.241299米,此时飞行3840秒,质心点的坐标为(-0.2345,-0.05660.0046)结果总要 答飞行器飞行过程中6个油箱各自的供油速度曲线 图4个主油箱的总供油曲线与计划耗油速度曲线 图 给出4个主油箱的总供油量; 将6个油箱的供油速度数据按时间顺序存入表中。 模型有效为了验(1),从图2317中可得1~6号油箱的实际供油速度分别为0.66715678、kg/s制1.1、1.8、1.7、1.5、1.6、1.1。对比飞行中油箱最大供油速度(单位为:千克/秒实际供 供油上 为了验证(2),从图24中可以看出,飞行器的耗油速度曲线与4个主油箱的供油速度九、模型本文建立的模型针对质算问题采用了分类策略,对各种情况进行了详细的分较低,时间复杂度为O(n),空间复杂度为O(1),并且更加可靠与快速,为类似的问题提行问题解答,算法的时间复杂度为O(n),空间复杂度为O(1),能够更快更好地求得近似十、参考[1],王水清.差分优化算法及其应用[J].科技视界,2017,000(008):107-[2].单目标、多目标优化进化算法及其应用[D].理工大学,[3]美.平面组合图形质心的计算[J].合肥师范学院学报,[4].浅谈算法设计技术——贪心策略[J].电脑知识与技术,2009,十一、问题一算法求解代importimportxlrdimportxlwtimport#xyzzbc都以m为单位box1_xyz=[8.91304348,1.20652174,box2_xyz=[6.91304348,-1.39347826,box3_xyz=[-1.68695652,1.20652174,-box4_xyz=[3.11304348,0.60652174,-box5_xyz=[-5.28695652,-0.29347826,box6_xyz=[-2.08695652,-1.49347826,box_xyzs=[box1_xyz,box2_xyz,box3_xyz,box4_xyz,box5_xyz,box6_xyz]box1_abc=[1.5,0.9,0.3]box2_abc=[2.2,0.8,box3_abc=[2.4,1.1,box4_abc=[1.7,1.3,box5_abc=[2.4,1.2,box6_abc=[2.4,1,box_abcs=[box1_abc,box2_abc,box3_abc,box4_abc,box5_abc,box6_abc]box_xyz0s=[]forjinbox_abc=box_abcs[j]box_xyz=box_x0=box_xyz[0]-0.5*box_y0=box_xyz[1]-0.5*box_abc[1]box_z0=box_xyz[2]-0.5*box_abc[2]planet_m0=3000#kgru=850#kg/m^3box_vs=[0.3,1.5,2.1,1.9,2.6,0.8]box_ms=foriindefcalMassCenterOfSingleBox(h,theta,a,b,c):iftheta==0:#矩形print('矩形record_cal[0]=record_cal[0]+1return[a/2,b/2,h/2]iftheta>0tan_theta ifa*tan_theta/2handa*tan_theta/2c-h1- print('梯形1-正record_cal[1]=record_cal[1]+1mass_center_rect=[a/2,b/2,h/2-a*tan_theta/4]mass_center_tria=[a/3,b/2,h-a*tan_theta/6]m_rect=(h-a*tan_theta/2)*am_tria=#print(str(m_rect+m_tria)+''+str(a*h))mass_center_sum=[0,0,0]foriin return[k/(m_rect+m_tria)forkin

ifh<=c/2andtan_theta>=(h*2)/aandprint('1-正')=record_cal[2]+ returnifh>c/2andtan_theta>(c-h)*2/aandtan_theta<pow(c,2)/(2*a*(c-

print('1-正')=record_cal[3]+x=a-pow(2*a*(c-h)/tan_theta,0.5)mass_center_rect1=[x/2,b/2,c/2]m_rect1=x*cmass_center_rect2=[x/2+a/2,b/2,(c-(a-x)*tan_theta)/2]m_rect2=(a-x)*(c-(a-x)*tan_theta)mass_center_tria=[(a+2*x)/3,b/2,c-2*(a-x)*tan_theta/3]m_tria=pow(a-x,2)*tan_theta/2#print(str(m_rect1+m_rect2+m_tria)+''+str(a*h))mass_center_sum=[0,0,0]foriinmass_center_sum[i]=mass_center_rect1[i]*m_rect1mass_center_rect2[i]*m_rect2+mass_center_tria[i]*return[k/(m_rect1+m_rect2+m_tria)forkinifh<=c/2anda*tan_theta/2>=hand2*tan_theta*a*h>pow(c,2orif(h<=c/2andtan_theta>pow(c,2)/(2*a*h))or(h>c/2andtan_theta>=pow(c,2)/(2*a*(c-print('梯形2-正record_cal[4]=record_cal[4]+#mass_center_rect=[a*h/2*c-c/4*tan_theta,b/2,c/2]x=a*h/c-c/(2*tan_theta)mass_center_rect=[x/2,b/2,c/2]m_rect=a*h-mass_center_tria=[x+c/(3*tan_theta),b/2,c/3]m_tria=pow(c,2)/(2*tan_theta)#print(str(m_rect+m_tria)+''+str(a*h))mass_center_sum=[0,0,0]foriinmass_center_sum[i]=mass_center_rect[i]*m_rect+mass_center_tria[i]*m_triareturn[k/(m_rect+m_tria)forkinmass_center_sum]#return[a/2,b/2,h/2]iftheta<0theta=tan_theta= #ifa*tan_theta2handa*tan_theta2ch):print('梯形1-负')record_cal[5]=record_cal[5]+mass_center_rect=[a/2,b/2,h/2-a*tan_theta/4]mass_center_tria=[2*a/3,b/2,h-a*tan_theta/6]m_rect=(h-a*tan_theta/2)*am_tria=a*a*tan_theta/2mass_center_sum=[0,0,0]foriinrange(3):mass_center_sum[i]=mass_center_rect[i]*m_rect+mass_center_tria[i]*m_triareturn[k/(m_rect+m_tria)forkinifh<=c/2andtan_theta>=(h*2)/aandtan_theta<=pow(c,2)/(2*a*h):print('三角形1-负')record_cal[6]=record_cal[6]+ returntan_theta/

ifh>c/2andtan_theta>(c-h)*2/aandtan_theta<pow(c,2)/(2*a*(c-h)):print('五边形1-负')record_cal[7]=record_cal[7]+x=a-pow(2*a*(c-h)/tan_theta,0.5)mass_center_rect1=[a-x/2,b/2,c/2]m_rect1=x*cmass_center_rect2=[a/2-x/2,b/2,(c-(a-x)*tan_theta)m_rect2=(a-x)*(c-(a-x)*mass_center_tria=[(2*a-2*x)/3,b/2,c-2*(a-x)m_tria=pow(a-x,2)*tan_theta/#print(str(m_rect1+m_rect2+m_tria)+''+str(a*h))mass_center_sum=[0,0,0]foriinmass_center_sum[i]=mass_center_rect1[i]*m_rect1mass_center_rect2[i]*m_rect2+i]*return[k/(m_rect1+m_rect2+m_tria)forkinifh<=c/2anda*tan_theta/2>=hand2*tan_theta*a*h>pow(c,2or(h>c/2and(h+a*tan_theta/2)>=candtan_theta*2*a*(c-h)>=pow(c,2)):#梯形if(h<=c/2andtan_theta>pow(c,2)/(2*a*h))or(h>c/2andtan_theta>=pow(c,2)/(2*a*(c-h))):print('梯形2-负record_cal[8]=record_cal[8]+mass_center_rect=[a-a*h/(2*c)+c/(4*tan_theta),b/2,c/2]m_rect=a*h-pow(c,2)/(2*tan_theta)mass_center_tria=[a-a*h/c+c/(6*tan_theta),b/2,c/3]m_tria=pow(c,2)/(2*tan_theta)#print(str(m_rect+m_tria)+''+str(a*h))mass_center_sum=[0,0,0]foriinmass_center_sum[i]=mass_center_rect[i]*m_rect+mass_center_tria[i]*m_triareturn[k/(m_rect+m_tria)forkinmass_center_sum]#return[a/2,b/2,h/2]massCenters=[]foriinweight_vweight_vs[i+1]#kg/sdelta_m=weight_v*1m_current=box_ms[i]-delta_mbox_ms[i]=m_currentv_current=m_current/rubox_vs[i]=v_currentbox_s=v_current/box_abcs[i][1]#当前的油体侧面hbox_sbox_abcs[i][0]theta=0,计算出的油面高度print('a:'+massCenter=calMassCenterOfSingleBox(h,theta,box_abcs[i][0],box_abcs[i][1],box_abcs[i][2])forpinmassCenter[p]massCenter[p]+box_xyz0s[i][p]将坐标系转returnweight_table=weight_data.sheets()[0]#print(weight_table.row_values(7199))#7200条数据##print(weight_data['时间(s)'])theta_table=theta_data.sheets()[0]#7200条数据#workbookresult_bookxlwt.Workbook(encoding'utf-8')#创建一个worksheetresult_sheet=result_sheet.write(0,0,result_sheet.write(0,1,result_sheet.write(0,2,#写入excel#参数对应行,列,#planet_mass_centers=[]foriinrange(weight_table.nrows-1):weight_vs=weight_vs[2]weight_vs[2]weight_vs[1]#12weight_vs[5]weight_vs[5]weight_vs[6]#65theta=theta_table.row_values(i+1)[1]mass_centers=calMassCenters(weight_vs,theta)#print(box_ms)sum_m=3000 sum_mass_center=[0,0,0]#*sum_mforkinrange(6):#print(mass_center)m=box_ms[k]sum_m=sum_m+m mass_center_planet=[t/sum_mfortinsum_mass_center]result_sheet.write(i+1,0,label=str(i+1))result_sheet.write(i+1,1,result_sheet.write(i+1,2,result_sheet.write(i+1,3,label=str(mass_center_planet[2]))#print(record_cal)#forpinbox_mass_center=box_mass_centers[p]result_bookxlwt.Workbook(encoding='utf-8')#创建一个worksheetresult_sheet=result_sheet.write(0,result_sheet.write(0,0,result_sheet.write(0,1,result_sheet.write(0,2,result_sheet.write(0,3,foriinrange(len(box_mass_center)-1):mass_center=box_mass_center[i]result_sheet.write(i+1,0,label=str(i+1))result_sheet.write(i+1,1,result_sheet.write(i+1,2,result_sheet.write(i+1,3,label=str(mass_center[2]))问题二算法求解代importimportpandasasdf_plane_v=pd.read_excel('附件3-问题2数据.xlsx',sheet_name=0)plane_v=df_plane_v['耗油速度(kg/s)'].tolist()#whileplane_v[0]== plane_v=plane_c_gt_xdf_plane_c_gt['X坐标(米)']plane_c_gt_y=df_plane_c_gt['y坐标(米)']plane_c_gt_z=df_plane_c_gt['z坐标(米)'] total_time=sum_l=beiyong_per=favor=0.09forsplit_timeinrange(60,#iftotal_time%split_time==percentages=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,choices=[[2],[3],[4],[2,3],[2,4],[2,5],[3,4],[3,5],[4,5],[1,2],[1,3],[1,4],[1,5],[6,2],[6,[6,5],[1,2,6],[1,3,6],[1,4,6],[1,5,6],[1,2,3],[1,2,4],[1,2,5],[1,[1,3,[1,4,[6,2,3],[6,2,4],[6,2,5],[6,3,4],[6,3,5],[6,4,upper_bounds=[1.1,1.8,1.7,1.5,1.6,box_sizes=[(1.5,0.9,0.3),(2.2,0.8,1.1),(2.4,1.1,0.9),(1.7,1.3,1.2),(2.4,1.2,1),1,box_max_volume=last_oil=best_oil=Nonekexin_flag=Truebegin_time=0whilebegin_time+60<=7200:final_choice=Nonemin_dis=Nonev_best=[]best_dist=[]end_time=min(begin_time+split_time,7200)#print(begin_time)need_oil=sum(plane_v[begin_time:end_time])forchoiceinchoices:oilitemforitemin #v=max_dis #choice_tmp_dist=[]iflen(choice)==1:v=#box_ichoice[0]1#ifupper_bounds[box_i]<max(plane_v[begin_time:end_time])or\

box_i]<oil,box_sizes)]:-c[2],2))**

foriinrange(begin_time,end_time):-=plane_v[i]c=[0,0,0]forvecin[(m*box_center[0],m*m*(box_center[2]+(m/850*box_size[0]*box_size[1])-for(box_center,m,box_size)inzip(box_centers,c[0]+=(vec[0]/(3000+c[1]+=(vec[1]/(3000+c[2]+=(vec[2]/(3000+sum(oil)))c_gt=plane_c_gt[i]ifmax_disisNone:max_dis=max_dis=max(max_dis,choice_tmp_dist.append("%d,%s"%(i,max_dis))eliflen(choice)==2:ifchoice==[1,2]orchoice==[2,1]:v=[]choice=[1,box_i_a=1-box_i_b=2-ifupper_bounds[box_i_b]max(plane_v[begin_time:end_time])orbox_i_b]<sum(plane_v[begin_time:end_time]):foriinrange(begin_time,end_time):v_b=plane_v[i]v_a=min(v_b*beiyong_per,upper_bounds[box_i_a])ifoil[box_i_a]-v_a<0:#v_a=oil,box_sizes)]:-c[2],2))**

oil[box_i_a]-=v_aoil[box_i_b]-=(v_b-v_a)v.append([v_a,v_b])c=[0,0,forvecin[(m*box_center[0],m*m*(box_center[2]+(m/850*box_size[0]*box_size[1])-for(box_center,m,box_size)inzip(box_centers,c[0]+=(vec[0]/(3000+c[1]+=(vec[1]/(3000+c[2]+=(vec[2]/(3000+sum(oil)))c_gt=plane_c_gt[i]ifmax_disisNone:max_dis=

ifdis>max_dis:max_dis=dis

choice_tmp_dist.append("%d,%s"%(i,max_dis))elifchoice==[5,6]orchoice==[6,5]:v=[]box_i_a=6-box_i_b=5-##print(max(plane_v[split_time*split_iter:split_time*(split_iterifupper_bounds[box_i_b]max(plane_v[begin_time:end_time])oroil[box_i_b]<sum(plane_v[begin_time:end_time]):foriinrange(begin_time,end_time):v_b=plane_v[i]v_a=min(v_b*beiyong_per,upper_bounds[box_i_a])ifoil[box_i_a]-v_a<0:#v_a=0v.append([v_a,v_b])oil[box_i_a]-=v_aoil[box_i_b]-=(v_b-v_a)c=[0,0,0]oil,box_sizes)]:-c[2],2))**

forvecin[(m*box_center[0],m*m*(box_center[2]+(m/850*box_size[0]*box_size[1])-for(box_center,m,box_size)inzip(box_centers,c[0]+=(vec[0]/(3000+c[1]+=(vec[1]/(3000+c[2]+=(vec[2]/(3000+sum(oil)))c_gt=plane_c_gt[i]ifmax_disisNoneordis>max_dis:max_dis=dischoice_tmp_dist.append("%d,%s"%(i,max_dis))elif6notinchoiceand1notinchoice:box_i_a=choice[0]-1box_i_b=choice[1]-best_max_dis percentagebest_c_oil #v_tmp_best=[]dist_best=[]forpercentageinpercentages:v_tmp=[]dist_tmp=[]c_oil=[itemforiteminoil]flag=Trueforiinrange(begin_time,end_time):v_a=percentage*plane_v[i]v_b=(1-percentage)*plane_v[i]v_tmp.append([v_a,v_b])elifc_oil[box_i_a]-v_a<0orc_oil[box_i_b]-v_b<0:flag=False

c_oil[box_i_a]-=v_abox_size[1])-box_size[2])/2))2))**0.5

c=[0,0,forvecin[(m*box_center[0],m*m*(box_center[2]+(m/ c[0]+=(vec[0]/(3000+c[1]+=(vec[1]/(3000+c[2]+=(vec[2]/(3000+sum(c_oil)))c_gt=plane_c_gt[i]dis=(pow(c_gt[0]-c[0],2)+pow(c_gt[1]-c[1],2)iftmp_max_disisNone:tmp_max_dis=ifdis>tmp_max_dis:tmp_max_dis=disdist_tmp.append("%d,%s"%(i,ififbest_max_disisNoneor(tmp_max_disisnotNonetmp_max_dis<

best_max_dis=tmp_max_disbest_c_oil=c_oil[:]v_tmp_best=v_tmpdist_best=dist_tmpifbest_c_oilisnotNone:oil=best_c_oil[:]max_dis=best_max_disv=v_tmp_bestchoice_tmp_dist=dist_besteliflen(choice)==if1inchoiceand2inchoiceand6notinchoice:box_i_a=1-box_i_b=2-box_i_c=choice[-1]-1c_oil=[itemforiteminoil]best_c_oil=None

best_max_dis percentagev_tmp_best=[]dist_best=[]forpercentageinpercentages:tmp_max_dis=Nonec_oil=[itemforiteminoil]flag=Truev_tmp=[]foriinrange(begin_time,end_time):v_b=percentage*plane_v[i]v_c=(1-percentage)*v_a=min(v_b*beiyong_per,upper_bounds[box_i_a])v_tmp.append([v_a,v_b,v_c])elifc_oil[box_i_b]-v_b<0orc_oil[box_i_c]-v_c<0:flag=Falsebox_size[1])-box_size[2])/2))2))**0.5

ifc_oil[box_i_a]-v_a<0:v_a=0c_oil[box_i_b]-=(v_b-v_a)c_oil[box_i_c]-=v_cc_oil[box_i_a]-=v_ac=[0,0,forvecin[(m*box_center[0],m*m*(box_center[2]+(m/ c[0]+=(vec[0]/(3000+c[1]+=(vec[1]/(3000+c[2]+=(vec[2]/(3000+sum(c_oil)))c_gt=plane_c_gt[i]dis=(pow(c_gt[0]-c[0],2)+pow(c_gt[1]-c[1],2)if

iftmp_max_disisNoneordis>tmp_max_dis:tmp_max_dis=disdist_tmp.append("%d,%s"%(i,tmp_max_dis<

ifbest_max_disisNoneor(tmp_max_disisnotNonebest_max_dis=tmp_max_disbest_c_oil=c_oil[:]v_tmp_best=v_tmpdist_best=dist_tmp

ifbest_c_oilisnotNone:oil=best_c_oilmax_dis=best_max_disv=v_tmp_bestchoice_tmp_dist=dist_bestelif5inchoiceand6inchoiceand1notinchoice:box_i_a=6-1box_i_b=5-1box_i_c=choice[0]-1c_oil=[itemforiteminoil]best_c_oil=Nonebest_max_dis percentagev_tmp_best=[]dist_best=Noneforpercentageinpercentages:tmp_max_dis=Nonec_oil=[itemforiteminoil]flag=Truev_tmp=[]foriinrange(begin_time,end_time):v_b=percentage*plane_v[i]v_c=(1-percentage)*v_a=min(v_b*beiyong_per,upper_bounds[box_i_a])v_tmp.append([v_c,v_b,v_a])elifc_oil[box_i_b]-v_b<0orc_oil[box_i_c]-v_c<0:flag=Falsebox_size[1])-box_size[2])/2))pow(c_gt[2]-

ifc_oil[box_i_a]-v_a<0:v_a=0c_oil[box_i_b]-=(v_b-v_a)c_oil[box_i_c]-=v_cc_oil[box_i_a]-=v_ac=[0,0,forvecin[(m*box_center[0],m*m*(box_center[2]+(m/ c[0]+=(vec[0]/(3000+c[1]+=(vec[1]/(3000+c[2]+=(vec[2]/(3000+sum(c_oil)))c_gt=plane_c_gt[i]dis=(pow(c_gt[0]-c[0],2)+pow(c_gt[1]-c[1],2)2))**

if

iftmp_max_disisNoneordis>tmp_max_dis:tmp_max_dis=disdist_tmp.append("%d,%s"%(i,tmp_max_dis<

ifbest_max_disisNoneor(tmp_max_disisnotNonebest_max_dis=tmp_max_disbest_c_oil=c_oil[:]v_tmp_best=v_tmpdist_best=dist_tmpifbest_c_oilisnotNone:oil=best_c_oilmax_dis=best_max_disv=v_tmp_bestchoice_tmp_dist=dist_best#oil_map[tuple(choice)]=oilifmax_disisNone:ifmin_disisNoneormin_dis>max_dis:min_dis=max_disfinal_choice=best_oil=[itemforiteminoil]v_best=vlast_oil_total=sum(last_oil)last_oil=[itemforiteminbest_oil]#pprint.pprint(oil_map)##print(min_dis)forlinifmax([float(best_dist[p].split(',')[1])forpinrange(len(best_dist))])<=favor:favor_flag=Falseifl<iffloat(best_dist[l].split(',')[1])>favor:favor_flag=Falseiffloat(best_dist[l].split(',')[1])>favor:begin_time=begin_time+lifnotiffinal_choiceisNone:kexin_flag=Falseiffinal_max_min_disisNone:final_max_min_dis=min_dis

ifmin_dis>#fordinbest_dist: #print(v_best)iffinal_choiceisNone:kexin_flag=Falseiffinal_max_min_disisNoneormin_dis>final_max_min_dis:final_max_min_dis=max([float(best_dist[p].split(',')[1])forpinrange(l)])#fordin#print(d)sum_l+=lv_best=v_best[:l]#print(v_best)#print(last_oil)#print(abs(last_oil_total-(need_oil+sum(last_oil)))<0.01)#print()##print(sum_l)print("%f"%问题三算法求解代importimportpandasasdf_plane_v=pd.read_excel('附件4-问题3数据.xlsx',sheet_name=0)plane_v=df_plane_v['耗油速度(kg/s)'].tolist()#whileplane_v[0]== plane_v=plane_c_gt_xdf_plane_c_gt['X坐标(米)']plane_c_gt_y=df_plane_c_gt['y坐标(米)']plane_c_gt_z=df_plane_c_gt['z坐标(米)']plane_c_gt=[(plane_c_gt_x[i],plane_c_gt_y[i],plane_c_gt_z[i])foriintotal_time=beiyong_per=0.5forsplit_timeinrange(60,iftotal_time%split_time==percentages=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,[6,[1,3,

choices=[[2],[3],[4],[2,3],[2,4],[2,5],[3,4],[3,5],[4,5],[1,2],[1,3],[1,4],[1,5],[6,[6,[6,5],[1,2,6],[1,3,6],[1,4,6],[1,5,6],[1,2,3],[1,2,4],[1,2,[1,3,[1,4,[6,2,3],[6,2,4],[6,2,5],[6,3,4],[6,3,5],[6,4,upper_bounds=[1.1,1.8,1.7,1.5,1.6,box_sizes=[(1.5,0.9,0.3),(2.2,0.8,1.1),(2.4,1.1,0.9),(1.7,1.3,1.2),(2.4,1.2,(2.4,1,#last_oil=[344,1645,1580.63568964,1399.56408643, best_oil=Nonekexin_flag=Trueforsplit_iterinrange(0,int(7200/split_time)):final_choice=Noneoil_map={}v_best=[]need_oil=sum(plane_v[split_time*split_iter:split_time*(split_iter+1)])forchoiceinchoices:oilitemforitemin #v=max_dis #iflen(choice)==v=#box_ichoice[0]1#先判断符不符合 <max(plane_v[split_time split_time*(split_iter+1)])or\*(split_iter+

box_i]<sum(plane_v[split_time*split_iter:box_size[2])/

foriinrange(split_time*split_iter,split_time*(split_iter+1)):oil[box_i]-=plane_v[i]c=[0,0,0]forvecin[(m*box_center[0],m*m*(box_center[2]+(m/850*box_size[0]*box_size[1]) pow(c_gt[2]-c[2],2))**

c[0]+=(vec[0]/(3000+c[1]+=(vec[1]/(3000+c[2]+=(vec[2]/(3000+sum(oil)))c_gt=plane_c_gt[i]dis=(pow(c_gt[0]-c[0],2)+pow(c_gt[1]-c[1],2)ifmax_disisNone:max_dis=max_dis=max(max_dis,1)])or(split_iter+

eliflen(choice)==ifchoice==[1,2]orchoice==[2,1]:v=[]choice=[1,box_i_a=1-box_i_b=2-ifupper_bounds[box_i_b]<plane_v[split_time*split_iter:split_time*(split_iterbox_i_b]<sum(plane_v[split_time*split_iter:split_time*foriinrange(split_time*split_iter,split_time*(split_iter+box_size[2])/2))pow(c_gt[2]-c[2],2))**

v_b=v_a=min(v_b*beiyong_per,upper_bounds[box_i_a])ifoil[box_i_a]-v_a<0:#v_a=0oil[box_i_a]-=v_aoil[box_i_b]-=(v_b-v_a)v.append([v_a,v_b])c=[0,0,forvecin[(m*box_center[

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论