Симулятор ремонта машины?

Постановка проблемы:

 A system is composed of 1, 2, or 3 machines and a repairman responsible for
maintaining these machines. Normally, the machines are running and producing
a product. At random points in time, the machines fail and are fixed by the
repairman. If a second or third machine fails while the repairman is busy
fixing the first machine, these machines will wait on the services of the
repairman in a first come, first served order. When repair on a machine is
complete, the machine will begin running again and producing a product.
The repairman will then repair the next machine waiting. When all machines
are running, the repairman becomes idle.

simulate this system for a fixed period of time and calculate the fraction
of time the machines are busy (utilization) and the fraction of time
the repairman is busy (utilization).

Теперь на входе 50 Время работы и 50 Время восстановления, затем с учетом периода
рассчитать использование над ним и количество машин для моделирования
для каждого теста.

Пример ввода:

7.0  4.5 13.0 10.5  3.0 12.0 ....
9.5  2.5  4.5 12.0  5.7  1.5 ....
20.0 1
20.0 3
0.0 0

Пример вывода:

       No of     Utilization
Case Machines Machine Repairman

1       1       .525   .475
2       3       .558   .775

Случай 2 Объяснение:

введите описание изображения здесь

Machine Utilization   = ((7+3)+(4.5+6)+(13))/(3*20) = .558
Repairman Utilization =                   (15.5)/20 = .775

Мой подход:

1) загрузить машины в минимальную кучу (называемую runHeap) и дать каждому
из них время выполнения, поэтому следующий, чтобы дать время выполнения будет новым
из 50 времен выполнения на входе,

2) рассчитать минимальное время между минимальным временем выполнения напоминания в runHeap
время напоминания о ремонте в начале очереди на ремонт или напоминание
время закончить симуляцию, и назвать это значение «toGo».

3) Вычтите все время выполнения напоминания для всех машин в runHeap с помощью toGo,
Вычтите время ремонта, напоминающее время ремонта

4) Все машины, имеющие время выполнения напоминания == 0, вставьте его в repairQueue,
Начальник ремонтной очереди, если напоминание о времени ремонта == 0 вставляет его в
RunHeap,

5) Добавить к текущему времени

6) если текущее время < время моделирования перейдите к шагу 2, иначе верните коэффициент использования.

Теперь вопрос в том, хороший ли подход или можно найти лучший?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]