没有项目描述
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
: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