Algorithm 月球基地气闸的资源分配算法

Algorithm 月球基地气闸的资源分配算法,algorithm,Algorithm,我试图在资源分配问题上找到一个算法或问题名称,类似这样 一个月球基地有一个气闸,每次只有一个人可以使用,无论是进入还是离开,需要20秒才能通过。气闸转换不能提前中止或逆转。宇航员在基地外时空气量有限(比如10分钟)。他们在月球上的工作是在距离月球基地不同的地方进行一些演习,并让这些演习保持100%的正常运行时间 我希望回答以下问题: 在没有宇航员耗尽空气的情况下,可以支持多少个训练场地?您如何确定气闸的时间表(谁进入/退出,顺序如何) 有两个组件: -首先计算出每个训练场地100%运行所需的宇航

我试图在资源分配问题上找到一个算法或问题名称,类似这样

一个月球基地有一个气闸,每次只有一个人可以使用,无论是进入还是离开,需要20秒才能通过。气闸转换不能提前中止或逆转。宇航员在基地外时空气量有限(比如10分钟)。他们在月球上的工作是在距离月球基地不同的地方进行一些演习,并让这些演习保持100%的正常运行时间

我希望回答以下问题: 在没有宇航员耗尽空气的情况下,可以支持多少个训练场地?您如何确定气闸的时间表(谁进入/退出,顺序如何)

有两个组件:
-首先计算出每个训练场地100%运行所需的宇航员人数。
-计算使用一个气闸可以操作的钻机数量

Per Drill:
MaxWorkTime[i] = AirTime - 2*TravelTime[i]
ActualWorkTime[i] < MaxWorkTime[i]
WorkersPerDrill[i] = AirTime/ActualWorkTime[i]

for each drill
  try to schedule airlock time
更新(以数字为例)
这是问题的第一部分。一旦发生冲突,钻孔[1]工人和钻孔[3]工人同时返回,则有可能会耗尽空气。这就是我试图解决的问题。谢谢你忍受这个冗长的问题

这甚至不是编程问题。更像是数学

要使一个钻孔始终保持运行,您需要每10分钟至少花费20+20秒。一个人回去,一个人出来

你可以更频繁地换班,但效率总是比较低

所以,你需要每10分钟40秒的进门时间来进行训练

然后,您可以级联每个钻孔的换班,以便它们不会重叠,如下图所示:

        <-  10 mins  -> 
drill-1  x--------------x--------------x--------------x
drill-2  -x--------------x--------------x--------------
drill-3  --x--------------x--------------x-------------
...
drill-15 --------------x--------------x--------------x-

当约束条件是没有
时,您能否确保您的代码格式正确?还有,这是家庭作业吗?不是家庭作业。我不需要一个解决方案,只需要一个问题/算法的名称,我可以开始研究以更好地理解它。该图现在有意义了吗?在最简单的形式中,所有钻孔位置与基础的距离相等,它将按照您的建议工作。如果所有钻探地点的距离不同,你如何解决这个问题?那么,你最好在问题中描述距离如何影响采矿所需的时间!我的意思并不是说像你已经做过的那样“走到工地,工作,走回基地…”。我的意思是,描述一下你有哪些信息可以帮助计算步行到每个站点的时间?你有宇航员的行走速度吗?你有整个矿区的地图吗?所有场地与基地的距离是否相等?所有宇航员都以同样的速度行走吗?此外,宇航员在采矿之前是否必须穿过迷宫般的小行星场和外星人作战;P@user3799626对不起,我相信我的高级案例答案仍然包含一个缺陷。但是我没有时间花在这上面了。我真的很感谢你的帮助。这有点难以解释,但基本上需要更多的工人才能到达更远的点。回家的时间一次又一次地不同步,气闸可能会把人挡在外面。
AirTime = 10min
WalkSpeed = 1 m/s


drill[0] = 180m     // 6min to/from travel
drill[1] = 150m     // 5min
drill[2] = 120m     // 4min
drill[3] = 240m     // 8min 

TravelTime[0] = 6min
...
MaxWorkTime[0] = AirTime - TravelTime[0] = 4min
...

// WorkersPerDrill = AirTime/MaxWorkTime
WorkersPerDrill[0] >= 2.5    // These numbers are over 1 airtime (10m)
WorkersPerDrill[1] >= 2
WorkersPerDrill[2] >= 1.67
WorkersPerDrill[3] >= 5

TotalWorkersPerAirtime = sum(WorkersPerDrill) = 11.17

AirlockTime = 20s
AirlockPerWorker = 40s
TotalAirlockUsage = TotalWorkersPerAirtime*AirlockPerWorker = 7.4 min of airlock time
                                                              74% usage of airlock if no one uses it at the same time
        <-  10 mins  -> 
drill-1  x--------------x--------------x--------------x
drill-2  -x--------------x--------------x--------------
drill-3  --x--------------x--------------x-------------
...
drill-15 --------------x--------------x--------------x-
drill-1  >w<-------------->w<-------------->w<-------------->w<
drill-2  ->ww<------------->ww<------------->ww<------------->w
drill-3  -->ww<------------->ww<------------->ww<------------->
drill-3  --->www<------------>www<------------>www<------------
...