Factory моделирование пола

Я хотел бы создать симуляцию пола factory, и я ищу идеи о том, как это сделать. Мои мысли до сих пор:

• A factory представляет собой совокупность процессов, некоторые из этих процессов последовательно, а некоторые из них параллельны. Каждый процесс связывается с ним по восходящему и нисходящему и параллельным соседям, чтобы сообщить им о его сквозном размещении

• Каждый процесс будет иметь основные атрибуты, такие как максимальная пропускная способность, стоимость обслуживания в результате сквозного ввода

Очевидно, я не полностью это понял, но я надеялся, что кто-то сможет дать мне несколько идей или, возможно, ссылку на онлайн-ресурс

обновление: Этот проект предназначен только для моих развлечений, и, возможно, немного поучаствовать в этом. Я не работаю программистом, программирование - это просто хобби для меня. Я решил написать его на С#.

Ответ 1

Имитация целых factory точно - это большая работа.

Во-первых, вам нужно выяснить: почему вы делаете симуляцию? Кто это для? Какую ценность это даст им? Какие части моделирования интересны? Насколько это необходимо? Какие части процесса не нужно точно моделировать?

Чтобы выяснить ответы на эти вопросы, вам нужно поговорить с тем, кто хочет, чтобы симуляция была написана.

Как только вы выяснили, что имитировать, вам нужно выяснить, как имитировать его. Вам нужны некоторые модели и некоторые параметры для этих моделей. Вы можете получить некоторые фактические данные из реального производства и попытаться получить модели из цифр. Модели могут быть простой линейной зависимостью между входом и выходом, более сложным отношением и, возможно, даже стохастическим (случайным) эффектом. Если у вас нет доступа к реальным данным, вам придется делать догадки в своей модели, но это никогда не будет так хорошо, поэтому старайтесь получать реальные данные там, где это возможно.

Вы также можете рассмотреть вероятность разрушения компонентов и что может повлиять на это. А как насчет забастовки рабочих? Недоступность сырья? Износ оборудования, вызывающего постепенное снижение производительности с течением времени? Опять же, вы не захотите рассмотреть эти детали, это зависит от того, чего хочет клиент.

Если ваша симуляция связана с случайными событиями, вы можете запустить ее много раз и получить средний результат, например, используя Monte Carlo моделирование.

Чтобы дать лучший ответ, нам нужно знать больше о том, что вам нужно для имитации и чего вы хотите достичь.

Ответ 2

Поскольку ваш клиент сам, вам нужно решить ответ на все вопросы, которые Марк Байерс спросил. Тем не менее, я дам вам несколько предложений и, надеюсь, они дадут вам начало.

Предположим, что ваш factory занимает несколько разных частей и собирает их только в один готовый продукт. Блок-схема процесса сборки может выглядеть так:

Factory Блок-схема http://img62.imageshack.us/img62/863/factoryflowchart.jpg

Для первого алмаза, где собраны виджеты A и B, предположим, что для завершения этого шага требуется в среднем 30 секунд. Мы предположим, что фактическое время, которое требуется для сборки двух виджета, распределяется обычно, со средним значением 30 с и дисперсией 5 с. Для второго бриллианта предположим, что он также занимает в среднем 30 секунд, но большую часть времени он занимает почти недолго, а в других случаях требуется намного больше времени. Это хорошо аппроксимируется экспоненциальным распределением с 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 перед ним на конвейере. Я оставлю это для вас, чтобы выяснить, как это кодировать, и вы можете запустить множество проб, чтобы узнать, какое общее время сборки будет в среднем. Как выглядит результирующее распределение?

Способы "оживить это":

  • Требуется 3 виджета для каждого виджета A. Играйте с инвентарем. Пополняйте инвентарь с произвольными интервалами.
  • Добавьте проверку качества (экспоненциальное распределение полезно использовать здесь) и отклоните некоторые из готовых iGadgets. Я предлагаю использовать низкий уровень отклонения.
  • Попробуйте использовать разные распределения вероятности, чем те, которые я предложил. Посмотрите, как они влияют на вашу симуляцию. Всегда старайтесь выяснить, как входные параметры распределения вероятностей будут отображаться в значениях реального мира.

Вы можете многое сделать с помощью этой простой симуляции. Следующим шагом будет обобщение вашего кода, чтобы вы могли иметь произвольное количество виджетов и шагов сборки. Это не так просто. Существует целая область прикладной математики, называемая исследования операций, посвященная этому типу моделирования и анализа.

Ответ 3

То, что вы описываете, является классической проблемой, решаемой с помощью моделирования дискретных событий. Для моделирования этих проблем были разработаны различные языки моделирования общего назначения и специального назначения. Хотя я бы не рекомендовал ничего программировать с нуля для "реальной" проблемы, может быть хорошим упражнением написать собственный код для небольшой проблемы с очередью, чтобы вы могли понять планирование событий, генерировать случайные числа, отслеживать календари и т.д. После того, как вы это сделаете, язык моделирования общего назначения сделает все это для вас, чтобы вы могли сосредоточиться на большой картине.

Хорошая ссылка Закон и Кельтон. ARENA - стандартный пакет. Он широко используется и, IMHO, является очень всеобъемлющим для такого рода моделирования. Книга ARENA также является достойной книгой по симуляции, и она поставляется с программным обеспечением, которое может быть применено к небольшим проблемам. Чтобы моделировать большие проблемы, вам нужно получить лицензию. Вы можете загрузить пробную версию ARENA здесь.

Ответ 4

Automod - это путь. http://www.appliedmaterials.com/products/automod_2.html

Есть много, чтобы учиться, и это будет не дешево.

ASI Automod работает в симуляторе factory уже около 30 лет. В настоящее время он принадлежит Applied Materials. Крупные игроки, которые работают с обработкой материалов на складе, используют Automod, потому что это проверенный лидер.

Ответ 5

Это может быть больше того, что вы ищете, но визуальные компоненты - хороший инструмент для промышленного моделирования.

Чтобы быть ясным, я не работаю для них, и компания, с которой я работаю, в настоящее время их не использует, но мы посмотрели на них.