Оптимизация работы блока выполнения запросов в автоматизированной информационной системе
Если множество П содержит более одного элемента, необходимо, применив два различных метода скаляризации векторного критерия W (метод идеальной точки и линейную свертку), с учетом весовых коэффициентов rD и rQ, получить для каждого элемента множества П значение скалярного критерия оптимальности S, для удобства заменив вначале в координатной записи W параметр D на D/Dmax, где Dmax — наибольший… Читать ещё >
Оптимизация работы блока выполнения запросов в автоматизированной информационной системе (реферат, курсовая, диплом, контрольная)
— 0 ;
Курсовая работа по дисциплине: «Системный анализ»
на тему: «Оптимизация работы блока выполнения запросов в автоматизированной информационной системе»
1. Введение
2. Постановка задачи:
— Оптимизация программы «диспетчер-кодировщик» в блоке предварительной обработки запросов
— Определение характера и интенсивности информационного потока, поступающего на вход блока выполнения запросов
— Оптимизация работы БВЗ
3. Исходные данные
4. Решение
— Выполнение первого этапа
— Выполнение второго этапа
— Выполнение третьего этапа
— Вывод
5. Листинг программы
6. Литература
1 Введение В настоящее время инженеры, проектирующие и эксплуатирующие автоматизированные информационные системы (АИС), сталкиваются с рядом проблем, связанных со все возрастающей сложностью этих систем, ужесточением требований к их характеристикам, необходимостью учета целого комплекса условий, определяющих процесс функционирования системы. Положение усугубляется наличием существенной неопределенности при формулировании целей (многокритериальность, недостаточные знания об окружающей среде и т. п.) и возросшей ценой, которую приходится платить за непредусмотренные отклонения качества проекта от оптимального.
В этих условиях особое значение приобретают методы системного анализа и комплексного подхода к проектированию сложных систем, позволяющие в значительной мере преодолеть указанные трудности.
Данная курсовая работа преследует цель привить студентам — будущим специалистам в области автоматизированных информационных систем — навыки системного мышления, комплексного подхода к решению сложных проблем и помочь им практически реализовать свои знания из курса «Системный анализ и исследование операций» в следующих направлениях:
Ш построение детерминированных и стохастических моделей;
Ш проведение вычислительного эксперимента;
Ш выполнение многокритериальной оптимизации;
Ш освоение современных пакетов научных программ и применение языков программирования высокого уровня в процессе проведения вычислительного эксперимента;
Ш грамотное и качественное оформление отчета о результатах исследований путем применения соответствующих компьютерных средств.
2 Постановка задачи
v Оптимизация программы «диспетчер-кодировщик» в блоке предварительной обработки запросов В некоторой автоматизированной информационной системе (АИС) поток запросов представляет собой последовательность «пачек» информации, каждая объемом Н байт. Эта информация направляется вначале в блок предварительной обработки, попадая в пять независимых модулей А1, А2, А3, А4, А5, и распределяется между ними в количествах а1, а2, а3, а4 и а5 байт соответственно (а1 + а2 + … + а5 = Н). После использования в блоках А1 — А5 каждая пачка информации специальной программой «диспетчер-кодировщик» (ДК) направляется в другую группу модулей В1, В2, В3, В4, В5 так, чтобы в каждый из этих модулей попало ровно b1, b2, b3, b4 и b5 байт информации соответственно (b1 + b2 + … + b5 = H).
На рисунке 1 показан один из возможных вариантов распределения информации между модулями типа, А и модулями типа В.
диспетчер кодировщик обработка запрос Рис. 1 Блок предварительной обработки запросов
— 0 ;
Прежде чем направить какую-то часть информации из модуля Аi в модуль Вj, программа ДК перекодирует ее, затрачивая время сij на перекодировку одного байта информации. Передача (с предварительной кодировкой) информации от модулей группы, А к модулям группы В происходит последовательно: сначала от модуля А1 к какому-то модулю группы В, затем к другому модулю той же группы и так до тех пор, пока А1 не очистится; далее точно так же освобождается от своего запаса информации модуль А2 и так до тех пор, пока все пять модулей группы, А не очистятся.
Необходимо установить, как следует распределить информационные потоки между отдельными модулями группы, А и группы В, чтобы общее время «перекачки» всей информации между этими группами было минимальным (именно такое — оптимальное — распределение и должно быть предусмотрено проектировщиком программы ДК).
v Определение характера и интенсивности информационного потока, поступающего на вход блока выполнения запросов После использования в модулях В1 — В5 (определение характера запросов, их сортировка по трудоемкости выполнения, регистрация и т. д.) вся информация направляется единым потоком (пуассоновский стационарный поток интенсивностью) в блок выполнения запросов БВЗ (рис.2).
Рис.2Блок выполнения запросов.
Каждая пачка формируется из k последовательных сигналов, появляющихся в пределах отрезка времени Y в случайные моменты, равномерно распределенные на интервале времени (0, Y). Между этими сигналами установлена определенная «дисциплина ожидания», а именно: сигнал, пришедший первым, ожидает последнего в течение времени u (u < Y) и если k-тый сигнал приходит вовремя, пачка формируется. Если же после прихода первого сигнала и до прихода последнего проходит время, большее, чем u, первый сигнал «уходит» и вся пачка теряется, не доходя до БВЗ.
Необходимо определить характер и интенсивность потока информационных пачек, достигающих БВЗ.
v Оптимизация работы БВЗ Блок выполнения запросов состоит из N независимых друг от друга, равнодоступных для потока запросов модулей. Каждый модуль при получении запроса выполняет его в течение случайного времени, имеющего показательное распределение со средним значением Т.
Запрос, заставший все модули занятыми, встает в очередь при условии, что в ней находится не более m ожидающих обслуживания запросов; в противном случае запрос теряется («отказывается от обслуживания»). Для фирмы, эксплуатирующей АИС, такие ситуации (потеря запроса) при многократном их повторении чреваты в будущем потерей заказчика, вероятность которой пропорциональна вероятности отказа от обслуживания запроса Ротк.
Каждый выполненный запрос приносит фирме, эксплуатирующей АИС, определенный доход. По требованию заказчика, плата за выполнение запроса уменьшается по мере увеличения времени его выполнения.
С другой стороны, если какой-то модуль БВЗ в данный момент не занят выполнением запроса, то он участвует в обслуживании других, вспомогательных операциях. Неучастие в выполнении этих операций приносит фирме определенные убытки.
С учетом всех указанных обстоятельств, совокупный средний доход в единицу времени D от эксплуатации АИС может быть записан в количественном виде следующей формулой:
D = (d — e1 * Wсист) * A — e2 * n3/2, где:
d — доход, который приносит фирме один выполненный запрос;
e1 — штраф за единицу времени обслуживания одного запроса;
Wсист — среднее время пребывания запроса в АИС;
A — абсолютная пропускная способность блока выполнения запросов (среднее число выполняемых запросов в единицу времени);
e2 — убытки от неучастия в течение единицы времени одного модуля БВЗ в выполнении вспомогательных операций;
n — количество модулей БВЗ, непосредственно занятых выполнением запросов;
Необходимо:
Выбрать оптимальное количество nопт модулей БВЗ, предназначенных для непосредственного выполнения запросов, приняв во внимание одновременно два критерия оптимальности (направление оптимизации по обоим критериям — максимизация):
1) D — средний доход в единицу времени от эксплуатации АИС
2) Q — относительную пропускную способность АИС (среднюю долю выполняемых запросов) с весами (коэффициентами относительной важности) rD и rQ соответственно (rD + rQ = 1).
3 Исходные данные
I часть:
Для первой части задания числовые данные берутся из т.н. «магического квадрата», то есть квадрата 5×5, в каждой клетке которого стоит натуральное число i (1 <= i <= 25), причем, квадрат обладает следующими свойствами:
1) все числа в клетках разные;
2) сумм чисел в каждой строке, каждом столбце, а также по главной и побочной диагоналям одинакова.
Правило выбора индивидуальных данных следующее.
Столбец запасов информации аi байт (i = 1, 2, …, 5) и строка потребностей в ней bj байт (j = 1, 2, …, 5) соответствуют столбцу и строке квадрата, на пересечении которых находится число, совпадающее с номером варианта.
Затраты времени сij на перекодировку и передачу единицы информации от блока Аi к блоку Bj получаются из соответствующих элементов квадрата gij по формуле:
cij = (gij + f1(No)) x 10−3 сек
f1(No)=NB
«Магический квадрат» Вариант № 17
II часть:
Для второй части задачи исходные данные следующие:
= 100 сек-1
k = 10
u/Y = 0,93 + f2(No)
f2(No)=0.001*NB
III часть:
Для третьей части исходные данные таковы:
d = 100 + f3(No) (руб)
e1 = 1000 + f3(No) (руб/сек)
e2 = 50 + f3(No) (руб/сек)
T = 0,08 сек
N = 10
m = 3
rD = 0,5 + f4(No)
rQ = 1 — rD
f3(No)=0,1*NB
f4(No)=(-1)N*0,01*NB
4 Решение.
Как следует из постановки задачи, она состоит из трех частей и, следовательно, решение задачи необходимо провести в три этапа.
v Выполнение Первого этапа:
На первом этапе следует:
1) Формализовать работу блока предварительной обработки запросов как детерминированную модель транспортной задачи линейного программирования, где роль «поставщиков» играют модули А1 — А5 с запасами информации а1 — а5, а роль «потребителей» — модули В1 — В5 с потребностями b1 — b5 соответственно.
2) Одним из известных методов (северо-западного угла, минимального элемента, аппроксимации Фогеля), а именно тем, который даст план меньшей стоимости, определить начальный опорный план.
3) Методом потенциалов найти оптимальное распределение информации от модулей группы, А к модулям группы B.
Метод Северо-западного угла:
Алгоритм решения:
Распределяют переменные x11 минимальное количество ресурса допускаемое ограничениями на спрос и объем производства. Вычеркивается строка или столбец, где это ограничение выполнено. Спрос и объем производства в не вычеркнутых строках производства корректируется. Далее приписывается минимальное значение xij по объему и спросу производства в ближайшей не вычеркнутой ячейке. Процесс повторяется пока остается не вычеркнутой одна строка или один столбец. Количество базисных или заполненных ячеек в любом методе должно быть равно m+n-1.
W=(11*28+4*21+2*34+5*22+10*30+3*18+7*31+14*19+9*32)*10−3= =1695*10−3 (сек).
Метод Минимальной стоимости:
Алгоритм решения:
Во всей таблице ищется ячейка с минимальной стоимостью и ей приписывается минимальное значение по спросу и объему производства. Вычеркивается строка или столбец, где это ограничение выполнено. Корректируется. Ищется ячейка с минимальной стоимостью в строке или столбце. Процесс завершается, если не вычеркнута одна строка или столбец.
W=(2*24+9*20+4*21+11*34+5*22+1*30+10*18+2*40+21*19)*10−3= =1485*10−3 (сек).
Метод аппроксимации Фогеля:
Алгоритм решения:
1) вычислить штраф для каждой строки или столбца. Вычитая наименьший элемент строки или столбца, из следующих за ним по величине из этой же строки или столбца;
2) в строке или столбце с самым большим штрафом выбирается переменная с самой низкой стоимостью. Приписывается ей минимальное значение по спросу и объему производства.
Вычеркивается строка или столбец, где ограничение выполнение. Корректируется. Строка или столбец с нулевым объемом производства или спросом в дальнейшем вычислении не участвует.
3) если остается не вычеркнутой строка или столбец с положительным объемом производства и спроса найти базисные переменные используя метод минимальной стоимости. Вычислить новые значения штрафов для невычеркнутых строк или столбцов и перейти к пункту 2.
4 4 4 4 4 4 4 — ;
4 4 — - - - - - ;
4 4 4 4 4 8 4 4 30
9 — - - - - - - ;
4 4 9 — - - - - ;
6 1 6 6 6
7 1 6 6 6
6 1 6 18 6
6 1 6 — 6
6 1 6 — 6
6 1 6 — ;
6 — 6 — ;
34 — 30 — ;
— - 30 — ;
W=(2*24+9*20+4*21+13*34+3*22+1*30+10*18+2*23+21*19)*10−3= =1055*10−3 (сек).
Решение методом аппроксимации Фогеля дало план меньшей стоимости. Проверим его на оптимальность.
Метод потенциалов:
V1= 28 | V2= 16 | V3= 24 | V4= 12 | V5= 20 | |||
U1= 0 | — 25 | — 25 | |||||
U2= -7 | — 20 | — 25 | — 20 | — 20 | |||
U3=6 | — 20 | ||||||
U4= -6 | — 5 | — 25 | — 25 | — 25 | |||
U5= 7 | — 5 | — 5 | — 5 | ||||
Для каждой базисной переменной потенциалы должны удовлетворять условию Ui+Vj=Cij, U1=0.Оценки для не базисных переменных рассчитываются следующим образом:
.
Если все оценки для небазисных переменных отрицательны, то решение оптимальное.
U1=0
Найдем оценки для базисных переменных:
U1+ V3=24 V3=24;
U1+ V5=20 V5=20;
U3+ V3=30 U3=6;
U3+ V1=34 V1=28;
U3+ V2=22 V2=16;
U2+ V1=21 U2=-7;
U4+ V3=18 U4=-6;
U5+ V2=23 U5=7;
U5+ V4=19 V4=12;
Найдем не базисные переменные:
;; ;; ;; ;; ;; ;; ;;; .
Т.к. все оценки для небазисных переменных отрицательны, то решение оптимальное.
Проверим полученные результаты в Excel:
v Выполнение второго этапа:
На втором этапе необходимо:
1) Найти вероятность потери информационной пачки по пути ее следования от блока предварительной обработки запросов к блоку выполнения запросов.
2) Определить характер и интенсивность потока запросов, поступающих на вход БВЗ.
1. Вероятность того, что пачка сформируется
R= при u Y,
где k — кол-во последовательных сигналов;
u — интервал времени ожидания сигнала;
y — интервал времени между появлением двух последовательно поступающих сигналов.
k=10, =0,93+0,001*17=0,947;
Тогда =0,905.
Вероятность потери информационной пачки: R=1-P => P=1-R=1−0,905=0,095.
2. Определим интенсивность потока запросов, поступающих на вход БВЗ по формуле:
исх = 100 сек-1- интенсивность Пуассоновского стационарного потока.
.
v Выполнение третьего этапа:
На третьем этапе следует:
1)Рассмотреть БВЗ как систему массового обслуживания типа M/M/n с ограничением по длине очереди, то есть как n-канальную СМО (канал — это модуль блока БВЗ) с простейшим потоком заявок (заявка — это запрос) и показательным законом обслуживания заявки.
2)Полагая количество модулей, занятых обслуживанием запросов в БВЗ, n = 1, 2, …, N, для каждого из этих N вариантов рассчитать средний доход в единицу времени D от эксплуатации АИС и относительную пропускную способность АИС Q, рассматривая в дальнейшем параметры D и Q как компоненты векторного критерия оптимальности W = (D, Q), а пару D (n), Q (n) для каждого n как допустимое решение.
3)В множестве допустимых решений выделить паретооптимальное подмножество П.
4)Если множество П окажется одноэлементным, то значение n = nопт, соответствующее этому единственному элементу, и будет искомым оптимальным решением.
5)Если множество П содержит более одного элемента, необходимо, применив два различных метода скаляризации векторного критерия W (метод идеальной точки и линейную свертку), с учетом весовых коэффициентов rD и rQ, получить для каждого элемента множества П значение скалярного критерия оптимальности S, для удобства заменив вначале в координатной записи W параметр D на D/Dmax, где Dmax — наибольший доход среди всех паретооптимальных решений.
То решение, для которого величина S окажется наибольшей в обоих методах скаляризации, и будет искомым оптимальным значением n = nопт числа модулей, непосредственно занятых обслуживанием запросов:
nопт = arg max { S (n) }/Пэn
Если один метод скаляризации даст одно оптимальное решение, а второй — другое, оставляем эти два значения n (n1 и n2) для предъявления ЛПР, который должен сделать окончательный выбор, руководствуясь дополнительными, внешними по отношению к данной задаче, соображениями.
Совокупный средний доход в единицу времени D от эксплуатации АИС может быть записан в количественном виде следующей формулой:
D =, где:
d — доход, который приносит фирме один выполненный запрос;
e1 — штраф за единицу времени обслуживания одного запроса;
Wсист — среднее время пребывания запроса в АИС;
A — абсолютная пропускная способность блока выполнения запросов (среднее число выполняемых запросов в единицу времени);
e2 — убытки от неучастия в течение единицы времени одного модуля БВЗ в выполнении вспомогательных операций;
n — количество модулей БВЗ, непосредственно занятых выполнением запросов;
d=100+0,1*17=101,7 (руб);
e1 =1000+0,1*17=1001,7 (руб/сек);
e2 =50+0,1*17=51,7(руб/сек);
rD=0,5+(-1)17*0,01*17=0,33;
rQ = 1 — rD = 1 — 0,33 = 0,67;
Чтобы найти совокупный средний доход в единицу времени
необходимо определить среднее время пребывания запроса в АИС (wсист) и абсолютную пропускную способность БВЗ (А).
где Lсист = Lоч + k, а получена на втором этапе =, в свою очередь
где m = 3 и n = 10, , ;
Т = 0,08; ,
; ;
Для определения А:, где Q — относительная пропускная способность: .
Для вычисления D и Q используем написанную для этого программу. В множестве допустимых решений выделим подмножество — парето-оптимальное множество.
Решение х принадлежит множеству Парето, если оно принадлежит исходному множеству допустимых решений (Х), и в Х не существует решения, которое было бы по всем критериям не хуже данного и хотя бы по одному лучше.
При помощи программы найдем Парето-оптимальное множество.
Парето-оптимальное множество на графике выделено серыми кружочками.
Множество Парето содержит более одного элемента, следовательно необходимо среди этих элементов выбрать наиболее оптимальный, для получения которого можно применить методы скаляризации векторного критерия W (метод линейной свертки и метод идеальной точки).
Метод линейной свертки:
— есть искомое оптимальное значение n=nопт числа модулей, непосредственно занятых обслуживанием запросов. Результаты выведены в таблицу на форме.
Метод идеальной точки:
Ищем такое оптимальное решение — точку в пространстве критериев, которая находилась бы ближе всего к идеальной точке (1;1): (Wопт, W*) = Smin
Методом идеальной точки получили nопт = arg min {S (n)} = 6. Результаты выведены в таблицу на форме.
v Вывод:
В результате применения методов идеальной точки и метода линейной свертки были получены два разных решения. Поэтому оставляем оба значения n (n1 и n2) и того, чтобы сделать окончательный выбор в пользу одного из методов нужно руководстваться дополнительными, внешними по отношению к данной задаче, соображениями.
5 Листинг программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Menus, Grids, ExtCtrls, TeeProcs, TeEngine,
Chart, Series;
type
TForm1 = class (TForm)
StringGrid1: TStringGrid;
SpeedButton2: TSpeedButton;
Edit2: TEdit;
Label6: TLabel;
Chart1: TChart;
Series1: TPointSeries;
StringGrid2: TStringGrid;
Label7: TLabel;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
Series2: TPointSeries;
GroupBox1: TGroupBox;
SpeedButton1: TSpeedButton;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Series3: TPointSeries;
procedure SpeedButton1Click (Sender: TObject);
procedure SpeedButton2Click (Sender: TObject);
procedure SpeedButton3Click (Sender: TObject);
procedure SpeedButton4Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
w, h, U_Y, R, P, k, Lisx, Ro, T, Hi, e1, e2,Dmin, Rd, Rq, max1: real;
m, buf: integer;
Nomer:integer;
max:real;
Po: array[1.10] of real; //начальная вероятность
Pnm: array[1.10] of real; //вероятность отказа
kn: array[1.10] of real; //среднее число занятых каналов
Q: array[1.10] of real; //относительная пропускная способность АИС
A: array[1.10] of real; //абсолютная пропускная способнсть БВЗ
Loch: array[1.10] of real; //длина очереди
Lsis: array[1.10] of real; //интенсивность потока
WSys: array[1.10] of real; //время пребывания запроса в системе
D: array[1.10] of real; //средний доход в единицу времени от эксплуатации АИС
trop: array of real;
trop1: array of real;
POptD: array[1.10] of real; //парето оптимальное множество среднего дохода в единицу времени
S: array[1.10] of real;
function Fact (h:integer):integer;
function Okr (X: real): string;
implementation
uses Math, Unit2, Unit3;
{$R *.dfm}
function Fact (h:integer):integer; // ф-ция факториал
begin
if h=0 then Fact:=1 else Fact:=h*Fact (h-1);
end;
function Okr (X: real): string; // ф-ция округления
begin
Okr:=FloatToStr (trunc (X*10 000)/10 000);
end;
procedure TForm1. SpeedButton1Click (Sender: TObject);
var
min, Sro, drob: real;
max:real;
i, l, j, g: integer;
Nomer:integer;
begin
Nomer:=17;
Lisx:=100;
k:=10; //число последовательных запросов
m:=3; //число мест в очереди
T:=0.08; //среднее время обслуживания одного запроса
U_Y:=0.93+0.001*Nomer;
e1:=1000+0.1*Nomer; //штраф за единицу времени обслуживания одного запроса
e2:=50+power (-1,Nomer)*0.01*Nomer; //убытки от неучастия в течение единицы времени одного модуля БВЗ выполнении вспомогательных операций
Dmin:=100+0.1*Nomer;
R:=k*power (U_Y, k-1)*(1-((k-1)/k)*U_Y);//вычисляем вероятность того, что пачка сформируется
P:=1-R; //вычисляем вероятность того, что пачка не сформируется
Label4.Caption:='P='+FloatToStrF (P, ffGeneral, 3,3);
Label5.Caption:=FloatToStrF (Lisx*R, ffGeneral, 3,2)+' сек -1';
//нахождение множества допустимых значений
Lisx:=100*R; //интенсивность потока запросов
Ro:=T*Lisx; //вероятность отказа
for i:=1 to 10 do
begin
Hi:=Ro/i;
Sro:=0;
for l:=0 to i do
begin
Sro:=Sro+(power (Ro, l)/Fact (l));
end;
Po[i]: =power ((Sro+((power (Ro, i+1)*(1-power (Hi, m)))/(i*Fact (i)*(1-Hi)))),-1);
Pnm[i]: =((power (Ro, i+m))/(power (i, m)*Fact (i)))*Po[i];
Q[i]: =(1-Pnm[i]);// относительная пропускная способность
kn[i]: =Ro*Q[i];
A[i]: =Lisx*Q[i];
Loch[i]: =power (Ro, i+1)*Po[i]*(1-(m+1)*power (Hi, m)+m*power (Hi, m+1))/(i*Fact (i)*power ((1-Hi), 2));
Lsis[i]: =Loch[i]+kn[i];
WSys[i]: =Lsis[i]/Lisx;
D[i]: =(Dmin-e1*WSys[i])*A[i]-e2*power (i, 3/2); //средний доход в единицу времени
StringGrid1.Cells[i, 0]: ='i = '+IntToStr (i);
StringGrid1.Cells[i, 1]: =Okr (Q[i]);
StringGrid1.Cells[i, 2]: =Okr (D[i]);
StringGrid1.Cells[0,1]: ='Q[i]';
StringGrid1.Cells[0,2]: ='D[i]';
StringGrid1.Cells[0,3]: ='D[i]/Dmax';
max := D[1]; //нахождение max эл-та в массиве D[i]
for j := 2 to 10 do
if D[j] > max then max := D[j];
edit2.Text:=Okr (max);
end;
for g:=1 to 10 do
begin
drob:=D[g]/max;
StringGrid1.Cells[g, 3]: =Okr (drob);
end;
end;
procedure TForm1. SpeedButton2Click (Sender: TObject);//показание графика
var jj, ii, kk: integer;
i, j: integer;
begin
setlength (trop, 10);
setlength (trop1,10);
for jj:=low (trop) to high (trop) do
trop[jj]: =strtofloat (StringGrid1.Cells[jj+1,3]);
for kk:=low (trop1) to high (trop1) do
trop1[kk]: =strtofloat (StringGrid1.Cells[kk+1,1]);
Series1.Clear;
for ii:=0 to 9 do
Series1.AddXY (trop[ii], trop1[ii], '')
end;
procedure TForm1. SpeedButton3Click (Sender: TObject); //поиск парэтто множества и вывод его на график
var i, jj, ii, kk: integer;
begin
buf:=1;
POptD[1]: =D[10];
for i:=9 downto 1 do
begin
if D[i]>=POptD[buf] then
begin
inc (buf);
POptD[buf]: =D[i];
end;
end;
max1:=POptD[1];
for i:=1 to buf do
if POptD[i]>=max1 then max1:=POptD[i];
StringGrid2.Cells[0,1]: ='Q[i]';
StringGrid2.Cells[0,2]: ='D[i]/Dmax';
for i:=1 to buf do
begin
StringGrid2.Cells[i, 0]: ='i = '+inttostr (10-buf+i);
StringGrid2.Cells[i, 2]: =Okr (POptD[buf+1-i]/max1);
StringGrid2.Cells[i, 1]: =Okr (Q[10-buf+i]);
end;
setlength (trop, buf);
setlength (trop1,buf);
for jj:=low (trop) to high (trop) do
trop[jj]: =strtofloat (StringGrid2.Cells[jj+1,2]);
for kk:=low (trop1) to high (trop1) do
trop1[kk]: =strtofloat (StringGrid2.Cells[kk+1,1]);
Series2.Clear;
for ii:=0 to (buf-1) do
Series2.AddXY (trop[ii], trop1[ii], '');
Series3.AddXY (1,1);
end;
procedure TForm1. SpeedButton4Click (Sender: TObject); //реализация методов и вывод их на форму
var i: integer;
max2,min:real;
begin
Form3.Show;
//метод линейной свёртки
Rd:=0.5+power ((-1), 12)*0.01*Nomer;
Rq:=1-Rd;
for i:=1 to buf do
S[i]: =(POptD[buf+1-i]/max1)*Rd+(Q[10-buf+i]*Rq);
max2:=S[1];
for i:=1 to buf do
if S[i]>=max2 then max2:=S[i];
for i:=1 to buf do
if max2=S[i] then
Form3.Label12.Caption:='Метод линейной свертки:'+IntToStr (10-buf+i);
for i:=1 to buf do
Form3.StringGrid1.Cells[i, 0]: =okr (s[i]);
Form3.StringGrid1.Cells[0,0]: ='S[i]';
//метод идеальной точки
for i:=1 to buf do S[i]: =sqrt ((1-(POptD[buf+1-i]/max1))*(1-(POptD[buf+1-i]/max1))+(1-(Q[10-buf+i]*Rq))*(1-(Q[10-buf+i]*Rq)));
min:=S[1];
for i:=1 to buf do if S[i]<=min then min:=S[i];
for i:=1 to buf do if min=S[i] then
Form3.Label10.Caption:='Метод идеальной точки:'+IntToStr (10-buf+i);
for i:=1 to buf do
Form3.StringGrid2.Cells[i, 0]: =okr (s[i]);
Form3.StringGrid2.Cells[0,0]: ='S[i]';
end;
end.
1. Данилов Г. В. Лекции по дисципоине «Системный анализ».
2. Данилов Г. В. «Оптимизация работы блока выполнения запросов в автоматизированной информационной системе». -Ухта: УИИ, 1999.