/ / Модель споживача виробника з рівномірним розподілом навантаження з N1: N2:…: NM - алгоритм, структури даних, логіка

Виробник споживча модель з рівномірним розподілом навантаження з N1: N2: ...: NM - алгоритм, структури даних, логіка

Я повинен реалізувати сценарій споживача споживачів,де є один виробник (скажімо, P) і N (скажімо, N = 3) кількість споживачів (скажімо, C1, C2, C3). Тепер вимога полягає в тому, щоб навантаження поділялося між споживачами таким чином C1 : C2 : C3 = 1 : 3 : 6. Що означає, P повинен постачати 10% to C1, 30% to C2 and 60% to C3 і цей розподіл повинен бути рівномірним.

напр. скажімо, Р виробляє 10 предметів. якщо застосовується метод лічильника разом з круглим роботом, сценарій буде виглядати нижче

items 1,2,3 goes to C1, C2, C3,  // C1 is done here with its 10%
items 4,5,6 goes to C2, C3, C2,  // C2 is done here with its 30%
items 7,8,9 goes to C3, C3, C3,  // C3 is bearing continuous load
item  10    goes to C3

Але тут розподіл не був рівномірним, С3 несе безперервне навантаження, що не відповідає цілі.

Ідеальний розподіл мав би щось подібне

items 1,2,3 goes to C3, C2, C3,
items 4,5,6 goes to C3, C2, C3,
items 7,8,9 goes to C3, C1, C3,
item  10    goes to C2

Я спробував навести гіпотетичний прикладтут. У реальному сценарії підрахунок не буде попередньо визначений на відміну від 10 у наведеному вище прикладі. У реальному сценарії виробник буде продовжувати виробництво, і це нескінченний процес. Наприклад, уявіть платну кабіну, що має 3 платних ворота C1, C2, C3, де номер транспортні засоби, що проходять повз ворота, повинні бути у співвідношенні 1 : 3 : 6 і розподіл повинен бути рівномірним. Пропонуйте запропонувати ефективний алгоритм для його реалізації.

Відповіді:

1 для відповіді № 1

Один із способів зробити це було б для продюсерагенерувати випадкове число від 1 до 10 включно. Якщо число дорівнює 1, елемент переходить до C1. Якщо число дорівнює 2, 3 або 4, воно переходить до С2. Якщо число знаходиться в діапазоні 5-10, то пункт переходить до С3.

Зауважте, що це не гарантує, щорозподіл буде ідеальним на кожні 10 предметів, але якщо припустити досить хороший генератор випадкових чисел, розподіли будуть дуже близькі до ваших 1: 3: 6 для великої кількості (тисяч) елементів.


1 для відповіді № 2

Я пропоную вам використовувати варіант топологічного сортування.

c3 починається; c2 чекає, поки c2 = c3 + 1; аналогічно, c1 чекає, поки c1 = c2 + 1;

Таким чином, розподіл буде таким:

c3 c3 c2
c1 c3 c2
c3 c2 c3
c3

Це лише приклад, який я наводив. Ви можете випустити споживачів за аналогічною логікою