Реферат: работа по дисциплине «Имитационное моделирование экономических процессов»

Название: работа по дисциплине «Имитационное моделирование экономических процессов»
Раздел: Остальные рефераты
Тип: реферат

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

Уфимский государственный авиационный технический университет

Кафедра автоматизированных систем управления

Курсовая работа по дисциплине

«Имитационное моделирование экономических процессов»

Вариант 5

Выполнил:

Студ. ФИРТ

Гр. ПИЭ-413

Дунаев Д.Н.

Проверил:

Алыпов Ю.Е.

Уфа 2008г.

Содержание

1. Введение. 3

2. Постановка задачи. 6

3. Блок схема алгоритма имитационной модели. 7

4. Общий вид и описание программы.. 8

5. Листинг программного кода. 10

5.1 SMO.mat 10

5.2 Dimon.mat 13

5.3 dimonstat.mat 14

6. Заключение. 16

7. Список используемой литературы.. 17

1. Введение

Имитационное моделирование — это метод, позволяющий строить модели, описывающие процессы так, как они проходили бы в действительности. Такую модель можно «проиграть» во времени как для одного испытания, так и заданного их множества. При этом результаты будут определяться случайным характером процессов. По этим данным можно получить достаточно устойчивую статистику.

Имитационное моделирование — это метод исследования, при котором изучаемая система заменяется моделью с достаточной точностью описывающей реальную систему и с ней проводятся эксперименты с целью получения информации об этой системе. Экспериментирование с моделью называют имитацией (имитация — это постижение сути явления, не прибегая к экспериментам на реальном объекте).

Имитационное моделирование — это частный случай математического моделирования. Существует класс объектов, для которых по различным причинам не разработаны аналитические модели, либо не разработаны методы решения полученной модели. В этом случае математическая модель заменяется имитатором или имитационной моделью.

Имитационная модель — логико-математическое описание объекта, которое может быть использовано для экспериментирования на компьютере в целях проектирования, анализа и оценки функционирования объекта.

К имитационному моделированию прибегают, когда:

- дорого или невозможно экспериментировать на реальном объекте;

- невозможно построить аналитическую модель: в системе есть время, причинные связи, последствие, нелинейности, стохастические (случайные) переменные;

- необходимо сымитировать поведение системы во времени.

Цель имитационного моделирования состоит в воспроизведении поведения исследуемой системы на основе результатов анализа наиболее существенных взаимосвязей между ее элементами или другими словами – разработке симулятора (английский термин – simulation modeling) исследуемой предметной области для проведения различных экспериментов. Имитационную модель можно рассматривать как множество правил (дифференциальных уравнений, карт состояний, автоматов, сетей и т.п.), которые определяют, в какое состояние система перейдёт в будущем из заданного текущего состояния. Имитация – это процесс «выполнения» модели, проводящий её через (дискретные или непрерывные) изменения состояния во времени.

Имитационное моделирование позволяет имитировать поведение системы, во времени. При чём плюсом является то, что временем в модели можно управлять: замедлять в случае с быстропротекающими процессами и ускорять для моделирования систем с медленной изменчивостью. Можно имитировать поведение тех объектов реальные эксперименты с которыми, дороги, невозможны или опасны.

Имитация, как метод решения нетривиальных задач, получила начальное развитие в связи с созданием ЭВМ в 1950х — 1960х годах.

Можно выделить две разновидности имитации:

- Метод Монте-Карло (метод статистических испытаний);

- Метод имитационного моделирования (статистическое моделирование).

Виды имитационного моделирования:

- Агентное моделирование – относительно новое (1990е-2000е гг.) направление в имитационном моделировании, которое используется для исследования децентрализованных систем, динамика функционирования которых определяется не глобальными правилами и законами (как в других парадигмах моделирования), а наоборот. Когда эти глобальные правила и законы являются результатом индивидуальной активности членов группы. Цель агентных моделей – получить представление об этих глобальных правилах, общем поведении системы, исходя из предположений об индивидуальном, частном поведении ее отдельных активных объектов и взаимодействии этих объектов в системе. Агент – некая сущность, обладающая активностью, автономным поведением, может принимать решения в соответствии с некоторым набором правил, взаимодействовать с окружением, а также самостоятельно изменяться.

- Дискретно-событийное моделирование – подход к моделированию предлагающий абстрагироваться от непрерывной природы событий и рассматривать только основные события моделируемой системы такие как: «ожидание», «обработка заказа», «движение с грузом», «разгрузка» и другие. Дискретно-событийное моделирование наиболее развито и имеет огромную сферу приложений – от логистики и систем массового обслуживания до транспортных и производственных систем. Этот вид моделирования наиболее подходит для моделирования производственных процессов. Основан Джеффри Гордоном в 1960х годах.

- Системная динамика – парадигма моделирования, где для исследуемой системы строятся графические диаграммы причинных связей и глобальных влияний одних параметров на другие во времени, а затем созданная на основе этих диаграмм модель имитируется на компьютере. По сути, такой вид моделирования более всех других парадигм помогает понять суть происходящего выявления причинно-следственных связей между объектами и явлениями. С помощью системной динамики строят модели бизнес-процессов, развития города, модели производства, динамики популяции, экологии и развития эпидемии. Метод основан Форрестером в 1950 годах.

Области применения:

- Бизнес процессы

- Боевые действия

- Динамика населения

- ИТ-инфраструктура

- Математическое моделирование исторических процессов

- Логистика

- Пешеходная динамика

- Производство

- Рынок и конкуренция

- Сервисные центры

- Цепочки поставок

- Уличное движение

- Управление проектами

- Экономика здравоохранения

- Экосистемы

2. Постановка задачи

Производственный объект находится под воздействием пуассоновского потока отказов с интенсивностью λ. Отказавший объект немедленно начинает ремонтироваться (полностью восстанавливаться). Распределение времени восстановления экспоненциальное с интенсивностью µ .

Требуется определить;

– коэффициент использования (готовности) объекта;

– среднее время восстановления объекта

Разумные значения λ и µ и единицы измерения времени выбрать самостоятельно.

3. Блок схема алгоритма имитационной модели

4. Общий вид и описание программы

Общий вид программы представлен ниже. (рис. 1)

Рисунок 1 Общий вид программы

Данная программа написана на М-языке системы MATLAB.

Для запуска программы необходимо в командном окне системы MATLAB ввести имя М-файла : smo. В результате должно появиться окно, представленное на рисунке 1. Для запуска имитационной модели необходимо заполнить 3 левых поля и нажать на кнопку начать, как это показано на рисунке 2.

Рисунок 2 Запуск имитационной модели

В результате вы должны получить график-ход работы модели (рис.3). Данная графическая иллюстрация включает в себя следующие обозначения:

- 0.5 - система находиться в режиме ожидания;

- 1 – система находиться в режиме обслуживания;

- * - заявка, получившая отказ;

Рисунок 3 Графическая иллюстрация работы модели

Для того что бы получить статистический анализ данных, необходимо ввести количество прогонов системы и нажать на кнопку “Старт”. В результате мы получим график со значениями количества обслуженных заявок при каждом запуске системы, а также необходимые результаты (рис. 4).

Рисунок 4 Статистический анализ работы модели

Если количество прогонов системы в ходе статистического анализа велико, необходимо дождаться окончания процесса - появиться окно ожидания (рис. 5).

Рисунок 5 Окно ожидания окончания работы системы

5. Листинг программного кода

Программа состоит из 3х M-файлов:

- Smo.m –отвечает за внешний вид программы;

- Dimon.m – построение имитационной модели и отображения графика ее работы;

- Dimonstat.m – сбор статистической информации и построение графика.

Ниже приведены листинги данных M- файлов.

5.1 SMO.mat

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');

5.2 Dimon.mat

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;

5.3 dimonstat.mat

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

6. Заключение

Если не можете добиться результата,

имитируйте кипучую деятельность

и бешеную активность.

(Из законов Мэрфи: следствие Эндрю)

Имитационные моделирование на сегодняшний день является мощным средством для анализа в случае, когда невозможно, либо слишком дорого проведение опытов на реальном объекте. Также имитационное моделирование показывает свое преимущество над аналитическим решением задачи, в случае, когда присутствует фактор времени, сложные причинные связи, случайные переменные.

Имитационное моделирование позволяет имитировать поведение системы, во времени. При чём плюсом является то, что временем в модели можно управлять: замедлять в случае с быстропротекающими процессами и ускорять для моделирования систем с медленной изменчивостью.

Таким образом имитация является востребованным методом моделирования в различных областях деятельности.

7. Список используемой литературы

1. Кельтон В.Д., Лоу А.М. “Имитационное моделирование. Классика CS.” 3-е изд. - СПб.: Питер

2. Мартынов. Н.Н. “Введение в MATLAB 6.x” –Кудиц-Образ: Москва 2002

3. http://matlab.exponenta.ru/