我现在正忙着用Python写一个模拟程序。我正在模拟改变仓库中叉车存储托盘的逻辑对旅行距离的影响。我正在查看5台叉车,每个叉车都被分配到一个作业列表中,并使用数学模型来分配存储托盘的位置。托盘存放的区域被分成更小的部分。所有5台叉车使用相同的存储区域,但一次只能在一个分区中使用一台叉车。
我目前面临的问题是什么是编写代码的最佳方式,以便这5个叉车同时完成它们的工作,同时跟踪每个叉车在存储区中的位置以及可用的托盘位置。
到目前为止,我已经编写了执行数学模型和单个叉车运动的代码。我目前正在试验多处理,以允许所有5个叉车并行移动。因此,我创建了5个进程,每个进程对应一个叉车,然后在每个进程中运行我的数学模型以找到最佳的托盘放置位置。然而,要进行移动,我需要有一个全局列表,其中包含所有其他叉车的位置和可用的存储位置的信息。
那么,你们认为如何最简单地跟踪有关叉车位置和存储位置的信息?多处理也是我解决这个问题的方向吗?
提前谢谢你。
发布于 2015-06-08 19:31:26
你的问题很笼统,所以我充其量只能给你一个大概的答案。
像klepto和joblib这样的代码提供了函数调用的动态缓存,所以你可以将一个函数声明为"cached",它将存储结果(这样你就不必在给定相同的输入的情况下重新计算)。之所以提到这一点,是因为klepto为内存、磁盘或数据库…提供了一种存储抽象因此,您可以将结果缓存/存档到磁盘上的文件或数据库后端--这两个后端都可以由并行进程访问(对于数据库,则是分布式计算资源上的进程)。joblib只适用于文件后端,并且在选项上有一点限制,但它是一个更成熟的代码。
klepto和joblib都非常常用于进程之间的存储和通信,以某种形式的优化或预测科学类型的问题--这似乎就是您正在做的事情。
还有一些较低级的“自定义”解决方案,比如选择一个数据库模块并使用它,或者写入文件,或者使用pickle…将对象转储到磁盘但joblib和klepto旨在简化这一过程。
https://stackoverflow.com/questions/30705594
复制相似问题