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

Автор работы: Пользователь скрыл имя, 16 Мая 2012 в 04:59, курсовая работа

Описание работы

Наилучшие работы в области исследования операций основаны на совместном применении аналитических и статистических моделей.
Аналитическая модель дает возможность в общих чертах разобраться в явлении, наметить как бы контур основных закономерностей. Любые уточнения могут быть получены с помощью статистических моделей.
Имитационное моделирование применяется к процессам, в ход которых может время от времени вмешиваться человеческая воля. Человек, руководящий операцией, может в зависимости от сложившейся обстановки, принимать те или другие решения, подобно тому, как шахматист, глядя на доску, выбирает свой очередной ход. Затем приводится в действие математическая модель, которая показывает, какое ожидается изменение обстановки в ответ на это решение и к каким последствиям оно приведет спустя некоторое время.

Содержание работы

ВВЕДЕНИЕ 3
1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ МОДЕЛИРОВАНИЯ 4
1.1. Дисперсионное отклонение 11
1.2. Среднее квадратическое 12
1.3. Среднее значение 12
2.1. Постановка задачи 14
2.2. Сбор информации 15
2.3. Обработка информации 15
2.4. Алгоритм решения задачи 17
2.5. Максимальная производительность системы 17
2.6. Минимальные затраты на ожидание системы 18
2.7. Расчет затрат на ожидание 19
2.7.1. Постановка задачи 19
2.7.2. Алгоритм решения задачи 20
2.7.3. Результаты 21
3. МОДЕЛИРОВАНИЕ СЛУЧАЙНОЙ ВЕЛИЧИНЫ 22
3.1. Постановка задачи 22
3.2. Алгоритм построения задачи 23
3.2.1. Алгоритм решения задачи 24
3.2.2. Результат проведения исследования 25
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 26
ПРИЛОЖЕНИЕ 1 27
ПРИЛОЖЕНИЕ 2 29

Файлы: 1 файл

Имитационное моделирование Долгоруков Ау-07(последняя версия2).doc

— 382.00 Кб (Скачать файл)

Министерство образования и науки Российской Федерации

Филиал государственного образовательного учреждения среднего профессионального образования
«БайкальскИЙ государственнЫЙ университет
экономики и права» в г. Усть-Илимске

(Филиал ГОУ СПО «БГУЭП» в г. Усть-Илимске)

Кафедра Технология, механизации и предпринимательства

 

 

КУРСОВАЯ РАБОТА

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

Решение задач

Исполнил:

Студент группы АУ-07              А.Ю. Долгоруков

Проверил:

К.Э.Н., доцент кафедры экономики              Г.П. Куклин

 

 

 

Усть-Илимск 2010

 

СОДЕРЖАНИЕ

ВВЕДЕНИЕ              3

1.              ТЕОРЕТИЧЕСКИЕ ОСНОВЫ МОДЕЛИРОВАНИЯ              4

1.1.              Дисперсионное отклонение              11

1.2.              Среднее квадратическое              12

1.3.              Среднее значение              12

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

2.2.              Сбор информации              15

2.3.              Обработка информации              15

2.4.              Алгоритм решения задачи              17

2.5.              Максимальная производительность системы              17

2.6.              Минимальные затраты на ожидание системы              18

2.7.              Расчет затрат на ожидание              19

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

2.7.2.              Алгоритм решения задачи              20

2.7.3.              Результаты              21

3.              МОДЕЛИРОВАНИЕ СЛУЧАЙНОЙ ВЕЛИЧИНЫ              22

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

3.2.              Алгоритм построения задачи              23

3.2.1.              Алгоритм решения задачи              24

3.2.2.              Результат проведения исследования              25

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ              26

Приложение 1              27

Приложение 2              29

 

 

 

 

 

 

 

ВВЕДЕНИЕ

В исследовании операций широко применяются как аналитические, так и статистические модели. Каждый из этих типов имеет свои преимущества и недостатки. Аналитические модели более грубы, учитывают меньшее число факторов, всегда требуют каких-то допущений и упрощений. Зато результаты расчета по ним легче обозримы, отчетливее отражают присущие явлению основные закономерности. А, главное, аналитические модели больше приспособлены для поиска оптимальных решений. Статистические модели, по сравнению, с аналитическими, более точны и подробны, не требуют столь грубых допущений, позволяют учесть большое (в теории – неограниченно большое) число факторов. Но и у них – свои недостатки: громоздкость, плохая обозримость, большой расход машинного времени, а главное, крайняя трудность поиска оптимальных решений, которые приходятся искать «на ощупь», путем догадок и проб.

Наилучшие работы в области исследования операций основаны на совместном применении аналитических и статистических моделей.

Аналитическая модель дает возможность в общих чертах разобраться в явлении, наметить как бы контур основных закономерностей. Любые уточнения могут быть получены с помощью статистических моделей.

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

 

 

 

1.                  ТЕОРЕТИЧЕСКИЕ ОСНОВЫ МОДЕЛИРОВАНИЯ

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

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

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

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

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

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

Цель имитационного моделирования состоит в воспроизведении поведения исследуемой системы на основе результатов анализа наиболее существенных взаимосвязей между ее элементами или другими словами — разработке симулятора (англ. simulation modeling) исследуемой предметной области для проведения различных экспериментов.

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

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

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

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

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

Итак, в процессе моделирования всегда существует оригинал (объект)

и  модель, которая воспроизводит (моделирует, описывает, имитирует)

некоторые черты объекта. Моделирование основано на наличии у многообразия естественных и искусственных систем, отличающихся как целевым назначением, так и физическим воплощением, сходства или подобия некоторых свойств: геометрических, структурных, функциональных, поведенческих. Это сходство может быть полным (изоморфизм) и частичным (гомоморфизм). Моделирование появилось в человеческой деятельности со времен наскальной живописи и сооружения идолов, т.е. как только человечество стало стремиться к пониманию окружающей действительности; – и сейчас, по'существу, прогресс науки и техники находит свое наиболее точное выражение в развитии способности человека создавать модели объектов и понятий.

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

Приведем общую классификацию основных видов моделирования:

- концептуальное моделирование – представление системы с помощью специальных знаков, символов, операций над ними или с помощью естественных или искусственных языков,

- физическое моделирование – моделируемый объект или процесс воспроизводится исходя из соотношения подобия, вытекающего из схожести физических явлений;

- структурно–функциональное – моделями являются схемы (блок- схемы), графики, диаграммы, таблицы, рисунки со специальными правилами их объединения и преобразования;

- математическое (логико-математическое) моделирование –построение модели осуществляется средствами математики и логики;

- имитационное (программное) моделирование– при котором логико' математическая модель исследуемой системы представляет собой алгоритм функционирования системы, программно-реализуемый на компьютере.

Указанные виды моделирования могут применяться самостоятельно или одновременно, в некоторой комбинации (например, в имитационном моделировании используются практически все из перечисленных видов моделирования или отдельные приемы).  Доминирующей тенденцией сегодня является взаимопроникновение всех видов моделирования, симбиоз различных информационных технологий в области моделирования, особенно для сложных приложений и комплексных проектов по моделированию. Так, например, имитационное моделирование включает в себя концептуальное моделирование (на ранних этапах формирования имитационной модели) и логико-математическое (включая методы искусственного интеллекта) – для целей описания отдельных подсистем модели, а также в процедурах обработки и анализа результатов вычислительного эксперимента и принятия решений. Технология проведения и планирования вычислительного эксперимента с соответствующими математическими методами привнесена в имитационное моделирование из физического (натурного) моделирования. Наконец, структурно функциональное моделирование используется как при создании стратифицированного описания много-модельных комплексов, так и для формирования различных диаграммных представлений при создании имитационных моделей. Понятие компьютерного моделирования сегодня трактуется шире традиционного понятия “моделирование на ЭВМ”, поэтому нуждается в уточнении. Компьютерное моделирование – метод решения задач анализа или синтеза сложной системы на основе использования ее компьютерной модели. К компьютерному моделированию относят:

- структурно функциональное,

- имитационное.

Под термином “компьютерная модель”, чаще всего понимают:

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

- Отдельную программу (совокупность программ, программный комплекс) позволяющий с помощью последовательности вычислений и графического отображения их результатов, воспроизводить (имитировать) процессы функционирования объекта, системы объектов при условии воздействия на объект различных, как правило, случайных факторов. Такие модели мы будем называть имитационными. Суть компьютерного моделирования заключена в получении количественных и качественных результатов на имеющейся модели. Качественные результаты анализа обнаруживают неизвестные ранее свойства сложной системы: ее структуру, динамику развития, устойчивость, целостность и др. Количественные выводы в основном носят характер анализа существующей СС или прогноза будущих значений некоторых переменных. Кстати, возможность получения не только качественных, но и количественных результатов составляет существенное отличие имитационного моделирования от структурно функционального. Становление компьютерного моделирования связано с имитационным моделированием.

Имитационное моделирование было исторически первым по – сравнению со структурно-функциональным, без компьютера никогда не существовало. Методологией компьютерного моделирования является системный анализ  (направление кибернетики, общая теория систем). Поэтому в освоении этого метода доминирующая роль отводится системным аналитикам. Сравним с моделированием на ЭВМ (например, математическим). Методологической основой здесь чаще всего являются: исследование операций, теория математических моделей, теория принятия решений, теория игр и многие другие. Центральной процедурой системного анализа является построение обобщенной модели, отражающей все факторы и взаимосвязи реальной системы. Предметом компьютерного моделирования может быть любая сложная система, любой объект или процесс. Категории целей при этом могут быть самыми различными. Компьютерная модель должна отражать все свойства, основные факторы и взаимосвязи реальной сложной системы, критерии, ограничения. Компьютерное моделирование сегодня предлагает совокупность методологических подходов и развитых технологических средств, используемых для подготовки и принятия решений экономического, организационного и социального или технического характера. Имитационное моделирование — метод, позволяющий строить модели, описывающие процессы так, как они проходили бы в действительности. Такую модель можно «проиграть» во времени как для одного испытания, так и заданного их множества. При этом результаты будут определяться случайным характером процессов. По этим данным можно получить достаточно устойчивую статистику. Имитационное моделирование — это метод исследования, при котором изучаемая система заменяется моделью с достаточной точностью описывающей реальную систему и с ней проводятся эксперименты с целью получения информации об этой системе. Экспериментирование с моделью называют имитацией (имитация — это постижение сути явления, не прибегая к экспериментам на реальном объекте). Имитационное моделирование — это частный случай математического моделирования. Существует класс объектов, для которых по различным причинам не разработаны аналитические модели, либо не разработаны методы решения полученной модели. В этом случае математическая модель заменяется имитатором или имитационной моделью.

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

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

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

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

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

Цель имитационного моделирования состоит в воспроизведении поведения исследуемой системы на основе результатов анализа наиболее существенных взаимосвязей между ее элементами или другими словами — разработке симулятора (англ. simulation modeling) исследуемой предметной области для проведения различных экспериментов.

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

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

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

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

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

 

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

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

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

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

1.1.           Дисперсионное отклонение

ДИСПЕРСИЯ (от лат. dispersio - рассеяние) в математической статистике и теории вероятностей мера рассеивания (отклонения от среднего). В статистике дисперсия есть среднее арифметическое из квадратов отклонений наблюденных значений (x1, x2,...,xn) случайной величины от их среднего арифметическогоВ теории вероятностей дисперсия случайной величины – математическое ожидание квадрата отклонения случайной величины от ее математического ожидания.

Математическое ожидание - среднее значение, понятие теории вероятностей, важнейшая характеристика отклонения значений случайной величины Х. В простейшем случае, когда Х может принимать лишь конечное число значений x1, x2, ..., xn с вероятностями p1, p2, ..., pn, математическим ожиданием величины Х называется выражение: ЕХ = x1p1 + x2p2 + ... + xnpn.

Статистический показатель разброса результатов взаимного фонда. Если фонд имеет высокое значение среднего квадратического отклонения, разброс его результатов очень велик, т.е. фонд потенциально очень волатилен. Низкое значение среднего квадратического отклонения показывает, что доходность фонда является почти постоянной величиной. Среднегодовое среднее квадратическое отклонение фонда, указываемое в обзорах Morningstar, рассчитывается на основе статистических данных о доходности фонда за 36 месяцев. По определению, в течение приблизительно 68% времени общая доходность любого фонда не должна отклоняться от средней доходности в сторону  увеличения или уменьшения на величину, превышающую среднее квадратическое отклонение.  Кроме того, в течение приблизительно 95% времени общая доходность фонда не должна отклоняться в любую сторону от его средней доходности на величину, превышающую двукратное значение среднего квадратического отклонения. Соответствие этим параметрам означает, что показатели доходности фонда попадают на типичную колоклообразную кривую нормального распределения вероятностей. В любом случае, чем больше среднее квадратическое отклонение, тем выше волатильность  фонда. Недостаток  этого статистического показателя состоит в том, что значение среднего квадратического отклонения иногда может быть равно нулю, отражая последовательно низкие результаты фонда [2].

1.2.                                             Среднее квадратическое

Среднее квадратическое (квадратичное) — число s, равное квадратному корню из среднего арифметического квадратов данных неотрицательных чисел a1,a2,...,an:

Среднее квадратическое — частный случай среднего степенного и потому подчиняется неравенству о средних. В частности, для любых чисел оно не меньше среднего арифметического:

Среднее квадратическое находит широкое применение во многих науках. В частности, через него определяется основное понятие теории вероятностей и математической статистики — дисперсии (среднеквадратическое отклонение). Также тесно связан с этим понятием метод наименьших квадратов, имеющий общенаучное значение [3].

1.3.           Среднее значение

Среднее значение — числовая характеристика множества чисел или функций; — некоторое число, заключённое между наименьшим и наибольшим из их значений.

В истории статистики впервые широкое употребление средних величин связано с именем английского ученого У. Петти. У. Петти один из первых пытался придать средней величине статистический смысл, связав ее с экономическими категориями. Но описания понятия средней величины, его выделения Петти не произвел. Родоначальником теории средних величин принято считать А. Кетле. Он одним из первых начал последовательно разрабатывать теорию средних величин, пытаясь подвести под нее математическую базу. А. Кетле выделял два вида средних величин – собственно средние и средние арифметические. Собственно средние представляют вещь, число, действительно существующие. Собственно средние или средние статистические должны выводиться из явлений однокачественных, одинаковых по своему внутреннему значению. Средние арифметические – числа, дающие возможно близкое представление о многих числах, различных, хотя и однородных.

Каждый из видов средней может выступать либо в форме простой, либо в форме взвешенной средней. Правильность выбора формы средней вытекает из материальной природы объекта исследования. Формулы простых средних применяются в случае, если индивидуальные значения усредняемого признака не повторяются. Когда в практических исследованиях отдельные значения изучаемого признака встречаются несколько раз у единиц исследуемой совокупности, тогда частота повторений индивидуальных значений признака присутствует в расчетных формулах степенных средних. В этом случае они называются формулами взвешенных средних.

 

 

 

 

 

 

 

 

2.           МОДЕЛИРОВАНИЕ ПРОЦЕССА ПЕРЕВОЗКИ

Необходимо смоделировать процесс перевозок. Для этого отслеживается процесс работы. Начинаем анализ, и отслеживание работы с момента ожидания погрузки автомобиля, они принимаются за ноль, следующей стадией будет процесс погрузки, его начало будет показывать завершение этапа ожидания. После этого машина движется с грузом, где становится на ожидание разгрузки и саму разгрузку, после этого она пустая возвращается к первому состоянию. Отследив время на всех этих этапах, данные собираются в базу и обрабатываются при помощи программы auto. После этого, воспользовавшись программой model, моделируется процесс перевозки, и все данные  заносятся в файл protokol, в дальнейшем необходимые для работы.

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

Необходимо смоделировать процесс перевозок грузов для нахождения максимальной производительности системы и минимума затрат, также нужно найти общие затраты на ожидание в системе перевозок грузов состоящей из 18 автомобилей, работающей в 2 смены.

Этапы процесса перевозок изображены на рисунке 1, он состоит из 6 этапов: ожидания погрузки, погрузку, движение с грузом ожидание разгрузки, разгрузка, и движение без груза, после чего процесс повторяется снова, на протяжении 8 часовой смены.

 

 

 

 

 

 

 

 

 

 

 

Рисунок 1. Этапы процесса перевозки

2.2.           Сбор информации

Для сбора информации определяется время, истраченное на каждый этап. Это необходимо для анализа их работы. На протяжении всего рабочего дня хронометрист заносит время начала следующего этапа, в перевозке, что является логическим завершением предыдущего, за начало рабочего дня берётся этап погрузки, а концом эксперимента считается окончание рабочего дня. Каждый результат мы заносим в индивидуальную таблицу с именем водителя. Потом объединяем данные всех водителей в одну таблицу с названием «auto». Листинг программы «auto» находится в приложении 1. Используя программу «auto», анализируем полученные данные, затем распределяем их по шести столбцам: Tr - разгрузка, Tp погрузки, Tdp – движение без груза, Tdg – движение с грузом, Tor – ожидание разгрузки, Top – ожидание погрузки, которые указывают продолжительность состояния каждого этапа модели в системе.

Рисунок 2. Таблица состояний элементов в системе и затрачиваемое время

2.3.           Обработка информации

Информация обрабатывается программой «model», для моделирования требуется ввод данных: количество элементов в системе, время начала моделирования, и его завершение, также требуется шаг модели с помощью которого система будет обновлять данные о состоянии элементов в системе на определенный момент времени. На рисунке 3 продемонстрировано окно для ввода параметров.

Рисунок 3. Ввод параметров моделирования

Полученные данные записываются в «Protokol», куда заносит информацию: в графе «ID» указывается номер машины, в графе «sost», обозначается состояние элемента в системе (например, 1 – это ожидание погрузки, и т.д.). В графе «Time», заносится время текущего состояния с момента начала рабочего дня.

Рисунок 4. Таблица Protokol

2.4.           Максимальная производительность системы

Для выявления максимальной производительности был поставлен эксперимент, в кортом учувствовало 18 машин. При помощи программы Visual FoxPro, было смоделировано две рабочие смены системы. Все результаты внесены в таблицу protokol. Посчитав объем выполненной работы с помощью команды «count for sost=6 to v». Вывели результат на экран, с помощью команды «? v», повторяем процесс с увеличением количество элементов на 1 до 18. Полученные данные используем для вычисления затрат на ожидание системы во время всей смены работы транспорта и производительности системы. С помощью Microsoft Excel, строим гистограмму производительности. Максимальную производительность системы видно на графике ниже:

Рисунок 5. Гистограмма производительности

              Ось по вертикали, это количество выработки каждой машиной, а по горизонтали, это количество элементов участвовавших в перевозке. Производительность достигнет максимума при 10 элементах в системе.

2.5.           Минимальные затраты на ожидание системы

В графике ниже наглядно представлена производительность и затраты системы.

Рисунок 6. График ожидания во время работы машин             

Как уже было сказано 10 машин в системе дадут максимальную производительность, также из графика видно, что минимальные затраты будут при 4 машинах в системе.

2.6.           Расчет общих затрат на ожидание

Требуется найти общие затраты на ожидание в системе перевозок грузов состоящей из 18 автомобилей, работающей в 2 смены.

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

Используя уже имеющиеся данные в файле, обработчик с именем «mute» копирует столбцы из указанной таблицы состояния «sost» и времени «time» в отдельный файл, с которым и осуществляет работу, так же задаётся переменная Z, которая увеличивается каждый раз при повторении цикла сканирования необходимого состояния, после чего подсчитывается разница элементов по сравнению с предыдущим и делится на переменную Z. Рrice 1, 4, 7, 9 – это цены на ожидание погрузки и разгрузки. 1, 4, 7, 9 – это состояние элемента в системе.  Zэто промежуток времени от начала рабочего дня, и до момента начала данного этапа. x1, x4, x7, x9 – время ожидания.

 

 

 

 

 

 

 

 

 

 

 

2.6.2.    Алгоритм решения задачи

 

 

 

-                                          +

 

 

 

              -                                          +

 

 

 

 

 

 

 

 

2.6.3.                                         Результаты

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

Рисунок 7. Результаты после измерения времени на ожидание

Листинг программы, для вычисления затрат на ожидание, находится в Приложении 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.                  МОДЕЛИРОВАНИЕ СЛУЧАЙНОЙ ВЕЛИЧИНЫ

Случайная величина — это величина, которая принимает в результате опыта одно из множества значений, причем появление того или иного значения этой величины до её измерения нельзя точно предсказать.

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

Вариант №14

Условия: n=2000, сравнить генераторы (4),(5) и (7), γ =0.99.

Цель: Провести  анализ  и  сравнение  генераторов CB  X →N( , ) 01   по

точности и времени моделирования выборки объема n   Для этого: 

а)  найти  время  моделирования  для 1000  значений  оценки  числовых

характеристик  , , и  доверительный  интервал  для  математического

ожидания при доверительной вероятности γ ;

б) найти оценку вероятности  P(|x|>3)  и сравнить еe с теоретическим

значением по Z -критерию;

в)  сформировать  вектор  Ω=(, k =), где - относительная  частота

попадания CB  в  k-й  интервал (интервалы:(-3,-2); (-2,-1);...;(2,3)).  Сравнить

эти частоты с теоретическими вероятностями Pk, k =1,6, по Z -критерию.

Выполнение  пунктов  а),б),в)  провести  для 3-х  последовательностей

r→R(0,1), на основании которых и сделать выводы.

Генератор первый: Метод использующий центральную предельную теорему.

                                                                   (1)

где r - значение псевдослучайной величины равномерно

распределенной на интервале (0,1).

Генератор второй: Обратный метод Бокса и Малера.

                                                                 (2)

где ln – логарифм, r - значение псевдослучайной величины равномерно распределенной на интервале (0,1), cos косинус, - 3,14.

 

Генератор третий: Метод Тигроу.

                                         (3)

где значение псевдослучайной величины равномерно распределенной на интервале (0,1),

Метод Тигроу по отношению к методу использующего центральную предельную теорему дает лучшие значения за пределами.

 

 

 

 

 

 

 

 

 

 

 

 

 

3.3.1.                                         Алгоритм решения задачи

 

 

 

 

 

 

 

 

 

                                                        _                                                        +                

 

                                                                     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.3.2.                                                                  Результат проведения исследования

После генерирования случайных величин, выводятся результаты расчетов и измерений. На рисунке ниже видно чему равны различные вычисления.

Рисунок 6. Результат проведения исследования

Гистограмма распределения случайной величины:

 

Рисунок 8. Гистограмма распределения случайной величины

 

Рисунок 9. Гистограмма построенная в Microsoft Excel

 

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

1.                  Ссылка – http://ru.wikipedia.org/wiki/Случайная_величина

2.                  Ссылка – http://ru.wikipedia.org/wiki/Дисперсия_случайной_величины

3.                  Ссылка – http://ru.wikipedia.org/wiki/Квадратичное_среднее

4.                   Ссылка - http://ru.wikipedia.org/wiki/Среднее_значение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение 1

Листинг программы для измерения затрат на ожидание:

set view to auto && возвращает Visual FoxPro в состояние, имевшееся при создании файла auto

clear && очищает экран

price1 =1.00 && присваиваем переменной «price1» значение 1.00

price4 =4.00  && присваиваем переменной «price1» значение 4.00

price7 =7.00  && присваиваем переменной «price1» значение 7.00

price9 =9.00  && присваиваем переменной «price1» значение 9.00

@1,10 say ' цена ожидания погрузки ' get price1 && выводит на экран предложение, параметры которого используется переменной «1»

@4,10 say ' цена ожидания разгрузки ' get price4 && выводит на экран предложение, параметры которого используется переменной «4»

@7,10 say ' цена ожидания погрузчика ' get price7 && выводит на экран предложение, параметры которого используется переменной «7»

@9,10 say ' цена ожидания разгрузчика ' get price9 && выводит на экран предложение, параметры которого используется переменной «9»

read && команда для возможности чтения введенных данных

После ввода значений, необходимо выбрать файл базы данных «protokol». Как представлено ниже на рис.1.

clear && очищает экран

select 0 && выбирает нулевое значение

use ? && открывает окно для выбора таблицы

copy to result && копируем в файл

use result && используем указанный файл

*** расчет времени ожидания транспортных средств &&

index on str(id)+str(time) to result && индексируем столбцы в таблице

copy to res && копируем данные в таблицу «res»

select 0 && выбираем значение

use res && используем файл res

*** 1 - ожидание погрузки &&

store 0 to x1 && сохранить значение как переменная x1

scan for sost = 1 && сканируем таблицу по состоянию «sost»

select result && выбираем result

seek str(res.id)+str(res.time) && ищим в таблице res сумму столбцов id и time

skip -1 && шаг назад

select res && выбираем res

z = (time -result.time) && считаем переменную z

IF z < 0 && задаём условие если z<0

              z = 0 && присваиваем переменной z, 0

endif && закрыть ранее начатое условие

x1 = x1 +price1*z &&1 && в перемену x записываем значение, равное произведению цены погрузки прибавленное к значению переменной x

endscan && завершить сканирование

* 4 - ожидание разгрузки

store 0 to x4 && сохранить значение как переменная x4

scan for sost = 4 && сканируем таблицу по состоянию «4»

              select result && выбираем result

seek str(res.id)+str(res.time) && ищим в таблице res сумму столбцов id и time

              skip -1 && поднятие вверх столбца «id» и столбца «time»  в таблице «res» на 1

select res && выбираем res

              z = (time -result.time) && считаем переменную z

              IF z < 0 && задаём условие если z<0

z = 0 && присваиваем переменной z, 0

endif && закрыть ранее начатое условие

x4 = x4 +price4*z &&1 && в перемену x4 записываем значение, равное произведению цены погрузки прибавленное к значению переменной x

 

endscan && завершить сканирование

* 7 - погрузчик занят

store 0 to x7 && сохранить значение как переменная x7

scan for sost = 7 && сканируем таблицу по состоянию «7»

              select result && выбираем result

              seek str(res.id)+str(res.time) && ищем в таблице res сумму столбцов id и time

              skip -1 && поднятие вверх столбца «id» и столбца «time»  в таблице «res» на 1

              select res && выбираем res

              z = (time -result.time) && считаем переменную z

              IF z < 0 && задаём условие если z<0

                 z = 0 && присваиваем переменной z, 0

              endif && закрыть ранее начатое условие

x7 = x7 +price1*z &&1 && в перемену x7 записываем значение, равное произведению цены погрузки прибавленное к значению переменной x

endscan && завершить сканирование

* 9 - разгрузчик занят &&

store 0 to x9 && сохранить значение как переменная x9

scan for sost = 9 && сканируем таблицу по состоянию «9»

              select result && выбираем result

              seek str(res.id)+str(res.time) && ищем в таблице res сумму столбцов id и time

              skip -1 && поднятие вверх столбца «id» и столбца «time»  в таблице «res» на 1

              select res && выбираем res

              z = (time -result.time) && считаем переменную z

 

              IF z < 0 && задаём условие если z<0

                 z = 0 && присваиваем переменной z, 0

              endif && закрыть ранее начатое условие

x9 = x9 +price9*z &&1 && в перемену x9 записываем значение, равное произведению цены погрузки прибавленное к значению переменной x

endscan && завершить сканирование

y=x1+x4+x7+x9 && слаживаем переменные для подсчета общего времени ожидания

? x1 && показать «x1»

? x4 && показать «x4»

? x7 && показать «x7»

? x9 && показать «x9»

@11,1 say 'общии затраты системы' get  y && выводит на экран предложение, параметры которого используется переменной «y»

 

 

 

 

 

 

 

 

 

Приложение 2

Листинг программы генератора случайных величин и сравнения их между собой:

*** ГЕНЕРАТОР 1 ***

1. Close && закрывает файлы различных типов

All – Закрывает все открытые базы данных, таблицы и индексы во всех рабочих областях и выбирает рабочую область 1. Команда CLOSE ALL также закрывает все файлы, открытые с помощью функций файлов низкого уровня FCREATE( ) и FOPEN( ).

              2. *** && обозначение комментариев (после написания комментариев необходимо завершить такими же тремя звездочками)

3. Генератор 1 && здесь начинается первый генератор;

4. Set safety && Определяет, будет ли Visual FoxPro отображать диалоговое окно перед тем, как вести запись поверх существующего файла.

Синтаксис:

SET SAFETY ON | OFF

Параметры:

ON:

(По умолчанию) Определяет, что перед попыткой записи в существующий файл отображается диалоговое окно. В нем вам предлагается возможность задать запись поверх файла.

Для конструктора таблиц указывает, что при сохранении изменений в структуре таблицы выполняется вычисление правил таблиц или полей, значений по умолчанию и сообщений об ошибках. Проверка достоверности данных производится по новым или модифицированным правилам после сохранения изменений структуры таблицы. Если правило содержит пользовательскую функцию (UDF), она не вычисляется и данное правило игнорируется.

Для команды ALTER TABLE правила таблиц или полей, значения по умолчанию и сообщения об ошибках вычисляются в тот момент, когда данная команда изменяет структуру таблицы. Проверка достоверности данных производится по новым или модифицированным правилам, когда ALTER TABLE изменяет структуру таблицы. Если правило содержит пользовательскую функцию (UDF), она не вычисляется и данное правило игнорируется.

OFF:

Определяет, что перед попыткой записи в существующий файл диалоговое окно не отображается.

Для конструктора таблиц указывает, что при сохранении изменений в структуре таблицы не выполняется вычисление правил таблиц или полей, значений по умолчанию и сообщений об ошибках. Однако после сохранения изменений в структуре таблицы проверка достоверности данных производится по новым или модифицированным правилам.

              5. Set Talk && Определяет, будет ли Visual FoxPro отображать результаты команд.

Синтаксис:

SET TALK ON | OFF | WINDOW [WindowName] | NOWINDOW

Параметры:

ON:

(По умолчанию) Разрешает направить выдачу дополнительной информации в основное окно Visual FoxPro, в окно системных сообщений, в графическую строку состояния или в пользовательское окно. Если установка SET TALK имеет значение OFF, а затем изменяется на ON, выдача направляется туда же, куда она направлялась перед командой SET TALK OFF.

 

 

OFF:

Запрещает направлять выдачу в основное окно Visual FoxPro, в окно системных сообщений, в графическую строку состояния или в пользовательское окно.

              6. Clear - освобождают заданные элементы в памяти.

Синтаксис:

CLEAR
              [ALL | CLASS ClassName | CLASSLIB ClassLibraryName | DLLS |
              EVENTS | FIELDS | GETS | MACROS | MEMORY | MENUS |
              POPUPS | PROGRAM | PROMPT | READ [ALL] | TYPEAHEAD |
              WINDOWS]

Параметры:

ALL:

Освобождает в памяти все переменные памяти и массивы, а также определения всех пользовательских строк меню, самих меню и окон. Кроме того, команда CLOSE ALL закрывает все таблицы, включая все связанные с ними файлы индексов, файлы формата и memo-файлы, и выбирает рабочую область 1. CLEAR ALL также удаляет из памяти все внешние 32-разрядные библиотеки динамического связывания Windows (.DLL),

CLEAR ALL:

He освобождает системные переменные памяти и не очищает буфер откомпилированных программ. Для очистки этого буфера используйте команду CLEAR PROGRAM. Если выдать CLEAR ALL внутри события или метода активного элемента управления или объекта, будет сгенерировано сообщение об ошибке Visual FoxPro. Переменная памяти типа объекта не может быть освобождена из памяти, если соответствующий ей элемент управления или объект активен.

7. kolvo=1 && здесь присвается переменной «kolvo» значение равное «1». Переменная «kolvo», является количеством генерируемых чисел, задаваемое пользователем при запуске программы, и которое в дальнейшем учитывается при всех последующих вычислениях.

8. @1,1 say 'Введите количество чисел'  get kolvo && эта функция просит Visual Fox Pro показать в 1 строке и 1столбце, вывести значение на экране равное переменной «kolvo», где пользователь и указывает количество генерируемых чисел.

9. Read && производит чтение того, что вводилось пользователем в переменной «kolvo».

10. Use Opium1 && эта функция открывает таблицу и связанные с ней файлы индексов или представление SQL, в данном случае это таблица Opium1.

11. t_start=seconds() && данная команда, говорит программе, что бы она начала отсчет времени для того, что бы узнать сколько требуется время генератору для подсчета количества значений введенных в переменной «kolvo». t_start – является переменной обозначающее начало (название может быть любое). Seconds() – числовое значение в десятичном формате с точностью до 1 миллисекунды.

12. Zap && удаляет из таблицы все записи, оставляя лишь структуру таблицы.

Внимание: Записи, удаленные из таблицы по команде ZAP, не могут быть восстановлены!

              13. for i = 1 to kolvo && здесь начинается цикл for. For ... endfor – переменная памяти или элемент массива используются в качестве счетчика, который задает количество выполнений для команд Visual FoxPro, входящих в тело цикла FOR ... ENDFOR. Команды Visual FoxPro, идущие после FOR, выполняются одна за другой, пока не встретится оператор ENDFOR или NEXT. После этого к счетчику MemVarName прибавляется значение nIncrement. Если предложение STEP опущено, счетчик увеличивается на 1. После этого он сравнивается с величиной nFinalValue. Если значение счетчика меньше или равно nFinalValue, то команды, следующие за предложением FOR, выполняются вновь. Если значение счетчика больше, чем nFinalValue, осуществляется выход из цикла FOR ... ENDFOR и выполнение программы продолжается с первой команды, следующей за ENDFOR или NEXT. «i=1» обозначает что счетчик начнется с 1, «to kolvo» – обозначает, что счетчик закончит действия до значения равное «kolvo».

              14. rand && возвращает случайное число в диапазоне от 0 до 1.

              15. c=rand()^1/3 && здесь переменной «с» указывается, что будет случайное число в диапазоне от 0 до 1 в степени (^) «1/3».

              16. d=rand()^1/3 && аналогичное действие что и в пункте 14, только вместо переменной «с» используется переменная «d».

              17. e=c+d && в этой команде, в переменную «е» будет записываться сумма 2х переменных «с» и «d».

              18. if e<1 && осуществляет условное выполнение группы команд исходя из значения логического выражения.

              19. x_=c/e && в переменную «х_» будет записано деление переменной «с» на переменную «е».

              20. if x_>0 and x_<1 && снова условие, в котором подобранное число анализируется на то, что бы «х_» было больше нуля, и (and) меньше единицы.

              21. append blank && добавляет в конец таблицы одну или несколько новых записей.

              22. repl && изменяет содержимое поля в какой-либо одной или в нескольких записях.

                            With - Задает выражение для замены.

                            repl x1 with x_ - заменяем значение столбца «х1» на переменную «х_».

              23. endif && завершение выше начатого условия «if».

              24. endfor && завершение выше начатого цикла «for».

              25. t_end=seconds() && окончание ранее засеченного времени.

              26. t_mod=t_end-t_start && здесь мы вычитаем из конечного времени таймера, начальное, и получаем время затрачиваемое генератором.

              27. @3,20 say 'Время затрачиваемое генератором' get t_mod && выводим сообщение «'Время затрачиваемое генератором'» в 3 строке и 3 столбце, используя данные полученные в переменной «t_mod».

              28. sum && суммирует все или только заданные числовые поля в таблице, выбранной в данный момент.

                            Sum x1 to sredn – суммируем столбец «х1» и записываем полученный результат в переменную «sredn».

              29. sredn=sredn/kolvo && теперь, делим результат записанный в переменной «sredn» на значение введенное в начале программы, которое хранится в переменной «kolvo», и записываем новый результат в той же переменной «sredn», с заменой старых значений. В действиях, в пункте 28 и 29, мы находили среднюю арифметическую из количества введенных чисел для генерирования, и суммы таблицы в которую записывали числа, удовлетворяющие условию «if».

              30. @4,20 say 'Среднее' get sredn && выводим сообщение «’среднее’» и подставляем туда данные из переменной «sredn».

              31. disp=0 && объявляем новую переменную «disp» которая равная нулю.

              32. scan && начинает сканирование, во время которого перемещается указатель записи по таблице, выбранной в данный момент, и для каждой записи, удовлетворяющей указанным условиям, выполняет определенный блок команд.

                            Комментарии:

SCAN автоматически продвигает указатель записи к следующей записи, удовлетворяющей заданным условиям, и выполняет блок команд.

33. disp=(sredn-x1)*(sredn-x1)+disp && в переменную «disp», которая равная у нас нулю, мы производим ряд действий. Для начала, в скобках, мы вычитаем из переменной «sredn» поочередно все данные таблицы «х1», во второй скобке аналогичное действие, далее перемножаем их, тем самым возводим в квадрат, и прибавляем переменную «disp».

34. endscan && завершение сканирования таблицы.

35. disp=disp/kolvo && делим значение переменной «disp» на значение переменной «kolvo», и записываем все с заменой старых значений в переменную «disp».

36. @5,20 say 'Дисперсия' get disp && выводим сообщение «’дисперсия’» и подставляем туда данные из переменной «disp».

37. corn=sqrt(disp) && извлекаем корень из значения переменной «disp» и записываем полученный результат в новую переменную «corn».

38. @6,20 say 'Среднеквадратичное отклонение' get corn && выводим сообщение «’среднеквадратичное отклонение’» и подставляем туда данные из переменной «corn».

39. index && создает файл индекса, позволяющий отображать и обрабатывать табличные записи в логическом порядке.

              index on x1 to  opium1 – обрабатываем столбец «х1» в таблице «opium1».

40. go && перемещает указатель записи к записи с заданным номером.

Устанавливает указатель записи на первую запись таблицы. Если в таблице используется возрастающий индекс, первой записью будет запись с наименьшим значением ключа. Если индекс организован в убывающем порядке, первой будет запись с наивысшим значением ключа.

BOTTOM:

Устанавливает указатель записи на последнюю запись в таблице. Если в таблице используется возрастающий индекс, последней записью будет запись с наивысшим значением ключа. Если индекс организован в убывающем порядке, последней будет запись с наименьшим значением ключа.

41. store && cохраняет данные в переменной памяти, массиве или в элементе массива.

42. store x1 to min_ && записываем в переменную «min_» самое минимальное значение столбца «х1».

43. go bottom && перемещаемся в столбце «х1» вниз.

44. store x1 to max_ && записываем в переменную «mах_» самое максимальное значение столбца «х1».

записываем в переменную «min_» самое минимальное значение столбца «х1».

45. clear gets && освобождает все ждущие элементы управления @.

46. razn=max_-min_ && в переменной «razn» сохраняем разницу, полученную при вычитании «min_» из «max_».

47. razn=razn/12 && делим значение переменной «razn» на 12 и снова сохраняем в переменной «razn» .

48. ? razn && просим программу показать нам на экране результат вычисления, который был сохранен в переменной «razn».

49. wait && команда обозначает, что действия будут выполнятся дальше, только после нажатия любой клавиши пользователем.

50. clear && очищаем все после завершения вычислений в этом генераторе.

*** ГЕНЕРАТОР 2 ***

1. kolvo=1 && здесь присвается переменной «kolvo» значение равное «1». Переменная «kolvo», является количеством генерируемых чисел, задаваемое пользователем при запуске программы, и которое в дальнейшем учитывается при всех последующих вычислениях.

2. @1,1 say 'Введите количество чисел'  get kolvo && эта функция просит Visual Fox Pro показать в 1 строке и 1 столбце, вывести значение на экране равное переменной «kolvo», где пользователь и указывает количество генерируемых чисел.

3. Clear && освобождают заданные элементы в памяти.

4. Read && производит чтение того, что вводилось пользователем в переменной  «kolvo».

5. t_start=seconds() && данная команда, говорит программе, что бы она начала отсчет времени для того, что бы узнать сколько требуется время генератору для подсчета количества значений введенных в переменной «kolvo». t_start – является переменной обозначающее начало (название может быть любое). Seconds() – числовое значение в десятичном формате с точностью до 1 миллисекунды.

6. Use zzz && эта функция открывает таблицу и связанные с ней файлы индексов или представление SQL, в данном случае это таблица «zzz».

7. Zap && удаляет из таблицы все записи, оставляя лишь структуру таблицы.

Внимание: Записи, удаленные из таблицы по команде ZAP, не могут быть восстановлены!

              8. i=1 a=3 b=3 && задаем 3 новых переменных, и значения «i» равная 1, «а» равная 3 и «b» равная 3.

              9. do while && выполняет группу команд, входящих в условный цикл.

Синтаксис:

DO WHILE lExpression
              Commands
              [LOOP]
              [EXIT]
ENDDO

Параметры:

lExpression:

Задает логическое выражение, значение которого определяет, будут ли выполняться команды, размещенные между DO WHILE и ENDDO. Пока значение lExpression остается "истиной", команды этой группы будут выполняться.

Commands:

Задает группу команд Visual FoxPro, которые следует выполнять, пока значением выражения lExpression остается "истина".

LOOP:

Возвращает управление непосредственно оператору DO WHILE. LOOP можно размещать в любом месте между DO WHILE и ENDDO.

EXIT:

Передает управление из цикла DO WHILE первой команде, стоящей после ENDDO. EXIT можно размещать в любом месте между DO WHILE и ENDDO.

ENDDO:

Обозначает конец оператора DO.

Каждый оператор DO WHILE должен иметь соответствующий ему оператор ENDDO.

После операторов DO WHILE и ENDDO в той же строке можно вставлять комментарии. Во время компиляции и выполнения программы комментарии игнорируются.

                            do while  i <= kolvo – задается цикл, который будет подбирать значения «i» меньше или равные переменной «kolvo».

              10. c = rand() && вводится новая переменная, у которой значение будет «random».

              11. rand && возвращает случайное число в диапазоне от 0 до 1.

              12. for j = 2 to a && здесь начинается цикл for от «j=2» до «а». For ... endfor – переменная памяти или элемент массива используются в качестве счетчика, который задает количество выполнений для команд Visual FoxPro, входящих в тело цикла FOR ... ENDFOR. Команды Visual FoxPro, идущие после FOR, выполняются одна за другой, пока не встретится оператор ENDFOR или NEXT. После этого к счетчику MemVarName прибавляется значение nIncrement. Если предложение STEP опущено, счетчик увеличивается на 1. После этого он сравнивается с величиной nFinalValue. Если значение счетчика меньше или равно nFinalValue, то команды, следующие за предложением FOR, выполняются вновь. Если значение счетчика больше, чем nFinalValue, осуществляется выход из цикла FOR ... ENDFOR и выполнение программы продолжается с первой команды, следующей за ENDFOR или NEXT. «i=1» обозначает что счетчик начнется с 1, «to kolvo» – обозначает, что счетчик закончит действия до значения равное «kolvo».

              13. c=c*rand() && присвоение переменной «с», нового значения равное произведением «с» на «rand».

              14. endfor && завершение ранее начатого цикла «for».

              15. d = rand() && присвоение новой переменной «d», нового значения равное «rand».

              16. for k = 2 to b && начало нового цикла «for» от «k=2» до «b».

              17. d=d*rand() && присвоение переменной «d», нового значения равное произведением «d» на «rand».

              18. endfor && завершение ранее начатого цикла «for».

              19. c = - log(c) && вычисляем натуральный, отрицательный логарифм от «с», и записываем значение в переменную «с».             

              20. d = - log(d) && вычисляем натуральный, отрицательный логарифм от «d», и записываем значение в переменную «d».             

              21. c = c/a && в переменную «с» записываем результат от деления «с» на «а».

              22. d = d/b && в переменную «d» записываем результат от деления «d» на «b».

              23. e = c+d && сумму от «с» и «d» записываем в переменную «е».

              24. x = c/e && делим «с» на «е» и записываем в переменную «х».

              25. append blank && добавляет в конец таблицы одну или несколько новых записей.

              26. repl && изменяет содержимое поля в какой-либо одной или в нескольких записях.

                            With - Задает выражение для замены.

                            repl t with x - заменяем значение столбца «t» на значение «х».

              27. i = i +1 && к данному значению «i» в столбце, прибавляем 1, чтобы следующая запасись в таблице не перезаписала предыдущую.

              28. enddo && завершаем цикл «do while» начатый ранее.

              29. t_end=second() && окончание ранее засеченного времени.

              30. t_mod=t_end-t_start && здесь мы вычитаем из конечного времени таймера, начальное, и получаем время затрачиваемое генератором.

31. @2,20 say 'время затрачиваемое генератором' get t_mod && выводим сообщение «'Время затрачиваемое генератором'» в 3 строке и 3 столбце, используя данные полученные в переменной «t_mod».

              32. sum t to sredn && Суммирует числовые поля в таблице «t», выбранной в данный момент таблицы, в переменную «sredn».

              33. sredn=sredn/kolvo && теперь, делим результат записанный в переменной «sredn» на значение введенное в начале программы, которое хранится в переменной «kolvo», и записываем новый результат в той же переменной «sredn», с заменой старых значений. В действиях, в пунктах 31 и 32, мы находили среднюю арифметическую из количества введенных чисел для генерирования, и суммы таблицы в которую записывали числа, удовлетворяющие условию «if».

              34. @3,20 say 'Среднее' get sredn && выводим сообщение «’среднее’» и подставляем туда данные из переменной «sredn».

              35. disp=0 && объявляем новую переменную «disp» которая равная нулю.

              36. scan && начинает сканирование, во время которого перемещается указатель записи по таблице, выбранной в данный момент, и для каждой записи, удовлетворяющей указанным условиям, выполняет определенный блок команд.

                            Комментарии:

SCAN автоматически продвигает указатель записи к следующей записи, удовлетворяющей заданным условиям, и выполняет блок команд.

37. disp=(sredn-t)*(sredn-xt)+disp && в переменную «disp», которая равная у нас нулю, мы производим ряд действий. Для начала, в скобках, мы вычитаем из переменной «sredn» поочередно все данные таблицы «t», во второй скобке аналогичное действие, далее перемножаем их, тем самым возводим в квадрат, и прибавляем переменную «disp».

38. endscan && завершение сканирования таблицы.

39. disp=disp/kolvo && делим значение переменной «disp» на значение переменной «kolvo», и записываем все с заменой старых значений в переменную «disp».

40. @5,20 say 'Дисперсия' get disp && выводим сообщение «’дисперсия’» и подставляем туда данные из переменной «disp».

41. corn=sqrt(disp) && извлекаем корень из значения переменной «disp» и записываем полученный результат в новую переменную «corn».

42. @6,20 say 'Среднеквадратичное отклонение' get corn && выводим сообщение «’среднеквадратичное отклонение’» и подставляем туда данные из переменной «corn».

39. index && создает файл индекса, позволяющий отображать и обрабатывать табличные записи в логическом порядке.

              index on t to  zzz – обрабатываем столбец «t» в таблице «zzz»

40. go && перемещает указатель записи к записи с заданным номером.

go top – перемещаемся в столбце «t» вверх.

41. store && cохраняет данные в переменной памяти, массиве или в элементе массива.

42. store t to min_ && записываем в переменную «min_» самое минимальное значение столбца «t».

43. go bottom && перемещаемся в столбце «х1» вниз.

44. store t to max_ && записываем в переменную «mах_» самое максимальное значение столбца «t».

записываем в переменную «min_» самое минимальное значение столбца «х1».

45. clear gets && освобождает все ждущие элементы управления @.

46. razn=max_-min_ && в переменной «razn» сохраняем разницу, полученную при вычитании «min_» из «max_».

47. razn=razn/12 && делим значение переменной «razn» на 12 и снова сохраняем в переменной «razn» .

48. ? razn && просим программу показать нам на экране результат вычисления, который был сохранен в переменной «razn».

49. use zzz && используем таблицу «zzz».

50. select && активизирует заданную рабочую область..

              Select 0 - активизируется неиспользуемая рабочая область.

51. use soldat && использовать таблицу «soldat»

52. select zzz && активизируется таблица «zzz».

53. scan && начинает сканирование, во время которого перемещается указатель записи по таблице, выбранной в данный момент, и для каждой записи, удовлетворяющей указанным условиям, выполняет определенный блок команд.

54. c=1+int((t-min_)/razn) && Для начала в скобках, считаем разницу первого значения столбца, и минимального значения в этом столбце, потом делим полученный результат на переменную «razn», далее умножаем на «int» (int - вычисляет значение числового выражения и возвращает его целую часть), и прибавляем единицу. Все действия повторяются с каждым  элементом таблицы «zzz».

55. select soldat && снова выбираем таблицу «soldat».

56. locate && Последовательно просматривает таблицу в поисках первой записи, совпадающей с заданным логическим выражением.

locate for d=t – просмотр таблицы

              58. repl c with c+1 && заменяем значение столбца «с» на значение «с+1».

              59. select zzz && снова выбираем таблицу «zzz» для повтора всех операций начиная с пункта 54 и заканчивая пунктом 58, пока все данные таблицы не будут использованы.

              60. endscan && завершение сканирования таблиц.

 

7

 

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