Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Моделирование литейного цеха


Автор: Damon2013 10.3.2013, 16:03
Здравствуйте! Есть такое задание:
Из литейного цеха на участок обработки и сборки поступают заготовки через 20+-5 мин. Треть из них обрабатывается в течение 60 мин. и поступает на комплектацию. Две трети заготовок обрабатываются за 30 мин. перед комплектацией, которая требует наличия одной детали первого типа и двух деталей второго. После этого все три детали подаются на сборку, которая занимает 60+-2 мин. для первой детали и 608 мин. для двух других, причем они участвуют в сборке одновременно. При наличии на выходе одновременно всех трех деталей изделие покидает участок.
Смоделировать работу участка в течение 100 ч. Определить места образования и характеристики возможных очередей. 

Видел работу, выполненную в GPSS, но ничего не понял, так как не имел раньше опыта работы с этой прогой. Хотел бы попросить помощи по поводу того, с чего начать эту работу (помогите составить алгоритм действий).
Заранее спасибо 

Автор: _Y_ 12.3.2013, 20:35
Я бы не мудрствовал лукаво и написал на основе метода Монте Карло. Надо только определить вероятности распределения в каждом интервале времени.


Кстати, Вы не определили что такое заготовки первого и второго типа. Это что, одни и те же заготовки, но обработанные по-разному?

Автор: Damon2013 23.3.2013, 07:38
Нет, это детали разных типов.

Автор: _Y_ 23.3.2013, 23:26
Не совсем понятно что откуда берется. Вы говорите, что это разные детали. При этом в описании есть фраза
Цитата(Damon2013 @  10.3.2013,  16:03 Найти цитируемый пост)
При наличии на выходе одновременно всех трех деталей
 Так чем же определяется наличие/отсутствие этих деталей?

Я бы начал с рисования схемы - что откуда и куда поступает. Что-то вроде рисуночка с резервуарами. Потом на схеме бы обозначил чем определяются потоки. А потом уже начинал писать программу.

Автор: Damon2013 25.3.2013, 15:59
вот, попробовал нарисовать схему 
user posted image

Автор: _Y_ 25.3.2013, 21:50
Как понимаю из схемы, первый этап - литейный цех. Значит рисуем цикл литья. Время исполнения цикла не постоянное, а меняющееся методом Монте Карло - по-простому - датчиком случайных чисел, вписанным в выбранный закон распределения вероятности (если не сталкивались с этим - объясню отдельно). Т.е. Каждый оборот в цикле будет случайным образом занимать от 15 до 25 мин. Каждый цикл будет прибавлять единицу к значению переменной BufferOfCasts (буфер отливок).

На втором этапе из этого буфера надо будет брать заготовки и обрабатывать. Но у Вас время обработки задано жестко 60 минут и 30 минут (но вдвое больше заготовок) и на схеме обработка по двум процессам идет параллельно. Поэтому этот этап можно вообще не моделировать, а просто считать, что происходит задержка на 60 мин. Можно прсто вычесть это время из общего времени работы модели.

Следующий цикл - сборка. Цикл сначала ждет пока в буфере наберется 3 детали, потом ждет еще случайное время, определяемое второй моделью, а потом прибавляет единицу к переменной, означающей продукцию. Вторая модель будет тоже выдавать случайное время задержки, но тут уже случайная функция должна описывать сумму времени сборки трех деталей, т.е. от 110 до 130 минут. 

Потом запускаем все крутится. В циклы же останавливаем по времени (через 99 часов после старта, т.к. вычли 60 минут второй ненужной стадии). 

Смотрим сколько получилось продукции и радуемся.

Если хотим - рисуем график количества продукции и количества барахла в буфере (в зависимости от времени)

ЗЫ: Если я чего-то не понял - поправьте.

Автор: Damon2013 1.4.2013, 16:33
Цитата

датчиком случайных чисел, вписанным в выбранный закон распределения вероятности (если не сталкивались с этим - объясню отдельно). 

Да, объясните, пожалуйста это .

Автор: _Y_ 1.4.2013, 19:21
  • Датчик случайных чисел во всех языках, которые я знаю, дает при вызове случайное число в заданном интервале. Предположим, интервал этот от -1 до +1 (в большинстве языков он либо от минус до плюс единицы, либо от нуля до единицы). При этом вероятность любого значения в этом интервале одинакова. Обозначим результат вызова датчика R. Первый этап Вашего процесса занимает от 20+-5 минут. Если равномерное распределение вероятности Вас устраивает, то каждый раз данный процесс будет занимать 20+5*R минут.
  • Но в реальной жизни равномерное распределение вероятности случается только в казино (да и то если его регулярно проверяет полиция smile ). В производстве же меньшие отклонения от заданных 20 минут случаются чаще, чем большие, т.е. 15 и 25 минут процесс не занимает, наверное, никогда, а вот 15.000001 и 24.9999999 занять может но ну очень уж редко, в то время, как числа близкие к 20 минутам будут выпадать чаще всего. Вам надо определить закон (формулу) распределения вероятности. Потом, исходя из этого закона, написать что-то типа 20+5*U где U - случайное число, случающееся в интервале -1 до +1уже не равновероятно, а в соответствии с выбранным законом. Скорее всего, у Вас будет просто пересчет вроде U=f( R ).



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)