我想创建一个工厂地板的模拟,我正在寻找如何做到这一点的想法。我到目前为止的想法是:
·工厂是由一系列进程组成的,这些进程中的一些是串联的,另一些是并行的。每个进程都会与它的上行、下行和并行邻居通信,让它们知道它通过put
·每个进程都有自己的基本属性,如最大吞吐量、吞吐量导致的维护成本
显然,我还没有完全考虑清楚这一点,但我希望有人能给我一些想法,或者是一个在线资源的链接。
更新:此项目仅供我自己娱乐,也许在此过程中会学到一点东西。我不是一个程序员,编程只是我的一个爱好。我已经决定用C#编写它。
发布于 2010-01-30 03:14:44
准确地模拟整个工厂是一项艰巨的任务。
首先,您需要弄清楚:为什么要进行模拟?它是为谁准备的?它会给他们带来什么价值呢?模拟的哪些部分是有趣的?它需要多精确?流程的哪些部分不需要进行准确的模拟?
为了找出这些问题的答案,您需要与任何想要编写模拟的人交谈。
一旦你弄清楚了要模拟什么,那么你就需要弄清楚如何模拟它。您需要一些模型和这些模型的一些参数。你也许可以从实际生产中获得一些实际的数字,并尝试从这些数字中推导出模型。模型可以是输入和输出之间的简单线性关系,也可以是更复杂的关系,甚至可能是随机(随机)效应。如果你无法访问真实的数据,那么你将不得不在你的模型中进行猜测,但这永远不会有那么好的效果,所以尽可能地尝试获取真实的数据。
您可能还想考虑组件崩溃的概率,以及这可能会产生什么影响。工人罢工怎么办?原材料不可用?机器的磨损是否会导致产量随着时间的推移而逐渐降低?同样,您可能不想考虑这些细节,这取决于客户想要什么。
如果模拟涉及随机事件,则可能需要多次运行它并获得平均结果,例如使用Monte Carlo模拟。
为了给出更好的答案,我们需要更多地了解您需要模拟的内容以及您想要实现的内容。
发布于 2010-01-30 04:42:04
由于您的客户就是您自己,因此您需要决定Mark Byers提出的所有问题的答案。然而,我会给你一些建议,希望他们能给你一个开始。
让我们假设您的工厂采用了几个不同的部件,并将它们组装成一个成品。组装过程的流程图可能如下所示:
Factory Flowchart http://img62.imageshack.us/img62/863/factoryflowchart.jpg
对于第一个菱形,其中组装了小部件A和B,假设完成此步骤平均需要30秒。我们假设组装这两个小部件的实际时间是分布式normally,平均值为30秒,方差为5秒。对于第二个菱形,假设它也平均需要30秒,但大多数时间不会花那么长时间,其他时间则要长得多。这由exponential distribution很好地近似,30秒作为速率参数,通常由λ表示在方程中。
对于第一个过程,将组装小部件A和B的时间计算为:
timeA = randn(mean, sqrt(variance)); // Assuming C# has a function for a normally
// distributed random number with mean and
// sigma as inputs对于第二个过程,将小部件C添加到程序集中的时间计算如下:
timeB = rand()/lambda; // Assuming C# has a function for a uniformly distributed
// random number现在,每个iGadget的总组装时间将是timeA + timeB + waitingTime。在每个装配点,存储一个等待装配的小部件队列。如果第二个装配点是一个瓶颈,它的队列将会被填满。您可以对其队列设置最大大小,并在达到最大大小时将其保留在上游。如果一个项目在队列中,那么它的装配时间就会增加装配线中位于它前面的所有iGadgets。我将把它留给你去弄清楚如何编码,你可以运行很多试验来看看平均总的组装时间是多少。结果分布是什么样子的?
“让它更有趣”的方法:
通过这个简单的模拟,您可以做很多事情。下一步将是泛化您的代码,以便您可以拥有任意数量的小部件和组装步骤。这并不是很容易。有一个完整的应用数学领域,称为operations research,它致力于这种类型的模拟和分析。
发布于 2010-01-30 05:31:43
您所描述的是离散事件模拟解决的一个经典问题。已经开发了各种通用和专用的仿真语言来模拟这些类型的问题。虽然我不建议为一个“真正的”问题从头开始编写任何东西,但为一个小的排队问题编写自己的代码可能是一个很好的练习,这样你就可以理解事件调度、随机数生成、跟踪日历等。一旦你做到了这一点,通用的模拟语言将为你做所有这些事情,这样你就可以专注于大局。
Law & Kelton是一个很好的参考资料。ARENA是一个标准包。它被广泛使用,而且,IMHO,对于这类模拟是非常全面的。ARENA的书也是一本关于模拟的不错的书,它附带了可以应用于小问题的软件。要模拟更大的问题,您需要获得许可证。您应该能够下载ARENA here的试用版。
https://stackoverflow.com/questions/2164433
复制相似问题