Главная Учебники - Разные Лекции (разные) - часть 11
Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Уфимский государственный авиационный технический университет Кафедра автоматизированных систем управления по дисциплине
«Имитационное моделирование экономических процессов»
Вариант 5
Выполнил: Студ. ФИРТ Гр. ПИЭ-413 Дунаев Д.Н. Проверил: Алыпов Ю.Е. Уфа 2008г. Содержание
3. Блок схема алгоритма имитационной модели. 7
4. Общий вид и описание программы.. 8
5. Листинг программного кода. 10
7. Список используемой литературы.. 17
Имитационное моделирование — это метод, позволяющий строить модели, описывающие процессы так, как они проходили бы в действительности. Такую модель можно «проиграть» во времени как для одного испытания, так и заданного их множества. При этом результаты будут определяться случайным характером процессов. По этим данным можно получить достаточно устойчивую статистику. Имитационное моделирование — это метод исследования, при котором изучаемая система заменяется моделью с достаточной точностью описывающей реальную систему и с ней проводятся эксперименты с целью получения информации об этой системе. Экспериментирование с моделью называют имитацией (имитация — это постижение сути явления, не прибегая к экспериментам на реальном объекте). Имитационное моделирование — это частный случай математического моделирования. Существует класс объектов, для которых по различным причинам не разработаны аналитические модели, либо не разработаны методы решения полученной модели. В этом случае математическая модель заменяется имитатором или имитационной моделью. Имитационная модель — логико-математическое описание объекта, которое может быть использовано для экспериментирования на компьютере в целях проектирования, анализа и оценки функционирования объекта. К имитационному моделированию прибегают, когда:
- дорого или невозможно экспериментировать на реальном объекте; - невозможно построить аналитическую модель: в системе есть время, причинные связи, последствие, нелинейности, стохастические (случайные) переменные; - необходимо сымитировать поведение системы во времени. Цель имитационного моделирования состоит в воспроизведении поведения исследуемой системы на основе результатов анализа наиболее существенных взаимосвязей между ее элементами или другими словами – разработке симулятора (английский термин – simulation modeling) исследуемой предметной области для проведения различных экспериментов. Имитационную модель можно рассматривать как множество правил (дифференциальных уравнений, карт состояний, автоматов, сетей и т.п.), которые определяют, в какое состояние система перейдёт в будущем из заданного текущего состояния. Имитация – это процесс «выполнения» модели, проводящий её через (дискретные или непрерывные) изменения состояния во времени. Имитационное моделирование позволяет имитировать поведение системы, во времени. При чём плюсом является то, что временем в модели можно управлять: замедлять в случае с быстропротекающими процессами и ускорять для моделирования систем с медленной изменчивостью. Можно имитировать поведение тех объектов реальные эксперименты с которыми, дороги, невозможны или опасны. Имитация, как метод решения нетривиальных задач, получила начальное развитие в связи с созданием ЭВМ в 1950х — 1960х годах. Можно выделить две разновидности имитации:
- Метод Монте-Карло (метод статистических испытаний); - Метод имитационного моделирования (статистическое моделирование). Виды имитационного моделирования:
- Агентное моделирование – относительно новое (1990е-2000е гг.) направление в имитационном моделировании, которое используется для исследования децентрализованных систем, динамика функционирования которых определяется не глобальными правилами и законами (как в других парадигмах моделирования), а наоборот. Когда эти глобальные правила и законы являются результатом индивидуальной активности членов группы. Цель агентных моделей – получить представление об этих глобальных правилах, общем поведении системы, исходя из предположений об индивидуальном, частном поведении ее отдельных активных объектов и взаимодействии этих объектов в системе. Агент – некая сущность, обладающая активностью, автономным поведением, может принимать решения в соответствии с некоторым набором правил, взаимодействовать с окружением, а также самостоятельно изменяться. - Дискретно-событийное моделирование – подход к моделированию предлагающий абстрагироваться от непрерывной природы событий и рассматривать только основные события моделируемой системы такие как: «ожидание», «обработка заказа», «движение с грузом», «разгрузка» и другие. Дискретно-событийное моделирование наиболее развито и имеет огромную сферу приложений – от логистики и систем массового обслуживания до транспортных и производственных систем. Этот вид моделирования наиболее подходит для моделирования производственных процессов. Основан Джеффри Гордоном в 1960х годах. - Системная динамика – парадигма моделирования, где для исследуемой системы строятся графические диаграммы причинных связей и глобальных влияний одних параметров на другие во времени, а затем созданная на основе этих диаграмм модель имитируется на компьютере. По сути, такой вид моделирования более всех других парадигм помогает понять суть происходящего выявления причинно-следственных связей между объектами и явлениями. С помощью системной динамики строят модели бизнес-процессов, развития города, модели производства, динамики популяции, экологии и развития эпидемии. Метод основан Форрестером в 1950 годах. Области применения:
- Бизнес процессы - Боевые действия - Динамика населения - ИТ-инфраструктура - Математическое моделирование исторических процессов - Логистика - Пешеходная динамика - Производство - Рынок и конкуренция - Сервисные центры - Цепочки поставок - Уличное движение - Управление проектами - Экономика здравоохранения - Экосистемы Производственный объект находится под воздействием пуассоновского потока отказов с интенсивностью λ. Отказавший объект немедленно начинает ремонтироваться (полностью восстанавливаться). Распределение времени восстановления экспоненциальное с интенсивностью µ . Требуется определить; – коэффициент использования (готовности) объекта; – среднее время восстановления объекта Разумные значения λ и µ и единицы измерения времени выбрать самостоятельно. 3. Блок схема алгоритма имитационной модели
4. Общий вид и описание программы
Общий вид программы представлен ниже. (рис. 1) Рисунок 1 Общий вид программы Данная программа написана на М-языке системы MATLAB. Для запуска программы необходимо в командном окне системы MATLAB ввести имя М-файла : smo. В результате должно появиться окно, представленное на рисунке 1. Для запуска имитационной модели необходимо заполнить 3 левых поля и нажать на кнопку начать, как это показано на рисунке 2. Рисунок 2 Запуск имитационной модели В результате вы должны получить график-ход работы модели (рис.3). Данная графическая иллюстрация включает в себя следующие обозначения: - 0.5 - система находиться в режиме ожидания; - 1 – система находиться в режиме обслуживания; - * - заявка, получившая отказ; Рисунок 3 Графическая иллюстрация работы модели Для того что бы получить статистический анализ данных, необходимо ввести количество прогонов системы и нажать на кнопку “Старт”. В результате мы получим график со значениями количества обслуженных заявок при каждом запуске системы, а также необходимые результаты (рис. 4). Рисунок 4 Статистический анализ работы модели Если количество прогонов системы в ходе статистического анализа велико, необходимо дождаться окончания процесса - появиться окно ожидания (рис. 5). Рисунок 5 Окно ожидания окончания работы системы Программа состоит из 3х M-файлов: - Smo.m –отвечает за внешний вид программы; - Dimon.m – построение имитационной модели и отображения графика ее работы; - Dimonstat.m – сбор статистической информации и построение графика. Ниже приведены листинги данных M- файлов. function smo %---------- Описание глобальных переменных------------- global hFig hAxes global hEditn hEditl hEditm hEditstat global hButStart hButStat global hTxt1 hTxt2 hTxt3 hTxt4 hTxt5 hTxt6 %-------- hFig=figure('Position',[200 250 1000 400],'Resize','off',... 'name','Одноканальная система массового обслуживания',... 'Interruptible','off'); hAxes=axes('Parent',hFig,'Color',[1 1 1],... 'Units','pixels','Position',[30 40 960 230],... 'FontSize',10); xlabel('Time'); %---------- Описание компонентов для ввода данных hEditn=uicontrol (hFig,'Style','edit',... 'BackgroundColor',[1 1 1],... 'Position',[190 380 50 20]); hEditl=uicontrol (hFig,'Style','edit',... 'BackgroundColor',[1 1 1],... 'Position',[190 350 50 20]); hEditm=uicontrol (hFig,'Style','edit',... 'BackgroundColor',[1 1 1],... 'Position',[190 320 50 20]); hEditstat=uicontrol (hFig,'Style','edit',... 'BackgroundColor',[1 1 1],... 'Position',[400 320 50 20]); %---------- Описание компонентов для отображения текстовой информации hTxt1=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0.8 0.8 0.8],... 'Position',[10 380 180 15],... 'HorizontalAlignment','left',... 'String','Количество заявок'); hTxt2=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0.8 0.8 0.8],... 'Position',[10 350 180 15],... 'HorizontalAlignment','left',... 'String','Интенсивность потока отказов: '); hTxt3=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0.8 0.8 0.8],... 'Position',[10 320 180 15],... 'HorizontalAlignment','left',... 'String','Интенсивность восстановления:'); hTxt4=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0 0 0],... 'Position',[250 275 1 125]); hTxt5=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0.8 0.8 0.8],... 'Position',[260 340 200 50],... 'HorizontalAlignment','Center',... 'String','Проведение последовательности экспериментов с целью выявления средних значенй:'); hTxt6=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0.8 0.8 0.8],... 'Position',[490 370 140 20],... 'HorizontalAlignment','left',... 'String','-заявки получившие отказ'); hTxt7=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0 0 0],... 'Position',[460 275 1 125]); hTxt8=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0.8 0.8 0.8],... 'Position',[470 380 15 15],... 'HorizontalAlignment','left',... 'FontSize',20,'ForegroundColor',[1 0 0],... 'String','*'); hTxt9=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0.8 0.8 0.8],... 'Position',[470 360 100 15],... 'HorizontalAlignment','left',... 'String','1-Система занята'); hTxt10=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0.8 0.8 0.8],... 'Position',[470 325 150 35],... 'HorizontalAlignment','left',... 'String','0.5-Система находиться в режиме ожидания'); hTxt11=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0.8 0.8 0.8],... 'Position',[260 320 135 15],... 'HorizontalAlignment','left',... 'String','Число прогонов системы:'); hTxt7=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0 0 0],... 'Position',[650 275 1 125]); %---------- Описание компонентов-кнопок hButStart=uicontrol (hFig,'Style','pushbutton',... 'Position',[190 290 50 20],... 'String','Начать',... 'Callback','dimon'); hButStart=uicontrol (hFig,'Style','pushbutton',... 'Position',[400 290 50 20],... 'String','Старт',... 'Callback','dimonstat'); function dimon; global hAxes hEditn hEditl hEditm n global hTxt1 hTxt2 hTxt3 hTxt4 %-----------Получаем информацию с полей ввода данных----------- strn=get(hEditn,'String'); strl=get(hEditl,'String'); strm=get(hEditm,'String'); %-----------Конвертируем строковые переменные в числовые------- n=str2num(strn); l=str2num(strl); m=str2num(strm); %----------- Имитационная модель одноканальной СМО------------- T(1)=0; otkaz=0; prinat=0; axes(hAxes); cla; xlabel('Time'); plot([0,0],[0.4,0.4]); f=true; for i=1:1:n hold on; z(i)=-1/l*log(rand); s(i)=-1/m*log(rand); if f konec=T(i)+s(i); line([T(i),T(i)],[0.5,1]); line([T(i),konec],[1,1]); line([konec,konec],[1,0.5]); end T(i+1)=T(i)+z(i); if (T(i+1)<konec) otkaz=otkaz+1; plot(T(i+1),1.05,'r*'); f=false; else prinat=prinat+1; line([konec,T(i+1)],[0.5,0.5]); f=true; end; end; function dimonstat; global hFig hAxes hEditn hEditl hEditm hEditstat global hTxt1 hTxt2 hTxt3 hTxt4 htxt12 %-----------Получаем информацию с полей ввода данных----------- strn=get(hEditn,'String'); strl=get(hEditl,'String'); strm=get(hEditm,'String'); strstat=get(hEditstat,'String'); %-----------Конвертируем строковые переменные в числовые------- n=str2num(strn); l=str2num(strl); m=str2num(strm); stat=str2num(strstat); %----------- Имитационная модель одноканальной СМО------------- h=waitbar(0,'Please, wait until data proccesing...'); for k=1:1:stat waitbar(k/stat,h); T(1)=0; otkaz=0; prinat=0; f=true; for i=1:1:n hold on; z(i)=-1/l*log(rand); s(i)=-1/m*log(rand); if f konec=T(i)+s(i); end T(i+1)=T(i)+z(i); if (T(i+1)<konec) otkaz=otkaz+1; f=false; else prinat=prinat+1; f=true; end; end; udacha(k)=prinat; neudacha(k)=otkaz; end; close(h); axes(hAxes); cla; hTxt12=uicontrol (hFig,'Style','Text',... 'BackgroundColor',[0.8 0.8 0.8],... 'Position',[660 270 300 120],... 'HorizontalAlignment','left',... 'String',['В ходе проведения имитационного моделирования выявлено, что среднее число обсуженыых заявок =' num2str(sum(udacha)/k)... ', среднее число заявок, получивших отказ, =' num2str(sum(neudacha)/k)... '. Коэффициент готовности ситемы равняется ' num2str(sum(udacha)/(sum(udacha)+sum(neudacha)))... '. Среднее время осбуживание: ' num2str(sum(s)/n)]); try plot(udacha); catch errordlg('Пожалуйста, укажите число прогонов системы','ErrorMessage'); end end Если не можете добиться результата, имитируйте кипучую деятельность и бешеную активность. (Из законов Мэрфи: следствие Эндрю) Имитационные моделирование на сегодняшний день является мощным средством для анализа в случае, когда невозможно, либо слишком дорого проведение опытов на реальном объекте. Также имитационное моделирование показывает свое преимущество над аналитическим решением задачи, в случае, когда присутствует фактор времени, сложные причинные связи, случайные переменные. Имитационное моделирование позволяет имитировать поведение системы, во времени. При чём плюсом является то, что временем в модели можно управлять: замедлять в случае с быстропротекающими процессами и ускорять для моделирования систем с медленной изменчивостью. Таким образом имитация является востребованным методом моделирования в различных областях деятельности. 7. Список используемой литературы
1. Кельтон В.Д., Лоу А.М. “Имитационное моделирование. Классика CS.” 3-е изд. - СПб.: Питер 2. Мартынов. Н.Н. “Введение в MATLAB 6.x” –Кудиц-Образ: Москва 2002
|