Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 41
Текст из файла (страница 41)
ДЛя ТОГО ЧтОбЫ ПОЛЬЗОВатЬСя ЭЛЕМЕНтаМИ СтруКтурЫ тЕКуШЕГО СООбШЕНИя (Здсеъ — даННЫМИ Сава-С И Сутп1ви), НЕОбХОдИМа ОПЕрацИя яВНОй КОНВЕРСИИ ТИПОВ (Са11) есс1еу, уКаЗЫВаЮШая, что этот объект имеет тип са11. Операция кастинга имеет меньший приоритет, чем точка, поэтому выражение это нужно взять в скобки, чтобы затем использовать "точечную" операцию доступа к данным этого объекта. Теперь после обработки каждая заявка будет хранить момент начала и момент конца разговора. Эти значения нужны для того, чтобы начислить плату за обслуживание заявки. Зададим теперь правило расчета за состоявшиеся телефонные переговоры.
Его удобно определить алгоритмической функцией. Щелкните на кнопке П или выберите кол(аиду Новая алгоритмическая функция в контекстном меню при выделенном корневом объекте модели иазл. Назовите функцию сады -ьсе. У нее должен быть один вещественный параметр, назовите его и Саму функцию в окне Тело функции определите так (рис. 9. 14): тесап с<=1э пьарттсе : с*пъсрттсеу Функция са11рттсе(с) определяет стоимость разговора так: если длительность с разговора не больше одной минуты, то взимается плата за одну минуту в размере пълвт'се, если больше, то с*птарт1се.
Параметр п1авт1се (цена минуты разговора) задайте как вещественный параметр модели со значением 0.12. Глава 9. Компьютерный эксперимент Рис. 9.14. Алгоритмическая функция Рис. 9.19. Определение дохода от обслуживания заявки Введите в модель вещественную переменную тпсоие, суммирующую полученный с течением времени доход от предоставления соединения (с начальным значением О). Каждый раз, как обслуженная заявка попадает в блок втп)с, ВЕЛИЧИНа тпсоясе дОЛжиа ВОЗраетатЬ На ВЕЛИЧИНУ: са11вт1се ( ( (са11) епсьсу) .
св1пьвь- ( (са11) епс1су) . сапате ); Как только получено новое значение суммарной величины дохода тпсосле, можно вычислить новую реализацию среднего дохода даеп, которая равна тпт сослеГдест1пе(). ПОЭтОМу В ПОЛЕ С ИМЕНЕМ откпвет ОКНа СВОйетВ бЛОКа втпв СЛЕдуЕт ВСтаВИтЬ СЛЕдуЮщИЕ ОПЕратсрЫ (рИС. 9. ! 5): 1псопе += са11вт1се(((Са11)епсгку).СР)п1вь-((Са11)епеьеу).еаеате ); яа1п.асЫ ( 1псопсе/деет3тле() )с Штраф за необслуженные вызовы В соответствии с тарифным планс за каждый необслуженный вызов поставщик сервиса платит фиксированный штраф.
Примем значение этого тптрафа ! у. е. Полсчитаем сумму штрафа за все пропущенные вызовы. ВведИтЕ НОВЫЙ ПараМЕтр МОДЕЛИ репа1еуяетСа11 (Штраф За НЕОбСЛужЕННЫй ВЫ- зов) со значением !.О. Кроме того, введем в модель переменную вепа1еу для подсчета полной суммы штрафа с начальным значением О. Для получения всей суммы штрафа каждый раз, как только заявка отбрасывается, следует увеличить суммарное значение штрафа вепате1ев на величину репа1суветса11, а также 198 Часть (Н. Методопогичвскив вопросы использования моделей дОбаантЬ В Набср даННЫХ репа1су ЕЕ НОВУЮ рЕаЛИЗацИЮ, раВНуЮ Рвпа1егвМ дестгте(]. Все необслуженные заявки в модели направляются в модели в блок выли, Для подсчета штрафа нам не нужны никакие параметры новой пришедшей в этот блок заявки, важен лишь сам факт прихода заявки.
Поэтому лля учета Штрафа В ПОЛЕ о В Свс бЛОКа вгпь1 ВСтаВЬтЕ ОПЕратОрЫ: Репа1еьев += репа1еуРетоа11", Репа1су.адд(Рспа1еьеа/ясстьые() НаПОМНИМ, Чтс ПЕРЕМЕННаЯ Рвпа1егвв ПРИНИМаЕт ЗНаЧЕНИЕ ОбШЕГО ШтРафа, в то время как набор данных Рвпа1су — это случайная величина, равная среднему штрафу за единицу времени. Приведенная стоимость оборудования Определим теперь функцию зависимости затрат на оборудование от числа каналов.
Отнеся затраты на оборудование к периоду морального устаревания оборудования (например, 5 лет), получим значение приведенных капитальных затрат. Пусть для организации АТС может быть закуплено оборудование разных типов, так что стоимость поддержания одного канала зависит от числа каналов сложным образом. Пусть простая АТС, обслуживаюшая до 10 каналов одновременно, вместе с затратами на поддержку каналов в течение 5 лет стоит 0.012 у. е. в пересчете на 1 минуту, если использовать все 10 каналов, но только 0.01 у. е, если использовать 1 канал.
Более продвинутая АТС, обслужнваюшая до 50 каналов, стоит 0.05 у. е. (в пересчете на 1 минуту обслуживания в течение 5 лет), но если использовать только 11 ее каналов, стоит 0.013 у. е. и т. п. Учет затрат на оборудование и его обслуживание, зависяших нелинейным образом от числа каналов и, выполним с помошью табличной функции, которая легко определяется в Апу(.оя!с. Назовем функцию, даюшую значение затрат на оборудование от числа каналов, приведенное к минуте времени, впиь(хьвпевс1св. ЗаЛаЛИМ ЕЕ табЛИЧНО. ДЛя ЭТОГО ШЕЛКНИтЕ На КНОП- ке (Щ или выберите команду Новая таблица преобразования в контекстном меню при выделенном корневом обьекте модели маь .
Назовите таблицу еои1ртепСРсьсе. В появившемся окне свойств этого объекта в поле Данные определите функцию во 1(хьвпевсьсв согласно рис. 9.16. Щелкнув на кнопке График окна свойств таблицы, можно выбрать как закон интерполяции между заданными таблично значениями, так и правила принятия решения, когда аргумент выходит за обозначенные пределы. Определите эти законы разумным образом, например простой линейной интерполяцией и экстраполяцией. Глава 9. Компьютерный эксперимент Расходы на оборудование при числе каналов н, приведенные к единице времени, теперь можно подсчитать вызовом функции едцтрскеперктсе(н). Рис.
9.тб. Табличная функция, задающая стоимость оборудования 9.6.5. Целевая функция Средний доход в нашей модели определяется случайной величиной датп, средний штраф определяется случайной величиной репатсу, стоимость оборудования, уже приведенная к единице модельного времени, определяется функцией едцтрееперттсе(н).
Для подсчета прибыли (в единицу времени) введите в модель переменную вепеек емеап (среднюю прибыль), определяемую формулой так (рис. 9.! 7): дата. скеап ( ) — репатту. сзеап ( ) — еецтрпепе Рт усе [н) Здесь дата.скеап() и репатсу.сзеап() — математические ожидания величин датп и репатеу. Рис. 9.17. Определение переменной вепеЕтснеап формулой Запустите модель. Можно видеть, что прибыль в единицу времени (переменная вепеттемеап) при установленных параметрах отрицательна.
Измените Часть!д Метсдслогичвскив вопросы использования моделей значение и, установив его 20. Прибыль стала положительной, порядка 0.35 у. е. в минуту. При числе каналов и, равном 1ОО, прибыль становится меньше. Следовательно, сугдествует оптимальное число каналов, обеспечиваюшее максимальную прибыль. Для нахождения оптимального числа каналов, дающего максимальную прибыль, можно либо перебрать все значения и от 1 до, например, 100 в эксперименте для варьирования параметров, но можно и использовать эксперимент с оптимизацией. Оптимизационный эксперимент в Апу(.оя)с позволяет найти такие значения параметров модели, при которых обрашается в минимум или максимум некоторая определенная пользователем целевая функция.
Значения целевой функции подсчитываются в Апу(.ой(с каждый раз по окончании очередного выполнения модели, и алгоритм оптимизации автоматически выбирает новые значения параметров лля очередного запуска модели. Оптимизация в АпуЬщс реализована с использованием встроенного пакета ОргОцезц Для оптимизации пользователь должен в соответствуюьцих окнах задать функционал, который следует минимизировать либо максимизировать, задать параметры и ограничения их диапазона, в которых должна выполняться оптимизация, а также указать ограничения, определяющие класс допустимых решений.
Затем пользователь должен запустить оптимизацию, и пакет ОргОцез1 будет использовать метаэвристику рассеянного поиска лля выбора очередных значений входных параметров на основании значений целевой функции, полученных на предыдуших прогонах модели. Шелкните по кнопке Я~ панели инструментов и в появившемся окне выберите Новый оптимизациоииый эксперимеит.
В окне свойств эксперимента уСтаНОВИтЕ Ввпвттснва В КаЧЕСтас ЦЕЛЕВОГО фуНКцИОНаЛа ИЗ ВЫПадаЮщЕГО меню. Изменяемым параметром является и (выберите его тоже из выпадаюшего менк1), верхнюю границу и установите 100, условие останова одного прогона — 10 000 единиц времени, число прогонов для нахождения оптимального числа каналов сделайге 30 (открыв окно Установки Ор(()вев( шелчком по кнопке Установки) и выберите задачу максимизации функционала (рис. 9.18).
Рис, 9.18. Параметры оптимизационного эксперимента Глава 9. Компьютерный энспе имент Сделайте этот эксперимент текущим, выбрав соответствующую команду в контекстном меню объекта (его название в этом случае будет изображаться жирным шрифтом). Запустите модель. Оптимизационный эксперимент найдет наилучшее число каналов 31, максимальная прибыль поставщика сервиса в этом случае будет 0.376 у. е. в минуту (см. рис. 9.19). Вы можете сравнить ВаШу МОДЕЛЬ С МОДЕЛЬЮ Кк1апдвтоЫела В ПаПКЕ МОдЕ! ЕХа|вр1ЕЗ~Ран Ш. Рис. 9. т 9. Результат оптимизационного эксперимента 9.7. Заключение Апу1оя1с включает несколько видов экспериментов, которые можно выпал- нять с разработанной имитационной моделью.
Одним из самых важных с точки зрения практического применения является олтилшзаииопньш" эксперимента. Многие модели в бизнесе, науке и технике включают существенные нелинейности, комбинаторные зависимости и неопределенности, которые легко представимы в имитационных моделях, но являются слишком сложными для представления формальным математическим аппаратом, наборами математических формул. Это препятствует непосредственному применению классических методов оптимизации в таких системах. Целью пакета Ор1Ооеа1, встроенного в Апу1.оя)с, как раз и является оптимизация систем, которые не могут быть представлены как математические модели и оптимизация в которых не может быть выполнена с помощью классических алгоритмов.