Из рис. 9.11 видно, что всего пришло 39 425 вызовов, 65 % из них обслужено, остальным отказано. Среднее время между обслуженными заявками 1.026. Таким образом:
□ абсолютная пропускная способность системы, т. е. среднее число заявок, обслуженных в единицу времени ~1/1.026 = 0.975;
□ относительная пропускная способность системы, т. е. средняя доля пришедших заявок, обслуживаемых системой ~65 %;
□вероятность отказа заявке в обслуживании ~34 %.
Однако статистические характеристики системы играют лишь вспомогательную роль при анализе систем. Действительной целью моделирования является анализ возможной прибыли при различных значениях вектора входных параметров системы. В нашей задаче единственным таким параметром является n — число поддерживаемых каналов связи.
Проблема оптимизации. Целевая функция
Введем понятие Тарифного плана — аналога Соглашения о качестве сервиса (Service Level Agreement), которое широко используется в современных системах предоставления сервиса для расчета стоимости сервиса. В таком соглашении обычно оговариваются как стоимость сервиса при его надлежащем качестве, так и штраф поставщика сервиса за низкое качество обслуживания. Пусть в соответствии с тарифным планом каждая обслуженная заявка приносит поставщику сервиса некоторый доход в соответствии с правилом посекундной тарификации после первой минуты, а за каждую отклоненную заявку поставщик сервиса должен заплатить штраф. Покупка оборудования АТС и содержание каждого канала обходятся в некоторую сумму, зависящую от максимального числа каналов АТС. Прибыль, полученную владельцем АТС, можно вычислить как доход за обслуживание вызовов минус штраф за отвергнутые вызовы и расходы на оборудование:
прибыль = доход - штраф - стоимостьОборудования
Увеличение числа каналов, обеспечивающих связь, уменьшает штраф и повышает доход, но при этом растут и расходы на оборудование. Варьируя число каналов при конкретных значениях остальных параметров системы, можно найти то оптимальное число каналов, которое принесет максимальную прибыль. Именно значение прибыли в этой задаче играет роль значения w функции полезности, обсуждаемой в разд. 9.4.
Ясно, что аналитически проблему эту не решить, т. к. все функции здесь неаналитические. Поскольку доход и штрафы можно подсчитать с помощью имитационной модели, то вся проблема является типичной проблемой имитационного моделирования. Прибегнем к оптимизации, использующей ими-
тационную модель для нахождения значения заданного функционала (прибыли) при конкретных значениях параметров.
Доход от каждой обслуженной заявки зависит от времени соединения (например, поставщик сервиса хочет объявить повременную тарификацию после первой минуты). Любая подобная зависимость в AnyLogic легко задается с помощью функции. Отнеся суммарный доход (назовем его в модели income) к временному периоду моделирования, получим доход в единицу времени (назовем его gain). Доход в единицу времени является случайной величиной, мы будем использовать его среднее значение.
Рассмотрим теперь расходы. Они состоят из штрафов отвергнутые вызовы и затрат на оборудование. Выплачиваемый штраф нужно подсчитывать для всех отвергнутых вызовов. Пусть penalty — средний штраф в единицу времени по всем отвергнутым вызовам. Это также случайная величина, среднее значение которой будет использоваться при поиске минимума целевой функции.
Наборы данных
В нашей задаче полученный в каждый момент времени средний доход Gain так же, как и многие другие значения в моделях систем массового обслужи-вания (длина очереди и время нахождения каждой заявки в очереди в неко-торый момент времени и т. п.), будет только конкретной реализацией соот--ветствующих величин, имеющих стохастическую природу. В общем случае все параметры производительности систем, функционирующих в условиях неопределенности, являются стохастическими. При анализе таких систем представляют интерес не конкретные значения этих параметров, которые являются случайными величинами, а статистические характеристики всего набора реализаций таких случайных величин — среднее, максимальное и минимальное значения, доверительный интервал и т. п.
Для удобства работы с коллекциями данных AnyLogic поддерживает встро- I енный класс, который называется набор данных (dataset). Для набора данных не только хранятся все его конкретные значения, но и автоматически подсчитываются его статистические характеристики.
Наборы данных могут быть трех типов, показанных на рис. 9.12. Невременной тип — это просто последовательность реализаций некоторой случайной величины. Статистические характеристики такого набора данных определяются стандартным образом. Совершенно другой тип наборов данных — временной. Для временных наборов данных хранятся не только каждое конкретное значение случайной величины, но и момент времени, в который это значение было установлено. При подсчете статистических характеристик такого набора данных учитывается длительность временного интервала, в течение которого случайная величина имела конкретное значение, то есть значение случайной величины учитывается с весом, равным этому временному интервалу. Фазовый набор данных — это последовательность пар значений, из которых первое понимается как аргумент, а второе — как значе-ние функции от этого аргумента. Очевидно, что время ожидания в очереди представляется невременным набором данных. С другой стороны, длина очереди — это временной набор данных. Случайные величины gain Иpenalty в нашей модели тоже невременные наборы данных.
Если y — случайная величина, для которой нам хочется подсчитать ее ста-тистические характеристики, то в модели нужно определить у как набор данных (простой, временной или фазовый), и в момент, когда y примет очередное значение у, вызвать функцию Y.add(y). Для набора данных с именем y вызовы методов y.count, Y.mean, Y.min, Y.max дадут следующие статистические характеристики случайной величины y: число реализаций, запомненных в наборе, среднее, минимальное и максимальное значения. Другие методы возвращают доверительный интервал среднего (meanConfidence), дисперсию (variance) и др. Полный список методов, доступных для получения статистической информации случайной величины, приведен в Справочнике Классов (Class Reference) пакета AnyLogic.
Дл.я сбора реализаций случайных величин gain и penalty введите наборы данных с этими именами, выбрав в контекстном меню активного объекта Main команду Новый набор данных. Кроме имени никаких других параметров в окне свойств этих объектов менять не надо.