- •Решение прикладных задач средствами компьютерного моделирования
- •Содержание
- •Введение
- •1. Компьютерные модели и моделирование
- •1.1. Моделирование как метод познания. Понятие модели и моделирования
- •1.2. Классификация моделей и моделирования
- •1.3 Понятие формализации
- •1.4. Основные этапы построения моделей
- •1.5. Компьютерные модели и моделирование
- •2. Имитационное моделирование непрерывных динамических систем
- •2.1. Программное обеспечение для моделирования непрерывных динамических систем
- •2.2. Основные сведения о mvs
- •2.3. Общая схема моделирования в среде mvs на примере модели «Хищник-жертва» предметной области «Биология»
- •2.4. Задания на моделирование процессов из различных предметных областей в среде mvs.
- •2.5. Модели для самостоятельного исследования
- •3. Имитационное моделирование дискретных динамических систем
- •3.1. Программное обеспечение для моделирования дискретных динамических систем
- •3.2. Система имитационного моделирования gpss
- •Распечатка программы.
- •3.3. Задания для самопроверки
- •3.4. Лабораторный практикум
- •3.5. Варианты заданий для моделирования [33]
- •4. Приложения Приложение 1 Стандартные числовые атрибуты
- •Приложение 2
- •Приложение 3 Стандартный вывод gpss/pc.
- •Приложение 4
- •Приложение 5
- •Приложение 6
- •5. Список литературы
2.3. Общая схема моделирования в среде mvs на примере модели «Хищник-жертва» предметной области «Биология»
В качестве примера, иллюстрирующего возможности исследования математических моделей средствами MVS, рассмотрим моделирование динамики популяций «хищник-жертва», учитывая основные этапы моделирования.
Первый этап. ПОСТАНОВКА ЗАДАЧИ
Описание задачи
Пусть в некотором замкнутом районе живут хищники и жертвы, например, зайцы и волки. Зайцы питаются растительной пищей, имеющейся всегда в достаточном количестве. Волки могут питаться лишь зайцами. Требуется определить продолжительность жизнедеятельности популяции в зависимости от исходных параметров, установить характер процесса изменения численности жертв и хищников во времени.
Цели моделирования:
проанализировать как изменяется популяция в течение некоторого периода времени;
проследить динамику популяции в зависимости от изменения основных параметров, входящих в модель.
Второй этап. РАЗРАБОТКА МОДЕЛИ
Математическая модель
Следует отметить, что поведение организмов в живой природе гораздо труднее описать средствами математики, чем самые сложные физические процессы, то есть представить модель в виде уравнения, системы уравнений, системы неравенств, дифференциального уравнения или системы дифференциальных уравнений. В то же время созданные модели помогают установить некоторые закономерности и общие тенденции развития экологических систем.
Одним из самых
известных примеров описания динамики
взаимодействующих популяций являются
уравнения Волтерра – Лотка [24]. Рассмотрим
модель взаимодействия хищников и их
добычи, когда между особями одного вида
нет соперничества. Пусть
и
– число жертв и хищников соответственно.
Предположим, что относительный прирост
жертв равен
,
,
где
– скорость размножения жертв в отсутствие
хищников,
– потери от хищников. Развитие популяции
хищников зависит от количества пищи
(жертв), при отсутствии пищи
относительная скорость изменения
популяции хищников равна
,
,
наличие пищи компенсирует убывание, и
при
имеем
,
.
Таким образом, система Волтерра – Лотка имеет вид:
где
.
Непрерывное поведение в общем случае задается совокупностью обыкновенных дифференциальных уравнений.
Компьютерная модель
При построении компьютерной модели одним из главных моментов является выбор программной среды. В качестве программной среды нами выбрана интегрированная оболочка MVS. Построение компьютерной модели можно представить в виде нескольких последовательных шагов, связанных с переводом описания модели на язык Model Vision Language (MVL), используемого в MVS.
Шаг 1. Создание нового проекта.
Запустите среду MVS и создайте новый проект с помощью команд основного меню «Проект/Новый…». В появившемся диалоговом окне выберите путь к папке проекта (например, «D:\Мои_модели\»), введите имя проекта Хищник_жертва и нажмите кнопку «Создать». После этого появится папка «D:\Мои_модели\Хищник_жертва» и в ней файл базы данных проекта «Хищник_жертва.mvb» (рис. 9).
Рис. 9. Сохранение проекта
Замечание. Предполагается, что для нового проекта открывается новая папка (если используется существующая, то все данные в ней уничтожаются). В то же время с помощью команды «Проект/Сохранить как» вы можете сохранять в той же папке различные модификации данного проекта. В дальнейшем в этой папке появятся еще два файла – «Хищник_жертва.ini» и «Хищник_жертва _em.ini» - в которых сохраняются соответственно установки проекта и выполняемой модели. В имени файла не допустимы знаки: пробел, дефис, тире, плюс, а также другие недопустимые символы. В составном имени файла целесообразно использовать знак подчеркивания.
Итак, после создания проекта у вас должно быть в наличии 3 файла, хранящихся в папке проекта:
*.mvb
*.ini
*_em.ini
Перед вами откроется основное окно проекта с четырьмя дочерними окнами (рис. 10):
Окно управления проектом (слева вверху), содержащее дерево основных составляющих проекта. В новом проекте по умолчанию добавлен класс непрерывного блока, например, «Хищник_жертва» (имя класса совпадает с именем проекта).
Окно виртуального стенда (в центре вверху. По умолчанию в виртуальный стенд помещен экземпляр класса «Хищник_жертва» с именем «Хищник_жертва_1». Рассматриваемая биологическая модель является изолированной системой, и нет особой необходимости в структурной схеме и блоках. Однако данная версия пакета ориентирована на блочное моделирование и потому изолированная система представляется как блок без входов и выходов, а ее модель в виде виртуального стенда с экземпляром такого блока.
Окно редактирования добавленного по умолчанию класса (в данном случае класса «Хищник_жертва») содержит дерево составляющих описания класса. Поскольку данный блок предполагается непрерывным, то по умолчанию в него добавлена пустая система уравнений с именем «Система_уравнений_1».
Окно редактирования системы уравнений, открытое на пустой «Система_уравнений_1».
Рис. 10. Многооконный интерфейс MVS.
Шаг 2. Ввод и описание всех необходимых параметров.
Описывая моделируемую систему необходимо выделять не просто всю совокупность параметров, характеризующую состояние объекта в некоторый момент, а разбивать их на следующие группы: параметры (параметры, не меняющиеся для данного экземпляра класса); внутренние переменные (параметры, меняющиеся для данного экземпляра класса и характеризующие поведение объекта; константы (параметры, не меняющиеся для данного класса).
Перед тем как вводить переменные и константы необходимо проанализировать систему дифференциальных уравнений, описывающих модель, выделить те переменные, которые присутствуют в системе, а также начальные значения для тех переменных, по которым осуществляется дифференцирование.
Характеризуя объект и его свойства, мы используем переменные, которые могут принимать значения различного типа. В данной задаче использованы только вещественные переменные. Для данной модели – это переменные a, b, c, d, x1, x2.
Для того чтобы
ввести первоначальные значения переменных
перейдите в окно редактирования класса
«Хищник_жертва», выделите в дереве
объектов узел «Внутренние переменные»,
нажмите правую клавишу мыши вызовите
всплывающее меню и выполните команду
«Добавить». То же самое можно сделать
с помощью команды «Редактировать/Добавить»
главного меню или кнопки
на панели кнопок (рис. 11).
Рис. 11. Введние переменных.
В появившемся диалоговом окне введите идентификатор переменной a, оставьте заданный по умолчанию тип double и задайте начальное значение, равное 4 и комментарий (рис. 12).
Рис. 12. Окно ввода переменных.
Аналогичным образом добавьте переменные b, c, d, x1, x2 (рис. 13).
Рис. 13. Описание класса.
Замечание.
Вы можете изменить
введенные определения дважды кликнув
на них мышью, а также с помощью команды
«Изменить» всплывающего меню, команды
«Редактировать/Изменить» главного меню
или кнопки
на панели кнопок. Кроме того, вы можете
редактировать выделенное определение
как текст с помощью команды
«Редактировать/Редактировать как текст
(F2)» главного меню или
однократного щелчка мыши.
Завершение редактирования происходит по клавише «Enter» или щелчка мыши за пределами редактируемой строки. Отмена редактирования происходит по нажатию клавиши «Esc».
Вы можете удалить
введенные определения с помощью команды
«Удалить» всплывающего меню, команды
«Редактировать/Удалить» главного меню
или кнопки
на панели кнопок.
Шаг 3. Ввод уравнений.
Для задания формул и уравнений в пакете предусмотрен специальный редактор, который позволяет вводить математические выражения в близком к естественному виде. В окне редактирования уравнений вызовите специальный редактор формул при помощи двойного щелчка мыши на узле «Уравнения» или команды «Изменить» всплывающего меню. Введите необходимые уравнения (рис. 14)
Рис. 14. Редактор формул.
Система уравнений может включать в себя обыкновенные дифференциальные уравнения первого порядка и алгебраические уравнения. Аналитически разрешенные уравнения (формулы) при отсутствии в них циклов сводятся просто к последовательности операторов присваивания. Вы можете также непосредственно использовать в уравнениях первую и вторую производные, не вводя дополнительных переменных. Если вы не указали, какие переменные являются искомыми (оператор find), то транслятор попытается определить их сам, исходя из контекста задачи: искомыми не могут быть параметры, константы и входы. Транслятор также стремится сделать искомыми (если это возможно) интегрируемые переменные и переменные, стоящие в левых частях формул. Если же транслятору не удается выбрать искомые переменные, то он вызывает специальный диалог и предлагает сделать это вручную. Помимо собственно уравнений и формул в систему уравнений могут быть также включены необходимые комментарии. Комментарий начинается символом «--» (двойной минус) и продолжается до конца строки.
Уравнение может быть записано различными способами. Транслятор сам преобразует это уравнение к «канонической» форме, необходимой для численного решения.
Шаг 4. Сохранение модели.
Шаг 5. Компилирование модели.
Перед проведением
компьютерного эксперимента необходимо
откомпилировать модель с помощью команды
основного меню «Модель/Пуск» или кнопки
на панели кнопок.
Пакет MVS относится к категории компилирующих: для элементов описания моделируемой системы генерируется “код” на промежуточном языке программирования, который затем компилируется в машинный код и связывается с Run Time Library (RTL) MVS с помощью штатного компилятора командной строки этого языка. В данной версии пакета в качестве промежуточного языка используется Borland Object Pascal (Delphi).
Третий этап. КОМПЬЮТЕРНЫЙ ЭКСПЕРИМЕНТ
Шаг 1. Составление плана эксперимента.
Рекомендуется наметить следующие эксперименты с моделью:
тестирование – проверка правильности работы модели;
эксперимент 1 – исследование поведения модели при исходных данных, то есть когда количество жертв больше числа хищников;
эксперимент 2 – исследование поведения модели, в том случае, когда количество жертв меньше числа хищников;
эксперимент 3 – исследование поведения модели, в том случае, когда количество жертв равно числу хищников.
Шаг 2. Проведение эксперимента.
Эксперимент 1.
Рассмотрим технологию проведения эксперимента на примере исследования поведения модели при исходных данных, то есть когда количество жертв больше числа хищников. После компиляции модели, то есть после первого запуска модели открывается окно «Визуальная модель MVS» (рис. 15).
Рис. 15. Окно «Визуальная модель MVS»
Визуальная модель также как и интегрированная оболочка является многооконным приложением. В заголовке главного окна указывается имя выполняемой модели, которое вы можете изменить в окне виртуального стенда интегрированной оболочки (по умолчанию это имя проекта). В левой части инструментальной панели отображается текущее значение модельного времени. В нижней части главного окна выводится информация о текущем типе совокупной системы уравнений и общем числе уравнений (в случае системы с переключениями они могут изменяться в ходе прогона модели).
В MVS
предусмотрена стандартная «математическая
графика», а именно окно «Временная
диаграмма», которое по необходимости
можно перенастроить в окно «Фазовая
диаграмма», двумерная и трехмерная
графика. С помощью команды «Окна/Новая
диаграмма» или кнопки
можно создать окно диаграммы (по умолчанию
это будет временная диаграмма, то есть
по оси абсцисс будут откладываться
значения модельного времени).
Перенесите методом «Drag and drop» в окно диаграммы из окна переменных те переменные, по которым производится дифференцирование, запустите модель при помощи кнопки (на инструментальной панели главного окна модели) или с помощью команды «Моделирование/Пуск» главного меню. Получите следующий график (рис. 16).
Рис. 16. Временная диаграмма
Для того чтобы
получить фазовую диаграмму создайте
новую диаграмму, перетащим в нее те же
самые переменные, а затем правой клавишей
мыши откройте на ней всплывающее меню
и выполните команду «Настройка». В
появившемся диалоге настроек укажите
с помощью двойного щелчка мышью в поле
,
что по оси абсцисс откладываются значения
переменной
(рис. 17).
Рис. 17. Создание фазовой диаграммы
Запустите модель
при помощи кнопки
.
Остановите выполнение с помощью
кнопки
или команды «Моделирование/Стоп»
Закончите данный
прогон с помощью кнопки
или команды «Моделирование/Рестарт».
В результате этих действий данный
экземпляр испытуемой системы будет
уничтожен и создан новый, снова с
начальными значениями переменных.
Модельное время снова будет равно 0.
Переместите окна временной и фазовой диаграмм рядом друг с другом. Запустите модель и получите следующий график (рис. 18).
Рис. 18. Временная и фазовая диаграммы эксперимента 1.
Эксперименты 2 и 3
Для проведения остальных экспериментов целесообразно воспользоваться возможностями 2D-анимации, представленными в MVS набором следующих компонентов: линейные индикаторы, стрелочный индикатор, линейный движок, поворотный регулятор, цветовой индикатор, кнопки. Интерактивными 2D-компонентами являются ползунок, поворотный регулятор и кнопка. При помощи ползунка можно интерактивно менять число хищников и жертв в популяции, а цветовой индикатор показывает изменение численности популяции в тот или иной промежуток времени (рис. 19).
С помощью команды
«Окна/Новая 2D-анимация»
создайте анимационное окно. Откройте
с помощью кнопки
или команды «Сервис/Стандартные
2D-компоненты» панель
2D-компонент (рис. 19).
Рис. 19. Стандартные 2D-компоненты.
Выберите на этой панели компоненту «Ползунок» и методом «Drag and drop» перетащите ее в левую часть окна анимации. Щелкните на появившемся изображении ползунка правой клавишей мыши и с помощью команд всплывающего меню установите вертикальное расположение ползунка, режим показа числового значения и интервал значений 0 .. 6.
С помощью мыши можно перемещать 2D-компоненту в пределах окна анимации, а также изменять размер компоненты. Щелкните правой клавишей мыши сверху от компоненты и, выполнив команду «Добавить надпись» всплывающего меню, создайте пояснительную надпись для ползунка. Надпись также можно перемещать с помощью мыши, не отпуская левую клавишу.
Теперь необходимо связать ползунок с переменной модели. Делается это методом «Drag and drop». Переместите переменную x1 из окна переменных и бросьте ее на изображении ползунка. Теперь ползунок будет отображать текущее значение переменной x1, а при перемещении ползунка с помощью мыши присваивать соответствующее значение этой переменной. Аналогичным образом создайте ползунок для переменной x2.
Остальные компоненты позволяют только отображать текущее значение переменной. Используйте две компоненты «Линейный индикатор сплошной» для индикации значений переменных x1 и x2 (рис. 20).
Результаты экспериментов 2 и 3 представлены на рисунках 21 и 22.
Р
ис.
21. Результаты эксперимента 2.
Рис. 22. Результаты эксперимента 3.
Четвертый этап. АНАЛИЗ РЕЗУЛЬТАТОВ МОДЕЛИРОВАНИЯ
После проведения каждого эксперимента необходимо проанализировать получившиеся результаты. В итоге целесообразно проследить влияние изменяемых параметров на поведение модели в целом.
Анализ результатов эксперимента 1 (рис. 18):
Видно, что процесс
имеет колебательный характер. При
заданном начальном соотношении числа
особей обоих видов 3:1 обе популяции
сначала растут. Когда число хищников
достигает величины
,
популяция жертв не успевает восстанавливаться
и число жертв начинает убывать. Уменьшение
количества пищи через некоторое время
начинает сказываться на популяции
хищников, и, когда число жертв достигает
величины
,
число хищников тоже начинает сокращаться
вместе с сокращением числа жертв.
Сокращение популяций происходит до тех
пор, пока число хищников не достигнет
величины
.
С этого момента начинает расти популяция
жертв; через некоторое время пищи
становится достаточно, чтобы обеспечить
прирост хищников, обе популяции растут,
и процесс повторяется снова и снова.
Периодичность процесса явственно видна
на фазовой плоскости: фазовая кривая
является замкнутой линией. На языке
дифференциальных уравнений это означает,
что система имеет стационарное состояние,
которое достигается в точке
,
.
Если в начальный момент система находилась
в стационарной точке, то решения
не будут изменяться во времени, останутся
постоянными. Всякое же другое начальное
состояние приводит к периодическому
колебанию решений. Неэллиптичность
формы траектории, охватывающей центр,
отражает негармонический характер
колебаний.
Аналогичным образом производится анализ результатов экспериментов 2 и 3, исходя из временной и фазовых диаграмм (рис. 21 и 22).
В данном параграфе мы продемонстрировали все этапы создания и исследования математической модели экологической системы «хищник-жертва» с помощью интегрированной оболочки MVS.
