python任务分配问题_基于Python的带约束的任务分配

我正在做一个项目,我需要在主机(计算机)中分配一些任务(进程)。

我的问题类似于this页面中的云平衡教程。

我有以下几门课:Host(name, cpu=None, mem=None, taskCap=None, encrypt=None, latClass=None, loc=None)

cpu,mem,taskCap分别是CPU功率、内存容量和任务数的Host's容量。在

^{pr2}$

cpuReq,memReq分别是CPU和内存中的Task's需求。在

我还有两本字典。

一个是关于主机的延迟,另一个是关于任务对延迟的要求

例如,我们有4个主机(h1 .. h4)和六个任务(t1 .. t6)h_lat_dir = {2: [(h1, h2), (h4, h4)], 3: [(h1, h1), (h1, h4)], 6: [(h2, h2)], 5: [(h1, h3), (h2, h3), (h3, h3)]}

h_lat_dir告诉我们在主机h1和{}之间的延迟是2,h1和{}之间的延迟是3,依此类推。在

同样t_lat_dir = {3: [(t1, t2)], 4: [(t1, t3), (t1, t4), (t1, t5)], 5: [(t2, t3)]}

其中任务t1和t2需要映射到延迟小于或等于3的主机上。在

我还应该检查任务是否适合主机。

例如,t1和{}可以分别映射到h1和{},前提是h1和{}的{}、mem和{}大于{}和{}。在

我想创建两个图来解决这个问题hostgraph = {'h2': {'h2': 6, 'h3': 5}, 'h3': {'h3': 5}, 'h1': {'h2': 2, 'h3': 5, 'h1': 3}}

[('b', 4), ('c', 3), ('a', 1)]

以及taskgraph = {'t2': {'t3': 5}, 't1': {'t4': 4, 't5': 4, 't2': 3, 't3': 4}}

在每个图中,键表示顶点,值是带键的字典

顶点连接到它们并计算延迟。在

首先要做的是对每一个问题做一个深度检查。

我想我应该从字典开始

Mappings = {t1:False, t2:False....}如果我找到任务的主机,将它们的值更改为主机。在

=>Mappings = {t1:h1, t2:h2...}

解决方案应该有最多的任务被映射(如果有些任务没有被映射,这是可以的)。在

所以,我的问题是:

1你认为我的问题有更好的解决方法吗?

2您建议如何跟踪最佳解决方案?

我在想一个字典{#oftasksmapped: Mappings0, #oftasksmapped: Mappings2...},其中的解决方案是映射了最多个任务的映射。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值