C/C++实现无人机充电站管理系统[2024-10-09]

C/C++实现无人机充电站管理系统[2024-10-09]

题目五:无人机充电站管理

【问题描述】
无人机集群执行任务时,如果临时遇到机群电量不足的情况,则需要在相应充电站进行充电。假设无人机充电站是一个可以停放n架无人机的狭长通道,只有一个入口可供无人机进出。每架无人机从外面进入充电站前都会经过门外的便道,无人机在充电站内按到达的先后顺序依次排列进行充电,如果充电站内已停满无人机,则后来的无人机只能依次在便道上等候,一旦充电站内有无人机离开后,排在便道上的第一架无人机即可进入;当充电站内某架无人机要离开时,在它之后进入的无人机必须先退出充电站为它让路,待该无人机飞出充电站后,为它让路的无人机再按原次序进入充电站继续充电。假设便道上停的无人机数量不做限制。每架无人机在它离开充电站时必须按它充电时间的长短计算所充电量。试为充电站编制按上述要求进行管理的模拟程序。

【基本要求】
以栈模拟充电站,以队列模拟充电站外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:无人机“到达”或者“离去”的信息、无人机编号信息、无人机到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是无人机到达,则输出无人机在充电站内或便道上的停靠位置;若是无人机离去,则输出无人机在充电站内停留的时间和所充电量(在便道上停靠时没有充电)。栈以顺序结构实现,队列以链表结构实现。

【实现提示】
需另设一个栈,临时停靠为给要离去的无人机让路而从充电站退出的无人机,也用顺利存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一架无人机,包含两个数据项:无人机的编号信息和进入充电站的时刻。

【测试数据】
设n=2,输入数据为:(a,1,5),(a,2,10),(d,1,15),(a,3,20),(a,4,25),(a,5,30),(d,2,35),(d,4,40),(e,0,0)。其中,a表示到达(arrive);d表示离开(departure);e表示结束(end)。

【必选内容】
(1) 两个栈共享空间,思考应开辟数组的空间是多少?
(2) 无人机可以有不同种类,而不同种类的无人机每小时充电量不同,因此同样时间内所充电量总和也有所不同。如B型无人机每小时充电量为A型无人机的1.5倍,而C型无人机每小时充电量是A型无人机的3倍。请思考如何修改程序以满足这种要求。
(3) 停靠在便道上的无人机也可进行充电,只是充电速度比充电站内的速度更慢,在无人机离开时也必须按它充电时间的长短计算所充的电量总和,请思考如何修改结构以满足这种要求。
(4) 假设在无人机群组充电过程中,突然接到紧急任务必须立刻执行:需要立马安排x架A型无人机、y架B型无人机、z架C型无人机飞出充电站执行任务,任务大约需完成m个工作量。充电站内停下的无人机总数存在两种情况:①大于等于x+y+z;②小于x+y+z,因此也可能需要调用便道上的无人机,而便道上的无人机所储电量还较低,充电速度也较慢。已知:①单位时间内1架B型无人机可完成的工作量是1架A型无人机的2倍,1架C型无人机可完成的工作量是1架A型无人机的2.5倍;②无人机执行任务时的用电速度是其自身充电速度的1.5倍;③充电站内+便道上所有无人机数量总和=3x+y+2z;④每个无人机在充电之初自身所储电量只有20%,假设接到任务时所有无人机已充电4.5个小时。⑤执行任务时若电量低于20%需立马回充电站继续排队充电。请综合考虑以上因素,设计一套最优调度算法,使得这个任务在执行过程中所使用的无人机数量更少,能耗更低。

源码联系UP主 -> https://space.bilibili.com/329101171

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值