Рис. 2. Блок-схема нормального распределения
Рис. 4. Блок-схема логнормального распределения.
Нет да
Рис.3. Блок-схема распределения Пуассона.
нет
нет
нет
нет
нет
нет
Рис. 4. Блок-схема функции «Оптовый магазин».
Ввод KOLTEK
нет
Вывод KOLTOV, TTEK, ZAKTOV,Z,SHOP
Рис.5. Блок-схема основной программы.
5. Перевод алгоритма на язык программирования
Структурное программирование – это технология создания программ, позволяющая путем соблюдения определенных правил уменьшить время разработки и количество ошибок, а также облегчить возможность модификации программы.
Разные типы процессоров имеют разный набор команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. Языком самого низкого уровня является язык ассемблера, который просто представляет каждую команду машинного кода в виде специальных символьных обозначений, которые называются мнемониками. С помощью языков низкого уровня создаются очень эффективные и компактные программы, т.к. разработчик получает доступ ко всем возможностям процессора. Т.к. наборы инструкций для разных моделей процессоров тоже разные, то каждой модели процессора соответствует свой язык ассемблера, и написанная на нем программа может быть использована только в этой среде. Подобные языки применяют для написания небольших системных приложений, драйверов устройств и т. п.
С помощью языка программирования создается текст, описывающий ранее составленный алгоритм. Чтобы получить работающую программу, надо этот текст перевести в последовательность команд процессора, что выполняется при помощи специальных программ, которые называются трансляторами. Трансляторы бывают двух видов: компиляторы и интерпретаторы. Компилятор транслирует текст исходного модуля в машинный код, который называется объектным модулем за один непрерывный процесс. При этом сначала он просматривает исходный текст программы в поисках синтаксических ошибок. Интерпретатор выполняет исходный модуль программы в режиме оператор за оператором, по ходу работы, переводя каждый оператор на машинный язык.
Языки программирования высокого уровня не учитывают особенности конкретных компьютерных архитектур, поэтому создаваемые программы на уровне исходных текстов легко переносятся на другие платформы, если для них созданы соответствующие трансляторы. Разработка программ на языках высокого уровня гораздо проще, чем на машинных языках.
Си – был создан в 70- е годы первоначально не рассматривался как массовый язык программирования. Он планировался для замены ассемблера, чтобы иметь возможность создавать такие же эффективные и короткие программы, но не зависеть от конкретного процессора. Он во многом похож на Паскаль и имеет дополнительные возможности для работы с памятью. На нем написано много прикладных и системных программ, а также операционная система Unix. Си++ - объектно-ориентированное расширение языка Си, созданное Бьорном Страуструпом в 1980г.
Программа:
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
float ravnom(float d11, float d21)
{
randomize();
float R;
R=d11+(d21-d11)*random(100)/100.0;
return R;
}
float normal(float b1, float b2)
{
randomize();
float X=0;
int i;
float R,d1,d2;
d1=(b1-sqrt(3*b2*12))/12;
d2=(b1+sqrt(3*b2*12))/12;
for(i=1;i<=12;i++)
X=X+ravnom(d1,d2);
return X;
}
float lognorm(float Ay, float By)
{
randomize();
float X,Y,a,b;
b=log(By/pow(Ay,2)+1);
a=log(Ay-0.5*b);
X=normal(a,b);
Y=exp(X);
return Y;
}
int puasson(float t)
{
randomize();
int n;
int R, R11;
do
{ R*=random(100)/100.0;
R11=R;
R*=random(100)/100.0;
n++; }
while(exp(-t)>=R11&&exp(-t)<R);
return (n-1);
}
float optmag(float &TTEK, int ZZ)
{
int Tzak,a=90,b=10;
static int TOVMAG;
if(ZZ<=1920){
TOVMAG=1920-ZZ;
TTEK=TTEK+lognorm(5,1);
}
if(TTEK==30) TOVMAG+=1800;
if(TTEK==60) TOVMAG+=1800;
if(TTEK==90) TOVMAG+=1800;
if(TOVMAG<=0)
Tzak=normal(a,b);
if(Tzak>=60&&Tzak<=120)
{
TOVMAG=1920-TOVMAG;
TTEK+=Tzak;
}
return (TOVMAG);
}
main()
{
clrscr();
int Z,SHOP,KOLTEK,KOLTOV;
float TTEK;
cout<<"Vvedite tekushee kolichestvo tovarov v torgovoj tochke:\n";
cin>>KOLTEK;
cout<<"\n\n";
TTEK=0;
KOLTOV=puasson(TTEK);
if (KOLTOV<=KOLTEK)
KOLTEK=KOLTEK-KOLTOV;
TTEK++;
Z=KOLTOV-KOLTEK;
SHOP=optmag(TTEK,Z);
cout<<"Tekushee vremya="<<TTEK<<"\n";
cout<<"Spros na tovari v torg. tochke="<<KOLTOV<<"\n";
cout<<"Zakazannoe magazinom kol-vo tovarov y fabriki="<<SHOP<<"\n";
cout<<"Zakazannoe torg. tochkoj kol-vo tovarov y magazina="<<Z<<"\n";
cout<<"Normativnij zapas tivarov v magazine = 70"<<"\n";
getch();
return 0;
}
6. Верификация: установление правильности машинной программы
На этапах верификации и валидации осуществляется оценка функционирования имитационной модели. На этапе верификации определяется, соответствует ли запрограммированная для ЭВМ модель замыслу разработчика. Это обычно осуществляется путем ручной проверки вычислений, а также может быть использован и ряд статистических методов. Написанная программа полностью отвечает требованиям курсовой работы. В ходе выполнения были найдены некоторые ошибки, которые были устранены при выполнении программы.
7. Результаты эксперимента
При запуске программы со следующими входными параметрами:
Vvedite tekushee kolichestvo tovarov v torgovoj tochke:
70
Получим следующие результаты:
Tekushee vremya=98
Spros na tovari v torg. tochke=2730
Zakazannoe magazinom kol-vo tovarov y fabriki=1920
Zakazannoe torg. tochkoj kol-vo tovarov y magazina=2660
Normativnij zapas tоvarov v magazine = 70
8. Анализ результатов
9. Заключение
Программа выдает на экран вероятностные и статистические характеристики объекта моделирования. Она имитирует работу описанной системы с целью определения изменения уровня запаса при заданной стратегииуправления розничной торговой точкой и оптовым магазином.
На основании проделанной работы, можно сделать следующие выводы:
1. Созданная математическая модель адекватна реальному объекту;
2. Проведенные исследования показали эффективность модели и способов “приведения её в действие” при определении необходимых нам параметров по сравнению с ручным способом моделирования и расчетов параметров;
3. Созданная модель имеет достаточную, для таких моделей, степень универсальности, т.к. диапазон входных параметров системы можно легко и быстро изменить.
10. Список использованной литературы
1. Клейнрок Л.«Теория массового обслуживания.»-М.: Машиностроение, 1979.-432 с.
2. Прицкер А. «Введение в имитационное моделирование» -М.: Мир, 1987.-644с.
3. Емельянов А.А., Власова Е.А., «Имитационное моделирование экономических процессов» - М. Финансы и статистика,2002.
6. Вентцель Е. С. Теория вероятностей. - М.: Наука, 1969. - 564 с.
7.Пугачев В. С. Теория вероятностей и математическая статистика. - М: Наука, 1979. -327 с.
8.Бусленко Н.П. Моделирование сложных систем. - М.: Наука, 1978. 399 с.
9.Шрайбер Т. Дж. Моделирование на GPSS. -W.: Машиностроение, 1979. - 287 с,
10. Варфоломеев В.И. Алгоритмическое моделирование элементов экономических систем. - М.: Финансы и статистика, 2000. -208 с.