У меня есть базовый алгоритм проектирования, но я не могу поместить его в решение
Существует заводская производственная линия вокруг одной конвейерной ленты.
Компоненты (типа А и в) приходят на начало ремня случайным образом
интервалы; рабочие должны взять один компонент каждого типа из ленты
как только они пройдут мимо, соедините их и получите готовый продукт.
Пояс разделен на пазы фиксированного размера; каждый слот может вместить только один
компонент или один готовый продукт. Есть целый ряд рабочих
станции по обе стороны от пояса, расположенные на расстоянии, соответствующем размеру пояса.
прорези на поясе, вот так (шрифт фиксированной ширины ASCII pic):
v v v v v workers --------------------- -> | A | | B | A | P | -> conveyor belt --------------------- v v v v v workers
В каждую единицу времени пояс перемещается вперед на одно положение, и там
это время для работника на одной стороне каждого слота либо взять предмет
из гнезда или заменить предмет на ремне. Рабочий напротив
они не могут касаться одного и того же гнезда ремня, пока делают это.
(Таким образом, вы не можете позволить одному работнику выбрать что-то из слота, пока
их двойник кладет что-то на то же место).
Как только работник собрал один из обоих типов компонентов, он может
начните сборку готового изделия. Это занимает определенное количество времени,
таким образом, они будут готовы только к тому, чтобы поместить собранный продукт обратно на стол.
ремень на четвертом последующем пазу. В то время как они собирают
продукт, они не могут коснуться конвейерной ленты. Рабочие могут только держать
два предмета (компонент или продукт) одновременно: по одному в каждой руке.
Создайте имитацию этого, с тремя парами рабочих. На каждом из них
интервал времени, слот в начале конвейерной ленты должен иметь
равный (1/3) шанс ничего не содержать, компонент А или А
компонент В.
Запустите симуляцию на 100 шагов и вычислите, сколько из них закончено
продукты сходят с производственной линии, и сколько компонентов каждого из них
тип пройдите через производственную линию без быть подобранным любым
рабочие.
Реализация на C или C++?
Что я уже пробовал:
Есть 4-5 классов:
class Worker { public: int parts_required; int time_Remaining; int slave_worker; int finished_slot; void execute(); }; void execute() { if(part a && part B) { if(time < 0) { print("Worker A is ready"); if(empty_place) { cache = empty; clk = time_required; slot = item.worker a } else { run again } } class Source { public: int item_a; int item_b; }; class Stage {}; class Conveyor {};