Я хотел бы создать моделирование заводского цеха, и я ищу идеи о том, как сделать это. Мои мысли до сих пор:
• Фабрика является составленным из набора процессов, некоторые из этих процессов последовательно, и некоторые параллельно. Каждый процесс общался бы с, это - восходящие и нисходящие и параллельные соседи для уведомления их, он через помещенный
• Каждый процесс был бы свои собственные основные атрибуты как максимальная пропускная способность, стоимость обслуживания в результате через помещенный
Очевидно, я не полностью продумал это, но я надеялся, что кто-то мог бы быть в состоянии дать мне несколько идей или возможно ссылку на на ресурсе строки
обновление: Этот проект только для моих собственных развлечений, и, возможно, изучите немного alnong путь. Я не нанимаюсь как программист, программирование является просто хобби для меня. Я решил записать это в C#.
Имитация целой фабрики точно является большой работой.
Во-первых, нужно выяснить: почему вы делаете симуляцию? Кто это для? Какое значение это даст им? Какие части симуляции интересны? Насколько точно это должно быть? Какие части процесса не должны быть смоделированы точно?
, чтобы выяснить ответы на эти вопросы, вам нужно будет поговорить с тем, кто бы ни был, что хочет, чтобы симулятор написал.
Как только вы выяснили, что имитировать, вам нужно выяснить, как их имитировать. Вам нужны некоторые модели и некоторые параметры для этих моделей. Может быть, вы можете получить некоторые фактические цифры из реального производства и попытаться получить модели с рисунков. Модели могут быть простыми линейными взаимосвязи между входом и выходом, более сложной взаимосвязи, и, возможно, даже стохастическим (случайным) эффектом. Если у вас нет доступа к реальным данным, то вам нужно сделать догадки в вашей модели, но это никогда не будет так же хорошо, поэтому постарайтесь получить реальные данные везде, где это возможно.
Вы также можете считать вероятностями компонентов, разрушающихся, а также о том, что может иметь. А как насчет рабочих, происходящих? Недоступность сырья? Носить и слезать на машине, вызывающем постепенно снизить выход с течением времени? Опять же, вы можете не захотеть рассмотреть эти детали, это зависит от того, что хочет клиента.
Если ваше моделирование включает в себя случайные события, вы можете захотеть проводить его много раз и получить средний результат, например, с использованием Monte Carlo моделирования.
Чтобы дать лучший ответ, нам нужно больше узнать о том, что вам нужно имитировать и то, что вы хотите достичь.
То, что вы описываете, является классической проблемой, решаемой с помощью дискретно-событийного моделирования. Для моделирования такого рода проблем были разработаны различные языки имитационного моделирования как общего, так и специального назначения. Хотя я бы не рекомендовал программировать что-либо с нуля для "реальной" проблемы, может быть хорошим упражнением написать свой собственный код для небольшой проблемы с очередью, чтобы вы могли понимать планирование событий, генерацию случайных чисел, отслеживание календарей и т.п. Как только вы это сделаете, язык симуляции общего назначения сделает все это за вас, чтобы вы могли сконцентрироваться на общей картине.
Хорошая ссылка - Закон и Келтон . ARENA - стандартный пакет. Он широко используется и, IMHO, является очень всеобъемлющим для такого рода симуляций. Книга ARENA также является достойной книгой по симуляции и поставляется с программным обеспечением, которое может быть применено для решения небольших задач. Для моделирования больших проблем вам понадобится лицензия. Вы должны иметь возможность скачать пробную версию ARENA здесь .
Это может быть, больше то, что вы ищете, но визуальные компоненты - хороший инструмент промышленного моделирования.
Быть ясно, что я не работаю на них, и компания я не работаю в настоящее время, но мы смотрели на них.
Так как ваш клиент - это вы сами, вам необходимо решить ответ на все вопросы, которые Mark Byers задал. Однако, я дам вам несколько предложений и надеюсь, что они дадут вам старт.
Предположим, что ваша фабрика берет несколько различных деталей и собирает их всего в один готовый продукт. Блок-схема процесса сборки может выглядеть следующим образом:
Factory Flowchart 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 перед ним в линии сборки. Я оставлю это на ваше усмотрение, чтобы выяснить, как это кодировать, и вы можете запустить множество проб, чтобы посмотреть, какое общее время сборки будет в среднем. Как выглядит результирующий дистрибутив?
Способы "придать пикантность":
Вы можете многое сделать с помощью этой простой симуляции. Следующим шагом будет обобщение Вашего кода так, чтобы Вы могли иметь произвольное количество виджетов и этапов сборки. Это не так просто. Существует целая область прикладной математики под названием operations research, которая посвящена этому типу моделирования и анализа.
Automod - лучший выбор. http://www.appliedmaterials.com/products/automod_2.html
Есть чему поучиться, и он выиграл не дешево.
Automod от ASI занимается производством моделирования уже около 30 лет. Теперь он принадлежит Applied Materials. Крупные игроки, которые работают с погрузочно-разгрузочными работами на складе, используют Automod, потому что это проверенный лидер.