Имитационное моделирование экономических процессов
![]()
|
Внимание! Если Вы не дотянете указатель до накопителя, поток будет указывать на облачко и окажется никак ![]() Аналогично промоделируем трубу, ![]() Внимание! Если стрелка указателя была правее накопителя, поток будет вытекать из облачка и не будет иметь отношения к создаваемой модели. Далее, чтобы задать уровень бассейна в начальный момент, введем константу Initial level. Для этого щелкнем по кнопке "Константа" в меню инструментов ![]() изменив данное по умолчанию имя ![]() ![]() В результате получены изображения всех элементов модели (рис. 7). Теперь нужно указать связи между этими переменными. Сначала установим связь между константой Initiallevel и накопителем. Для этого необходимо: • выбрать кнопку связи в ![]() панели инструментов установить курсор (принявший форму стрелки связи) поверх константы Initiallevel, нажать левую кнопку мыши и протащить, не отпуская кнопки, до накопителя; когда стрелка будет внутри изображения Pontjevel, отпустить кнопку мыши. Между константой, представляющей начальный уровень воды в бассейне, и динамической переменной "уровень воды" установлена связь (рис. 8). Поскольку уровень воды в бассейне влияет на скорость вытекания воды (наряду с параметрами трубы), а следовательно, и на скорость понижения уровня воды в бассейне Rate out, необходимо установить связь между Pondlevel и Rate_out. Сделаем это точно так же, как и в первом случае. Отметим, однако, что теперь стрелка, изображающая связь, выглядит иначе. Это не ошибка. Дело в том, что POWERSIM опознает первую связь - от константы к накопителю - как инициализирующую, действующую только в начальный момент, а вторую связь - от накопителя к вспомогательной переменной - как постоянную, действующую все время моделирования. Поэтому первая связь будет изображена пунктирной линией со стрелкой, а вторая - сплошной линией. Замечание. В случае, когда нужно изобразить сразу несколько однородных элементов, например несколько накопителей, вспомогательных переменных или констант, или, как в данном примере, две связи, удобнее 12 13 ![]() ![]() ![]() щелкнув снова правой кнопкой мыши по другой кнопке или на диаграмме). Имея курсор в виде некоторого объекта, мы можем создавать эти объекты нужное число раз, щелкая левой кнопкой мыиш в разных местах окна диаграммы. Таким образом, для установления связей в модели можно было, щелкнув правой кнопкой мыиш по кнопке связи, провести две нужные нам стрелки, а затем щелкнуть по кнопке "Указатель'.' 5. ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ Следующий шаг в создании модели - определение переменных, то есть задание начальных значений и законов их изменения в процессе моделирования. Можно заметить, что законы изменения уже почти полностью заданы самой структурой диаграммы и остается уточнить отдельные детали. Определим переменную Pond level. Для этого двойным щелчком на изображении этой переменной откроем диалоговое окно "Define Variable" (рис. 9). В окне переменных показана текущая переменная Pondlevel. В окне "Definition" нужно задать начальное значение переменной - Initial level. Нет необходимости вводить это название с клавиатуры, так как оно находится в окне "Linked Variables" ("Связанные переменные"). В это окно помещаются названия всех параметров, для которых на диаграмме установлены связи с текущей переменной (и все они должны участвовать в ее определении). Двойным щелчком на названии ![]() "Linked Variables" помещаем эту переменную в окно "Definition". Замечание. Если диалоговое окно на экране меньше изображенного на рис. 9, значит оно находится в свернутом виде и его можно раскрыть, нажав кнопку "More» " в правом нижнем углу. И наоборот, если для работы не нужны ни список связанных переменных, ни список функций, ни "клавиатура", можно свернуть окно, нажав кнопку "Less«". Окно "Define14 Variable" может находиться в трех состояниях: развернутое, минимальное и промежуточное (со списками связанных переменных и функций, но без "клавиатуры"). С помощью кнопок "More»" и "Less«" всегда молено выбрать наиболее удобный в данный моцент вид окна. Заметим, что переменная InitialJevel была введена лишь для наглядности модели и для того, чтобы продемонстрировать инициализирующую связь. Молено было бы ввести соответствующее числовое значение начального уровня воды прямо в окне "Definition". ![]() При нажатии кнопки "Set" знак вопроса внутри прямоугольника Pondjevel исчезает (как в окне переменных диалогового окна, так и на диаграмме). Это означает, что динамическая переменная Pond level определена полностью, хотя было задано только ее начальное значение (вводом значения в окно "Definition" при нажатой селекторной кнопке "Initial" над окном). Дело в том, что закон изменения для Pondjevel уже определен самой структурой диаграммы. Если вместо кнопки "Initial" выбрать кнопку "Flow", то в окне определения переменной будет показан закон ее измене- 15 ![]() + dt*(Rate_in ) - dt*(Rate__out). ![]() Эта формула означает, что на каждом шаге моделирования значение переменной Pondjevel будет увеличиваться на величину (Rate in -Rate_out)*dt, где dt - интервал интегрирования (определенный как "Time Step" в пункте меню SimulationSetup, который будет описан ниже). Итак, значение накопителя в любой момент времени полностью определяется его начальным значением и формулой для величины приращения на каждом шаге моделирования. Если нажать в окне "Define Variable" кнопку OK, окно закроется и будет видна диаграмма, на которой знак вопроса исчез из изображения уже определенной величины Pondjevel, а в изображениях остальных переменных знаки вопроса остались. Теперь можно последовательно определить оставшиеся переменные, вызывая для них окно "Define Variable" двойным щелчком мыши и действуя так же, как и в первом случае. Единственное отличие состоит в том, что для вспомогательных переменных и констант в окне "Define Variable" нет селекторных кнопок "Initial"/"Flow", и в окно "Definition" просто вводится значение или формула. Однако быстрее определить сразу все переменные модели, не выходя из диалогового окна "Define Variable" (то есть не нажимая пока кнопку ОК). Для этого в окне переменных следует щелкнуть по стрелке справа, в результате появится список всех переменных модели. Для их последовательного определения щелчком по переменной Rate In в списке она помещается в окно переменных и делается активной. Положим ее равной 0.1, введя это значение в окно "Definition" (это можно сделать как с клавиатуры, так и щелкая мышью по соответствующим кнопкам в правом нижнем углу диалогового окна). 16 Итак, введя значение переменной Ratein и нажав кнопку Set, мы полностью определили ее. Однако при этом была допущена небольшая несогласованность: один и тот же объект был определен на диаграмме как вспомогательная переменная и задан в диалоговом окне как константа. Заметим, что POWERSIM уже исправил эту оплошность! Символом Rate in стала уже не вспомогательная переменная, а константа (как в окне переменных диалогового окна, так и на диаграмме). В результате с помощью POWERSIM Ratein определена полностью и корректно. Аналогично, если попытаемся на диаграмме провести связь к константе, то есть установить ее зависимость от другой переменной модели, то она автоматически превратится во вспомогательную переменную. Так POWERSIM обеспечивает непротиворечивость определения неременных и частично корректирует модель. Перейдем к определению переменной Rate out. Скорость вытекания воды из бассейна (следовательно, и скорость понижения уровня воды) зависит не только от параметров трубы, но и от уровня воды в бассейне. Из теории гидродинамики следует, что скорость понижения уровня воды Rate out пропорциональна квадратному корню от уровня воды Pondjevel. Выбрав в списке переменных Rate out, введем ее определение: 0.05*SQRT(Pond level). При этом функцию SQRT выбираем из списка функций в окне "Define Variable" и двойным щелчком мыши по названию этой функции помещаем ее в окно определения. Аргумент функции Pondjevel находим в списке переменных, связанных с активной переменной Rateout. Нажав кнопку SET, заканчиваем определение те- ![]() ![]() Нажмем кнопку "Сохранить" ![]() диалоговом окне "Save As" необходимо ввести название файла, в котором будет храниться документ. В пакете POWERSIM все файлы, используемые для сохранения моделей, имеют расширение SIM. Нажатием ОК инициируется диалоговое окно "Properties". При желании можно указать в нем имя автора и описание модели. Нажатием ОК заканчивается сохранение модели. Теперь имя файла, в котором сохранена модель, заменит заголовок Diagram 1 окна диаграммы. Замечание. Цифры в определении переменных модели были подобраны приблизительно и используются только при построении учебной задачи. Моделирование и наглядное представление его результатов ![]() Чтобы начать моделирование, следует щелкнуть по кнопке Н из панели команд. Замечание. По умолчанию моделирование производится в соответствии со следующими установками: начальный момент (StartTime) равен О, конечный момент (StopTime) равен 100, интегрирование производится методом Эйлера, гиаг моделирования (TimeStep) равен 1.0. Изменить эти параметры можно в диалоговом окне "SimulationSetup ". Результаты моделирования будут видны в табличке со значением динамической переменной Pondjevel, изменяющимся в процессе моделирования, рядом с ее изображением на диаграмме (рис. 12) и на графике внутри изображения накопителя. Это так называемый "автоотчет" но результатам моделирования. Значения динамических переменных модели и графики внутри их изображений включены в отчет по умолчанию. Эту установку можно изменить в пункте "Auto ![]() 18 Изобразим последовательные значения динамической неременной Pondlevel в процессе моделирования на графике. Чтобы можно было видеть одновременно диаграмму и график, развернем окно диаграммы на весь экран с помощью кнопки "Максимизировать" ("Треугольник вверх") в правом верхнем углу окна или пункта "Развернуть" управляющего меню (оно раскрывается щелчком по кнопке в левом верхнем углу окна). Для построения графика нужно: • выбрать кнопку "график" ![]() • поместить курсор (принявший вид графика) на свободное место в окно диаграмм (обычно ниже диаграммы) и, щелкнув левой кнопкой мы ши, создать в этом месте окно для построения графика; • выделить щелчком мыши пере менную, график значений которой мы хотим построить (Pondlevel), и, не отпуская кнопку мыши, передвинуть указатель в окно графика; • когда вид указателя изменится с тянущей руки ![]() ![]() Теперь при запуске снова процесса моделирования значения выбранной переменной изображаются и на графике (рис. 13). Замечание. Чтобы изобразить на графике значения сразу нескольких переменных, молено последовательно "перетащить" их мышью на график, при этом переменные будут пронумерованы иокрашены в разные г^вета (рис. 14). Можно также сразу "перенести" все интересующие нас переменные на график. Для этого нужно выделить их, щелкая левой кнопкой мыши при на ![]() указатель от любой из этих переменных до графика при нажатой кнопке мыши. При этом на графике появятся названия сразу всех выделенных переменных. Если при перетаскивании выделенных объектов в окно графика 19 ![]() Чтобы изменить расположение, длину или ширину графика, нужно щелчком мыши активизировать его окно. Окно графика можно перемещать и растягивать с помощью мыши так же, как любое окно в Windows. Когда нужные размер и положение получены, щелчком вне окна графика можно снять с него выделение. Точно так же можно, выбрав в панели инструментов кнопку "Таблица", поместить сетку для таблицы значений переменной в процессе моделирования в нужное место окна и "перетащить" в таблицу интересующие нас переменные. Во время моделирования таблица заполнится временными рядами из значений этих переменных. Размеры и расположение таблицы можно отрегулировать так же, как и у графика. Существует и второй способ построения графиков и таблиц с использованием их окон определения. Начнем рассмотрение с построения графиков. Двойным щелчком мыши по окну графика открывается диалоговое окно "Define Time Graph" (рис. 15). Это диалоговое окно также позволяет изменять оформление графика: группы "Time (X) Axis" и "Value (Y) Axis" предназначены для редактирования осей, группа "Drawing" - для выбора вида графика (изменение установок в этой группе относится к переменным, выделенным в списке параметров графика). В этой группе выбирается, будет ли закрашиваться область под графиком (Area), будет ли график изображаться линией (Line), будет ли график помечаться цепочкой специальных значков (Marker). Вид и цвет границы графика, области под графиком, вид (цифра, крестик, квадратик...) и цвет маркеров устанавливаются в диалоговом окне, открывающемся кнопкой "Custom". Кнопка "Generations" открывает диалоговое окно, позволяющее работать с временными рядами, полученными на предыдущих этапах моделирования. Кнопки "Background" и "Graph Area" используются для выбора вида и цвета окна графика и области графика, кнопка "Title" позволяет оформить заголовок графика, кнопка "Legend" -редактировать легенду (то есть расшифровку маркеров, которыми помечаются графики) и т.д. Размеры окна графика можно изменять, перемещая мышью его размерную рамку. Для построения таблицы со значениями переменной Pond_level за все время моделирования можно поступить следующим образом: выбрать кнопку "Таблица" ![]() поместить курсор (принявший вид таблицы) на подходящее место в окно диаграммы и, щелкнув левой кнопкой мыши, создать в этом месте сетку для таблицы; • двойным щелчком мыши на изображении таблицы открыть диалоговое окно "Define Time Table" (рис. 16); ![]() |