没有项目描述

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为什么我的代码永远运行?它只是一堆带int的for循环,应该是递减的?   java如何更改IntelliJ IDEA中的XML缩进?   java如何使未填充的int数组不打印0?   eclipse My Weka Java代码结果*Weka*虚拟*STRING*用于*STRING*属性*   java泄漏了Windows com。安卓内部的政策恳求   java这个无限循环的原因是什么?   swing My标签在Java中很模糊   java如何在组件表示存储扩展中获取组件对象   java如何避免selenium网格中的会话超时   Java乘法测验,如果答案错误,如何循环   在Java HttpServlet Google app engine中保存对象   java ArrayList过滤器   java跳跃减慢了xvelocity:使用Libgdx/Box2D进行跳跃和跑步   java删除、复制和修改pom。xml文件   当提供的时区与服务器的时区相同时,RestCall中的java@DateTimeFormat(iso=iso.DATE_TIME)不工作   java Spring批处理多线程默认限制为10隐式?   安卓错误java。lang.UnsupportedOperationException:无法转换为维度:type=0x1