- •Компьтерный пакет имитационного моделирования Ithink
- •1. Уровни конструирования модели в Ithink
- •2.2. Пример построения модели
- •Обслуживание клиентов
- •3. Разработка пользовательского интерфейса
- •4. Задание массивов в Ithink
- •5. Подмодели
- •3 Дифференциальные уравнения, системы дифференциальных уравнений в Ithink
- •Библиография
4. Задание массивов в Ithink
Использование возможностей механизма реализации массивов элементов идеограмм ВФП делают подобные исследования проще, позволяя создавать одиночные фрагменты структуры для представления множества категорий.
В рассмотренной модели число клиентов, находящихся в обслуживании, представляются одной записью. Но в действительности, клиенты могут идентифицироваться сферой предоставляемых услуг, регионом, отраслью. И в этих случаях подобные градации по категориям более чем оправданы.
Для формирования массива, отражающего все эти подробности, необходимо, прежде всего, объявить размерность соответствующих элементов, зайдя в меню Model и вызвав редактор массивов Array Editor (рис. 21).
Поле ввода Dimension Name предназначено для задания категорий (или размерностей) массива. И если мы хотим разделить активность деятельности бизнес консалтинга, например, по видам профессиональных услуг (Реинжиниринг, Инвестиции, Аудит и т. Д.), то изменим стандартное название Subscript_Set_1 на «Услуги».
Теперь, когда принято решение, что «Услуги» будут представлены некоторым массивом, мы должны определиться, какие элементы скрываются за этим заголовком.
Рис. 21. Редактор массивов Array Editor
Допустим, мы хотим рассматривать виды консалтинговых услуг в следующем порядке: Реинжиниринг, Инвестиции, Аудит и Остальные.
Для ввода этих видов в нужном порядке «подсветите» поле «1», размещенное справа от «Element Name/#». Наберите «Реинжиниринг» в окне элемента. Для ввода следующего вида нажмите на маленький треугольник, расположенный непосредственно под надписью New. Высветится элемент «2». Наберите «Инвестиции» в окне элемента. Повторите этот процесс для вида «Аудит» и «Остальные». Подтвердите Ваши окончательные решения кнопкой ОК.
Определенный именно таким образом элемент может принимать четыре значения (одно для каждого элемента в массиве) и соответствовать тому, что обычно называют «одномерным массивом».
Чтобы увидеть, как определяются элементы в модели с массивами, дважды щелкните мышью на фонде Клиенты в обслуживании, вызовите соответствующую панель и установите в положение «Включено» переключатель «Array», расположенный в левом верхнем углу панели. Вы увидите состояние панели, изображенное на рис. 22.
Рис. 22. Задание значений элементов массива
Прежде всего, обратите внимание на управляющие элементы, расположенные справа от переключателя Array. Значение «1-D» показывает, что массив одномерный, поскольку именно такую размерность мы и определяли в редакторе массивов. «Услуги» это имя массива, а кнопка «To Editor» управляющий элемент, с помощью которого вы можете перейти обратно в редактор массивов.
При включенном положении переключателя Apply To All, любое начальное значение для фонда Клиенты в обслуживании, введенное в окне INITIAL применилось бы ко всем видам консалтинговых услуг (Реинжиниринг, Инвестиции, Аудит и Остальные). Выключите переключатель и убедитесь, что сформируется запрос начального значения для первого элемента массива:
Это происходит потому, что данные по каждому из четырех видов услуг могут теперь инициализироваться независимо друг от друга. К примеру, вы можете ввести значение «50» для задания начального значения Клиенты в обслуживании для услуги Реинжиниринг и подтвердить это решение кнопкой OK.
Обратите внимание на то, что Ithink не позволяет пока выйти из начатого диалога, так как оставшиеся три элемента остались неопределенными. Пользуясь возможностями, которые предоставляет переключатель Apply To All, доопределите оставшиеся элементы какими-либо значениями (например, для услуги Инвестиции – 20, услуги Аудит – 30 и услуги Остальные – 25) и подтвердите свое решение кнопкой OK.
«Двумерные» отображения элементов идеограммы указывают на элементы массивы. И чтобы продолжить работу с моделью, нам, прежде всего, необходимо проделать аналогичные операции повышения размерности над потоками Рост клиентуры и Падение клиентуры (которые помечены символом «неопределенности» знаком «?»).
Каждый поток, описываемый переменной массивом, определяется, например, для потока Рост клиентуры как:
Клиенты_в_обслуживании[Услуги]*Фактор_роста
Эта структура идентична той, которая уже использовалась в модели, однако здесь появляется дополнительная возможность отслеживать динамику роста клиентуры по видам услуг. Обратите внимание, что если переключатель Array To All находится в положении «включен», то предстоит работать лишь с одним значением. На самом деле, это полезное свойство, экономящее немало процессорного времени эмуляции, так как лишь единственное (скалярное) значение умножается на каждое значение клиентов по видам услуг. Подтвердив подобную настройку кнопкой «OK», повторить ее и для потока Падение клиентуры. В результате символы неопределенности «?» с потоков Рост клиентуры и Падение клиентуры будут удалены.
Тем не менее, модель все же будет содержать элементы, которые еще не определены. Прежде всего, необходимо переопределить элементы модели, зависящие непосредственно от массива фондов Клиенты в обслуживании. Это конвертор Реальное качество, выберем заданную ранее зависимость для всех элементов массива. Задайте фонд Ожидаемое качество массивом с одинаковыми значениями 90. Переопределите поток Изменение ожидаемого качества:
(Реальное_качество[Услуги]-Ожидаемое_качество[Услуги])/t_восстановления
Выбор пункта «Услуги» означает вычисление по всем элементам массива (то есть по всем видам услуг). После подтверждения вашего решения кнопкой OK, проследите, чтобы в модели не осталось неопределенных элементов.
Попытаемся теперь отобразить на одной графической странице динамику изменения уровней фонда Клиенты в обслуживании по всем четырем видам услуг. Для этого выберите из палитры инструментов пиктограмму графика, щелкните по ней и вызовите соответствующее диалоговое окно. Выбор «*» позволит отобразить график изменения уровня фонда по всем четырем видам услуг. Подтвердив свой выбор и запустив эмуляцию модели, мы получим графическое изображение (рис. 23).
Рис. 23. График изменения уровня Клиенты_в_обслуживании по всем четырем видам услуг
Задание: модифицировать модель, используя двумерный массив (то есть клиенты в обслуживании делятся не только по виду оказываемых услуг, но и по региону проживания: село, город).
