没有项目描述

taskpacker的Python项目详细描述


任务打包程序图片::https://raw.githubusercontent.com/edinburgh genome foundry/taskpacker/master/docs/_static/images/title.png
:alt:[logo]
:align:center
:width:600px

taskpacker是python的通用调度优化和可视化库。
例如,下面是t他优化了20个批次的96个DNA装配计划,
假设一个机器人铸造厂24/7运行:

…图片::https://raw.githubusercontent.com/edinburgh genome foundry/taskpacker/master/examples/dna_assembly.png
:alt:[dna_assembly.png]
:align:center
:width:600px

这样的绘图可以让您发现工厂的瓶颈。在本例中,
烤箱似乎是限制因素(只有满包装的机器没有停机),购买第三个烤箱将增加工厂的生产能力。

python中的可扩展调度工具。
目前仅支持python2(很抱歉,python3中有一个带有numberjack的复杂错误)。
它非常简单且有限(核心代码约200行),但具有足够的功能,可以覆盖许多情况:

-支持资源(通常是人或机器人)和资源容量
(=一个资源可以同时做多少工作)
-支持任务依赖性(某些任务必须在其他任务开始之前完成)和最大等待时间(即某些任务必须在最晚x分钟开始)在他们的*父母*完成后的任务)
-支持预先安排的任务(如人工操作员的休息、预定的机器人维护等)

正在进行的工作-贡献!
---------------------------

taskpacker是一个开源软件,最初是为优化"爱丁堡基因组铸造厂"的机器人操作DNA组装操作而编写的,http://www.genome foundry.io>;`。它是根据麻省理工学院的许可证(Edinburgh Genome Foundry)在Github<;https://github.com/Edinburgh Genome Foundry/plateo>;上发布的,没有任何保证:这是一款实验性的软件,我们希望它对您和我们一样有用。
欢迎大家使用贡献!

安装
----


taskpacker可以通过解压缩一个目录中的源代码并使用以下命令来安装::



sudo pip taskpacker install在本例中,两个实验室被分配了一份工作清单。
----


Ed,然后
协助Alice喂食灰鼠(一项需要两个人完成的任务)。
某些任务只能在其他任务完成后才能完成。
Alice对多任务有一种成见:她可以在
同时做两个任务,而Bob不能。

ld使用taskpacker查找他们何时执行每项任务,以便
尽早完成:

。代码::python

color="white")
访问植物=任务("访问植物",resources=[alice],duration=60,
color="yellow")
库克仓鼠=任务("烹饪仓鼠",resources=[alice],duration=30,
color="red")
骰子火腿ters=task("掷仓鼠骰子",资源=[bob],持续时间=40,
color="blue",follows=[cook悱仓鼠,clean悱手术刀]
feed悱仓鼠=task("feed the gremlins",resources=[alice,bob],持续时间=50,
color="orange",follows=[dice悱仓鼠]


all悱task=[clean_手术刀,参观植物,烹调仓鼠,骰子仓鼠,
饲料仓鼠]
计划任务=数字背包调度程序(所有任务)
图,ax=绘图调度程序(计划任务)
ax.figure.set_size_inches(7,3)
ax.figure.savefig("alice_and_bod.png",bbox_inches="tight"

使用电子表格建模任务和资源


假设您有一个由多个任务组成的流程,每个任务取决于
一些可用资源,可能还取决于其他任务。这样的过程可以用类似于"this file"的电子表格来概括,该电子表格加载在
taskpacker中,如下所示:

代码::python

ss_tasks=get_process_from_spreadsheet(
spreadsheet_path="path/to/spreadsheet.xls",
sheetname="process",
resources_dict=resources




,然后可以绘制任务的依赖关系图:

。代码::python

from taskpacker import plot_tasks_dependency_graph
plot_tasks_dependency_graph(process_tasks)

图片::https://raw.githubusercontent.com/edinburgh genome foundry/taskpacker/master/docs/_static/images/process_plan.png
:alt:[logo]
:align:center
:width:600px

代码::python

我的工厂一天就要开工了?"。以下代码加载其中20个进程
,并要求taskpacker尽可能紧凑地逐个堆栈它们:

…代码::python

t_u schedule,task)
import matplotlib.cm as cm



colors=[cm.paired(0.21*i%1.0)for i in range(30)]


resources=get_resources懔from懔u spreadsheet(
spreadsheet懔path="path/to/spreadsheet.xls",sheetname="resources")

processes=[
从电子表格(spreadsheet_path="path/to/spreadsheet.xls"、
sheetname="process"、
resources_dict=resources、
tasks_color=colors[i]、
task_name_u prefix="wu%d_"(i+1))
对于范围(20)
]


_ tasks=[t表示新进程中的进程,t表示进程中的进程]
fig,ax=plot_schedule(all_tasks)
ax.set_xlabel("time(min)")
ax.figure.savefig("dna_assembly_schedule.png",bbox_inches="tight")

图片::https://raw.githubusercontent.com/edinburgh genome foundry/taskpacker/master/examples/dna_assembly.png
:alt:[dna_assembly.png]
:align:center
:width:600px

也可以添加计划的休息时间,以便您的igor可以休息:

…代码::python

scheduled\u breaks=[
task("break\03d"%i,
resources=[resources["igor"]],
scheduled\u resource={resources["igor"]:1},
duration=12*60,;break持续12h
scheduled\u start=24*60*i,对于范围(6)
]








new_processes=schedule_processes_series(
processes,est_process_duration=5000,time_limit=5,
scheduled_tasks=scheduled_breaks)

图片::https://raw.githubusercontent.com/edinburgh genome foundry/taskpacker/master/examples/dna_assembly_with_breaks.png
:alt:[dna_assembly_with_breaks.png]
:align:center
:width:600px

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaFX:绑定未意外工作   java按顺序遍历两个二叉树,比较哪一个更大   maven如何避免多次加载librxtxSerial。所以在爪哇   google app engine如何在GAE java中为自定义用户数据库创建cookie?   java将内容添加到浮点数组的末尾,如下所示   令牌“+”上的java语法错误,AssignmentOperator无效   java LibGDX Sprite不同时使用“Rotate”和“setRotation”旋转   java字符串数组无需同步?   java如何将击键Z添加到按键(KeyEvent e)以将球跳跃/重新绘制到新的随机位置?(使用了KeyListener演示。)   java如何使用jnlp文件在控制面板的“添加或删除程序”中设置“版本”   java捕获两个异常,一个是另一个的超类   ant在更新到Java8之后,在JiBX绑定[bind]java期间出错。lang.IllegalStateException:加载类java时出错。lang.CharSequence   安卓缓冲区错误转换结果java时出错。朗努尔。。。和JSON ParserError解析数据组织。json。JSONException   java如何在Firebase中从实时数据库检索数据?   java将Jsch放入连接池的细节