Попалася тут мені реальна прикладна задачка такого типу:
"У меня есть группа операторов колл-центра , каждый из которых обладает индивидуальным набором знаний проектов заказчика , т.е кто то знает 3 проекта - а,б,в, кто то - а,в,г и т д . Проектов допустим 10, время поступления звонков непредсказуемо , на каждом проекте есть требования к стандартам ( скорость ответа , % неотвеченных звонков ) , средняя длительность звонков у каждого проекта разная. Необходима некая формула , определяющая оптимальное кол во людей ( минимально возможное ) с нужным набором знаний проектов , чтобы выполнялись условия по соответствию стандартам каждого проекта ( они тоже могут быть разными )"
І щось мене вона так зачепила. Мені здається, що треба написати програму, яка б моделювала цю ситуаціюі просто дивитися яка буде якість облуговування при тій чи іншій кількості операторів. І от із усім запалом дилетанта-недоучки всю дорогу з роботи я намагалася придумати алгоритм такої програми. Колись дуууууже давно я типу намагалася вивчати С++. Ну принаймні що таке алгоритми умови і цикли я пам'ятаю. І от чомусь мені все це уявляється у вигляді двовимірних масивів (табличок). В одному масиві проекти та їх характеристики. В другому масиві оператори із скілами, проти кожного позначка зайнятий-вільний.
А далі як? Допустимо кожні 5 секунд заходить клієнт з рандомним проектом. (ну ясно, що секунд не 5, а рандомна кількість, а проект не зовсім рандомний, а є статистика звернень). За допомогою чого це реалізувати? Що там у С++ працює з реальним (а краще пришвидченим) часом? Клієнта кидає на відповідного оператора з потрібною компетенцією, в оператора на час роботи статус "зайнятий". Звертається другий клієнт. Якщо вільних операторів по його питанню немає, він чекає і лічильник рахує час очікування, щоб потім порахувати середній час очікування. Якщо очікавання дуже довге, клієнт іде, це теж рахується.
Це має бути в циклі, але як зробити, щоб вхід в цикл нового клієнта був можливий до того, як закінчився цикл попереднього?
В кінці "робочого дня" програма виводить середній час очікування і процент дзвінків без відповіді. Перевіряє, чи відповідають вони стандартам по відповідним проектам. Якщо ні - треба збільшувать кількість операторів.
Чи якось по-іншому треба?
Ще раз дико вибачаюсь за непрофесійність, просто від абсурду моєї основної роботи в мене плавляться мізки, захотілося зайнятися сферою, де працює формальна логіка.
![](https://www.bigsauron.ru/valid10576_h480c7df044effb5b0bfa2d7325fd533d.jpg)
https://marynochka.dreamwidth.org/684921.html