Файл: Для публикации( СТАТИСТИЧЕСКОЕ МОДЕЛИРОВАНИЕ СЛОЖНЫХ СИСТЕМ).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 29.03.2019
Просмотров: 1966
Скачиваний: 3
Изм.
Кол.уч
№ док.
Подп.
05.2017
Дата
АЛГОРИТМ И ПРОГРАММА
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ
СЛОЖНЫХ СИСТЕМ
Лист
15
Инв
.
№
подл
.
Подп
.
и
дат
а
Взаи
.
инв
.
№
Формат А4
Копировал:
Лист
16
появления η событий при условии, что они независимы и появляются с
постоянной интенсивностью λ. При η=1 называется экспоненциальным.
Подготовка функционала Y=F(X) сложной системы
Под сложной системой подразумевается любая математическая модель процесса или
машины, которую можно изобразить в виде чёрного ящика, на вход которого подаются
воздействия, а на выходе получаем результат. Математически это выражается так: на вход
подаётся вектор входных параметров и после обработки (проведения расчётов) на выходе
получаем вектор выходных параметров.
Подобного рода расчётная модель подготавливается разработчиком процесса (машины)
и оформляется в виде автономно запрограммированной процедуры, например, unit
ShetProcess; , которая включает в себя
procedure ShetModeli(BX:raX; var BUX:raX);
Название этой процедуры соблюсти буквально. Она должна иметь только такое название
и такие параметры, т.е. procedure ShetModeli(BX:raX; var BUX:raX);
В прорамме ипользуется вызов внешней процедуры
WinExec(PAnsiChar('ProjectProOtladka.exe'),SW_RESTORE); (счет процедуры Otladka)
WinExec(PAnsiChar('ProjectOfflineProcess.exe'),SW_RESTORE);- (счет процесса
ВНЕШНЕГО).
Как видно, используются два вида exe-файла - ProjectProOtladka.exe (для отладки) и
ProjectOfflineProcess.exe – для счета процесса. Названия этих файлов СОБЛЮСТИ
объязательно. Именно эти файлы будут помещаться в папку для проведения расчётов.
Для подготовки PAS-файла можно использовать любой паскалевский редактор, например
Lazarus. Конечно, разрабатывать программу для математической модели необходимо в среде
Delphi10 и выше.
Обмен с буфером обмена (БО)
Обмен данными с внешней процедурой происходит через буфер обмена БО. Порядок обмена
происходит по следующей схеме.
За один цикл – одна реализация входного вектора
В программе ОБОЛОЧКА сформированный вектор входных параметров запоминается в БО.
Внешняя процедура (счёт процесса) считывает данные из БО, производит расчёт и данные
расчёта в виде выходного вектора снова записывает в БО. В программе ОБОЛОЧКА данные
из БО считываются и обрабатываются.
Для обмена с БО используется файл CopyToClipboardTextQN.pas. Он содержит процедуры:
procedure TextCopyToClipbrdQ( BXStatProm:raX0_101); // копирование в буфер
procedure TextCopyFromClipbrdN(var BUX:raX); // копирование из буфера
Без ошибок обмен проходит только с использованием задержки. Она формируется в
процедуре procedure Delay(Value: Cardinal); - входит в CopyToClipboardTextQN. Pas.
Для задания задержки используется переменная delayZ (описана в unit Global_ID_Data;).
Величина задержки была подобрана опытным путём и равна delayZ = 45;//задержка в 45
миллисекунд для обмена с буфером. При меньших значениях возникают сбои обмена (счёт
просто не идёт). В случае возникновения сбоев (на другом компьютере), значение delayZ
можно увеличить.
//Пример использования: Delay(delayZ );
Изм.
Кол.уч
№ док.
Подп.
05.2017
Дата
АЛГОРИТМ И ПРОГРАММА
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ
СЛОЖНЫХ СИСТЕМ
Лист
16
Инв
.
№
подл
.
Подп
.
и
дат
а
Взаи
.
инв
.
№
Формат А4
Копировал:
Лист
17
//Delay(1000); //Задержка на одну секунду
Пояснение как на делфи создать необходимый exe-файл
К программе «Оболочка» прилагается папка «Создание ехе Процесс».
В этой папке находятся файлы программы - program ProjectOfflineProcess;
Первое, что надо сделать – создать пустую папку. В папку помещаем
program ProjectOfflineProcess;
uses
Winapi.Windows,
Clipbrd,
Winapi.Messages,
System.SysUtils,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.Buttons,
shellAPi,
System.Math,
System.IOUtils,
Vcl.Grids,
Vcl.StdCtrls,
Vcl.ComCtrls,
Vcl.ExtCtrls,
System.Variants,
typeDATA,
Global_ID_Data,
OfflineProcess,
vektor,
CopyToClipboardTextQN ;
begin
TextCopyFromClipbrdQ( BXStat,Q,Nvux); // копирование из буфера
ShetModeli(BXStat ,BUX);
TextCopyToClipbrdN(BUX); // копирование в буфер
end.
Как создать ProjectOfflineProcess.
Запускаем Delphi и запускаем ProjectOfflineProcess.dproj.
Далее открываем OfflineProcess.PAS и корректируем этот файл «под себя». Файл содержит
три процедуры
procedure ShetModeli(BX:raX; var BUX:raX );
(вспомогательные procedure ShetRami( BX:raX; var Rr :vekt);
procedure ShetShini(BX:raX; Rressor:vekt; var Rs :vekt);)
Главная – это- procedure ShetModeli(BX:raX; var BUX:raX );
Остальные – вспомогательные, количество их - не ограничено. Они используются в основной
procedure ShetModeli. Структура procedure ShetModeli(BX:raX; var BUX:raX ); может быть
различной, главное – НАЗВАНИЕ и ПАРАМЕТРЫ ИЗМЕНЯТЬ НЕЛЬЗЯ.
Изм.
Кол.уч
№ док.
Подп.
05.2017
Дата
АЛГОРИТМ И ПРОГРАММА
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ
СЛОЖНЫХ СИСТЕМ
Лист
17
Инв
.
№
подл
.
Подп
.
и
дат
а
Взаи
.
инв
.
№
Формат А4
Копировал:
Лист
18
Что касается unit typeDATA; и unit Global_ID_Data. Первая – содержит описания типов
переменных, вторая – понятно из названия - названия глобальных переменных. Можно их
менять? Можно, желательно добавлять своими, не удаляя , которые есть.
Сохраняем.
Program ProjectOfflineProcess; Сама программа содержит 3 процедуры:
……..
begin
TextCopyFromClipbrdQ( BXStat,Q,Nvux); // копирование из буфера
ShetModeli(BXStat ,BUX);
TextCopyToClipbrdN(BUX); // копирование в буфер
end.
(Здесь - число входов Q; число выходов Nvux;)
Как видим, процедура счёта процесса ShetModeli(BXStat ,BUX);
входит в program ProjectOfflineProcess;
Кладём в папку подготовленные файлы
1. Название папки результатов счёта.rtf
2. Название входного вектора.rtf
3. Название выходного вектора.rtf
4. пусто.rtf
5. Равномерный шаг.rtf
6. Равномерное распределение.rtf
7. Нормальный закон.rtf
8. beta-распределение.rtf
9. Гамма-распределение.rtf
Кладём файлы TYPEDATA.PAS и VEKTOR.PAS,
Global_ID_Data.pas, OfflineProcess.PAS (счёт
модели).
Файл TYPEDATA.PAS
Содержит unit typeDATA – где приводятся описания типов переменных. Там же приведены
переменные типа const, предельные значения которых равны
QmaxM=1000; // размерность входного вектора
nNvuxM=100; // размерность выходного вектора
wmaxM =100; // число интервалов для гистограммы
NomerZM=6; // число законов для входного вектора
Эти значения определяют границы массивов в unit Global_ID_Data;
Чтобы изменить границы массивов (размерности векторов) надо задать новые значения
QmaxM и NvuxM (допустимо только в меньшую сторону). Число интервалов для
построения гистограммы WvuxM можно не изменять, значение WvuxM =100 достаточно,
чтобы перекрыть возможные требования.
Изм.
Кол.уч
№ док.
Подп.
05.2017
Дата
АЛГОРИТМ И ПРОГРАММА
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ
СЛОЖНЫХ СИСТЕМ
Лист
18
Инв
.
№
подл
.
Подп
.
и
дат
а
Взаи
.
инв
.
№
Формат А4
Копировал:
Лист
19
ЛИТЕРАТУРА
1. Михайлов Г.А. Некоторые вопросы теории методов Монте-Карло, Новосибирск,
1974г.
2. Г. Корн и Т. Корн, Справочник по математике для научных работников и
инженеров., М.,1968г.
3. Р.Курант, Краткий курс дифференциального и интегрального исчисления,
т.2,изд.»Наука», Москва 1970г.
Изм.
Кол.уч
№ док.
Подп.
05.2017
Дата
АЛГОРИТМ И ПРОГРАММА
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ
СЛОЖНЫХ СИСТЕМ
Лист
19
Инв
.
№
подл
.
Подп
.
и
дат
а
Взаи
.
инв
.
№
Формат А4
Копировал:
Лист
20
Скриншоты программы
В качестве примера приведен вариант ОТЛАДКА, при ВЫХ=ВХ=2: