Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 40
Текст из файла (страница 40)
Лля того чтобы пользоваться элементами структуры текушего сообщения (здесь — данными евтаз е и етгп1в)з), необходима операция явной конверсии типов (са11) епс1еу, указывающая, что этот объект имеет тип саз ц Операция кастинга имеет меньший приоритет, чем точка, поэтому выражение это нужно взять в скобки, чтобы затем использовать "точечную" операци)о доступа к данным этого объекта. Теперь после обработки каждая заявка будет хранить момент начала и момент конца разговора. Эти значения нужны для того, чтобы начислить плату за обслуживание заявки.
Зададим теперь правило расчета за состоявшиеся телефонные переговоры. Его удобно определить алгоритмической функцией. Шелкните на кнопке П или выберите команду Новая алгоритмическая функции в контекстном меню при выделенном корневом объекте модели магп. Назовите функцию са11Ртъсе. У НЕЕ дОЛжЕН бЫтЬ ОДИН ВЕШЕСтВЕННЫй ПараМЕтр, НаЗОВИтс ЕГО Е. Саму функцию в окне Тело функции определите так (рис. 9. (4): тесптп С<=1? яз1пртгсе : с*тьпртъсез Функция са11Ртгсе(е) определяет стоимость разговора так: если длительность с разговора не больше одной минуты, то взимается плата за одну минуту в размере п1пвтгсе, если больше, то е т1пРтъсе.
Параметр зягпРтгсе (цена минуты разговора) задайте как вещественный параметр модели со значением 0.)2. Глава 6. Компьютерный экспв имент Рис. 9.14. Алгоритмическая функция Рис. 9ЛВ. Определение дохода от обсл)лкивания заявки Введите в модель вещественную переменную *поппе, суммируюшую полученный с течением времени доход от предоставления соелинения (с начальным значением О). Каждый раз, как обслуженная заявка попадает в блок в1пк, ВЕЛИЧИНа 1псотле дОЛжиа ВОЗраСтатЬ На ВЕЛИЧИНУ: са11Ркьсе ( ( (СаП) епсьеу) . Свьпьвь- ( (Са11) епк1пу) .
Саеаке ); Как только получено новое значение суммарной величины дохода тпсстяе, можно вычислить новую реализацию среднего дохода ваап, которая равна тгусоткетяестьтке(). Поэтому в поле с именем от васек окна свойств блока втп)г следует вставить следующие операторы (рис. 9. ! 5): тпсове е= са11Рктсе(((Са11]епетеу).СРьпьвь-((са11)епе1еу).евеаке ); да1п.асЫ ( 1псоие/деет1тпе() ) Штраф за необслуженные вызовы В соответствии с тарифным планом за каждый необслуженный вызов поставшик сервиса платит фиксированный штраф.
Примем значение этого штрафа ! у. е. Подсчитаем сумму штрафа за все пропушенные вызовы. Введите новый параметр модели репа1сувекса11 (штраф за необслуженный вызов) со значением !.О. Кроме того, введем в модель переменную Репатсу для подсчета полной суммы штрафа с начальным значением О. Для получения всей суммы штрафа каждый раз, как только заявка отб)х(сывается, следует увеличить суммарное значение штрафа Репа1сьев на величину репа1суРекса11, а также Глава 9. Компьютерный эксперимент 9.6.3.
Статистические характеристики модели Из рис. 9.11 видно, что всего пришло 39 425 вызовов, 65 % из них обслужено, остальным отказано. Среднее время между обслуженными заявками 1.026. Таким образом: Г3 абсолютная пропускная способность системы, т. е. срелнее число заявок, обслуженных в единицу времени -1/1.026 = 0.975; Г3 относительная пропускная способность системы, т. е. средняя доля пришедших заявок, обслуживаемых системой -65 %; Р вероятность отказа заявке в обслуживании -34 %. Однако статистические характеристики системы играют лишь вспомогательную роль при анализе систем. Действительной целью моделирования является анализ возлюжной прибыли при различных значениях вектора входных параметров системы.
В нашей задаче единственным таким параметром является и — число поддерживаемых каналов связи. 9.6.4. Проблема оптимизации. Целевая функция Введем понятие тарифного плана — аналога соглашения о качестве сервиса (Вегч1се 1.ече1 Адгеегпевг), которое широко используется в современных системах предоставления сервиса лля расчета стоимости сервиса. В таком соглашении обычно оговариваются как стоимость сервиса при его надлежащем качестве, так и штраф поставщика сервиса за низкое качество обслуживания.
Пусть в соответствии с тариФным планом каждая обслуженная заявка приносит поставщику сервиса некоторый доход в соответствии с правилом посекундной тарификации после первой минуты, а за каждую отклоненную заявку поставщик сервиса должен заплатить штраф. Покупка оборудования АТС и солержание каждого канала обходятся в некоторую сумму, зависящую от максимального числа каналов АТС. Прибыль, полученную владельцем АТС, можно вычислить как доход за обслуживание вызовов минус штраф за отвергнутые вызовы и расходы на оборудование: приоыль = локон — штраф — стоимостьсборулования Увеличение числа каналов, обеспечивающих связь, уменьшает штраф и повышает доход, но при этом растут и расходы на оборудование.
Варьируя число каналов при конкретных значениях остальных параметров системы, можно найти то оптимальное число каналов, которое принесет максимальную прибыль. Именно значение прибыли в этой задаче играет роль значения и функции полезности, обсуждаемой в разд. 9.4. Ясно, что аналитически проблему эту не решить, т. к. все функции здесь неаналитические. Поскольку доход и штрафы можно подсчитать с помо~лью имитационной модели, то вся проблема является типичной проблемой имитационного моделирования. Прибегнем к оптимизации, использующей ими- Часть вг Методоломческие вопросы использования моделей тационную модель для нахождения значения заданного функционала (прибыли) при конкретных значениях параметров.
Доход от каждой обслуженной заявки зависит от времени соединения (например, поставшик сервиса хочет объявить повременную тарификацию после первой минуты). Любая подобная зависимость в Апу).оус легко задается с помошью функции. Отнеся суммарный лоход (назовем его в модели тпсомв) к временному периолу моделирования, получим доход в единицу времени (назовем его яазп). Доход в единицу времени является случайной величиной, мы будем использовать его среднее значение. Рассмотрим теперь расходы: Они состоят из штрафов за отвергнутые вызовы и затрат на оборудование.
Выплачиваемый штраф нужно подсчитывать для всех отвергнутых вызовов. Пусть репв1су — средний штраф в единицу времени по всем отвергнутым вызовам. Это также случайная величина, среднее значение которой будет использоваться при поиске минимума целевой функции. та взи Гамманнов б неаременнов в Рис. 9.12.
Типы наборов данных Наборы данных В нашей задаче полученный в каждый момент времени средний доход овзп так же, как и многие другие значения в моделях систем массового обслуживания (длина очереди и время нахождения каждой заявки в очереди в некоторый момент времени и т. п.), будет только конкретной реализацией соответствуюших величин, имеюших стохастическую природу. В обшем случае все параметры производительности систем, функционирующих в условиях неопределенности, являются стохастическими. При анализе таких систем представляют интерес не конкретные значения этих параметров, которые являются случайными величинами, а статистические характеристики всего набора реализаций таких случайных величин — среднее, максимальное и минимальное значения, доверительный интервал и т. п. Для удобства работы с коллекциями ланных Апу).оя(с поддерживает встроенный класс, который называется набор данных (басаеве).
Для набора данных не только хранятся все его конкретные значения, но и автоматически подсчитываются его статистические характеристики. 195 Глава 9. Компьютерный эксперимент Наборы данных могут быть трех типов, показанных на рис. 9.12. Нееременной тип — это просто последовательность реализаций некоторой случайной величины. Статистические характеристики такого набора данных определяются стандартным образом.
Совершенно другой тип наборов данных — временной. Для временных наборов данных хранятся не только каждое конкретное значение случайной величины, но и момент времени, в который это значение было установлено. При полсчете статистических характеристик такого набора данных учитывается длительность временного интервала, в течение которого случайная величина имела конкретное значение, то есть значение случайной величины учитывается с весом, равным этому временному интервалу. Фазовый набор данных — это последовательность пар значений, из которых первое понимается как аргумент, а второе — как значение функции от этого аргумента.
Очевидно, что время ожидания в очереди представляется невременным набором ланных. С другой стороны, длина очереди — это временной набор данных. Случайные величины яеье и рееетеу в нашей модели тоже невременные наборы данных. Если х — случайная величина, лля которой нам хочется подсчитать ее статистические характеристики, то в модели нужно определить х как набор ланных (простой, временной или фазовый), и в момент, когда х примет очерелное значение у, вызвать функцию х.есы1у>. Для набора данных с именем т вызовы методов х.сееее, х.еееп, т.пап, х.
ек дадут следующие статистические характеристики случайной величины гс число реализаций, запомненных в наборе, среднее, минимальное и максимальное значения. Другие методы возвращают доверительный интервал среднего (тееесеегьаееее), дисперсию (четьеесе) и др. Полный список методов, доступных для получения статистической информации случайной величины, приведен в Справочнике Классов (С)азз Веуегепсе) пакета Апу(.оя)с. Для сбора реализаций случайных величин веге и реее1еу введите наборы ланных с этими именами, выбрав в контекстном меню активного объекта меъе команду Новый набор данных.
Кролге ил1ени никаких других параметров в окне свойств этих объектов менять не надо. Доход от обслуживания вызовов В нашей модели слелаем следующие добавления. Все цены будем считать в у. е., единица модельного времени будет соответствовать одной минуте реального времени. Для подсчета длительности состоявшегося телефонного разговора введем новый тип сообщения Ш, который назовем сеп.. Этот тип будет наследоваться от базового класса вееьсу и иметь два вещественных поля, еяеете и евгеаеь (рис. 9.13). В блоке еоетее параметр ееевпсъеу определим как се11. е1еее (используя выпадающее меню).
В этом поле определяется класс тех объектов, которые Часть й(. Методологические вопросы использования моделей будут ГсисрнрОВатЬСя даННЫМ ИСТОЧНИКОМ. В ЯЗЫКЕ )ауа < л класса . с1авв как раз задает класс объектов. Рис. 9ЛЭ. Новый тип сообщения В блоке ртссевв() параметр слвг еет определим как: ( (са11) елсьсу) . свсатс=яесттпе ( ); а параметр сави1с как: ([са11)елсъсу).суьлтвь=яест1пе( ); Во всех блоках Еп(егрпзе ).Ватагу имя текущего объекта (сообщения) по уМОЛЧаНИЮ уСтаНОВЛЕНО КаК ег Еьеу.