Решение задачи повышения надежности резервирования

Дипломная работа - Математика и статистика

Другие дипломы по предмету Математика и статистика

/p>

 

 

Приведем ниже несколько примеров работы программы с рекомендуемыми параметрами.

 

Рис. 6. Примеры работы программы с рекомендуемыми параметрами

 

По рис. 6 видно, что ГА хорошо приближает Парето-оптимальное множество данной задачи, кроме, может быть, тех точек, которые близки к экстремуму по одной из целевой функции. Такие точки на практике и не рассматриваются, т.к. они дают либо очень малую вероятность работы без отказа, либо очень большую стоимость, что неприемлемо.

 

 

Заключение

 

В ходе проделанной работы была изучена проблема повышения надежности резервирования компонентов стендовой информационно-управляющей системы для проведения огневых испытаний жидкостных ракетных двигателей и разработано приложение, позволяющее быстро получать множество альтернативных решений при выборе способа резервирования компонентов системы. При реализации программы были использованы методы эволюционного моделирования, которые являются достаточно универсальными, простыми, и в то же время довольно неприхотливыми к условиям задачи. Для эффективности тестирования в программе была также реализована возможность получения множества всех возможных решений с помощью метода перебора. В ходе тщательного тестирования были выявлены оптимальные параметры работы генетического алгоритма, а также оценена его производительность: скорость работы алгоритма очень слабо зависит от размерности задачи, что, бесспорно, является очень хорошим свойством. Также стоит отметить, что множество решений, получаемое с помощью ГА, хорошо покрывает множество всех возможных решений, получаемое с помощью перебора, что, несомненно, является плюсом. Все это говорит о том, что генетические алгоритмы являются хорошим средством решения различных оптимизационных задач.

 

 

Список источников

 

1.Половко А.М., Гуров С.В. Основы теории надежности / СПб.: БХВ-Петербург, 2008.

2.Испытания жидкостных ракетных двигателей. Учеб. пособие для авиац. специальностей вузов под. ред. В.З. Левина - М.: Машиностроение, 1981.

.Львович Я.Е., Каширина И.Л., Генетический алгоритм решения многокритериальной задачи повышения надежности резервирования.

.Каширина И.Л. Введение в эволюционное моделирование / Воронеж, 2007.

 

 

Приложение А

 

Листинг программы

 

unit Unit1;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Grids, Unit2, TeEngine, ExtCtrls, TeeProcs, Chart, Series,, Math;= 4;= 100;= class(TForm)_N: TEdit;_N: TLabel;: TStringGrid;: TButton;: TMemo;: TButton;: TLabel;: TLabel;: TLabel;_L: TEdit;_Pmut: TEdit;_Pcross: TEdit;: TLabel;_RecQuantity: TEdit;: TChart;: TPointSeries;: TButton;: TPointSeries;FormCreate (Sender: TObject);Edit_NChange (Sender: TObject);Button1Click (Sender: TObject);Button3Click (Sender: TObject);FormResize (Sender: TObject);Button2Click (Sender: TObject);

{Private declarations}

{Public declarations};: TForm1;, time2: TDateTime;

{$R *.dfm}InitInputData; i, j: integer;

// Проверка введенных данных на корректность и инициализация

try;:= StrToInt (Form1. Edit_RecQuantity. Text);:= StrToInt (Form1. Edit_L. Text);:= StrToFloat (Form1. Edit_Pmut. Text);:= StrToFloat (Form1. Edit_Pcross. Text);(Pmut 1) or (G [i-1]<1) or (T [i-1]<=0) then;(Значения P, G или T введены некорректно);;;;;

ShowMessage (Введены некорректные данные);;

end;;TForm1. Button1Click (Sender: TObject);i, j, k: integer;: string;:= now;;;

// Создание начальной популяции:= 0;;;(Population);(TempPopulation);(TempPopulationCrossed);;(Population);(Population);

// ГА(Population, TempPopulation);(TempPopulation, TempPopulationCrossed);(TempPopulationCrossed);(TempPopulationCrossed);(TempPopulationCrossed);(TempPopulationCrossed, Population);(Population);(Population);(RefreshNum);RefreshNum = MaxRefreshNum;:= now;

// Вывод результатовk:= 1 to RecQuantity doRec[k].S <> -9999999 then. Lines. Add (=============================+IntToStr(k));. Lines. Add (S=+FloatToStr (-Rec[k].S));. Lines. Add (P=+FloatToStr (Rec[k].P));. AddXY (-Rec[k].S, rec[k].P, , clred);i:= 0 to Rec[k].Quantity-1 do:= ;j:= 0 to N-1 do:= str + IntTostr (Rec[k].Solutions[i] [j]);. Lines. Add(str);. Lines. Add (FloatToStr(SumTxX (Rec[k].Solutions[i])));;. Lines. Add (=============================);

// очистка памяти;;(Population);(TempPopulation);(TempPopulationCrossed);. Lines. Add (Время выполнения ген. алгоритма: +

FormatDateTime (hh:mm:ss:zz, time2-time1));;TForm1. Button2Click (Sender: TObject);

// перебор= 3; // кол-во вариантов резервирования

type= array of Tindivid;= array [1..3] of real; // 1 - S, 2 - P, 3 - T= array of TKrArr;, j, k: longint;: longint; // 3^N_1: real; // среднее время: TKrList; // массив S P T: TSolutionArray; // массив x1 x2… xN

NotDominated: boolean; // флаг недоминируемости

// инициализация начальных переменных

time1:= now;;:= round (power(3, N)) - 1;(Kr, max + 1);(X, max + 1);_1:= 0;i:= 0 to N-1 do

Tavg_1:= Tavg_1 + 1/T[i];

// задание матрицы всех возможных значений Хj:= 0 to max do // перебор на основе перевода чисел в троичную систему

// выделение памяти под xj(X[j], N);

// перевод числа в троичную систему

k:= j;

for i:= 0 to N-1 do[j] [N-i-1]:= (k - (k div base) * base) + 1;:= k div base;;

// вычисление значения критериев

Kr[j] [1]:= - GetS (X[j]);

Kr[j] [2]:= GetP (X[j]);

Kr[j] [3]:= SumTxX (X[j]);;

// на этот момент мы имеем массив всех комбинаций

// и массив соответствующих значений критерия

// вывести недоминируемые точки

for j:= 0 to max do(Kr[j] [3]=Kr[j] [2])) or

((Kr[i] [1]>=Kr[j] [1]) and (Kr[i] [2]>Kr[j] [2]))) and (Kr[i] [3]<=Tavg_1) then:= false;;;NotDominated then

// добавление на график. AddXY (-Kr[j] [1], Kr[j] [2], , clBlue);;:= now;;j:= 0 to max do[j]:= nil;:= nil;:= nil;. Lines. Add (Время выполнения алгоритма перебора: +

FormatDateTime (hh:mm:ss:zz, time2-time1));;TForm1. Button3Click (Sender: TObject);. Lines. Clear;. Clear;. Clear;;TForm1. Edit_NChange (Sender: TObject);N_old: integer;, j: integer;Edit_N. Text <> then_old:= N;:= StrToInt (Edit_N. Text);. RowCount:= N+1;i:= N_old+1 to N doj:= 1 to COlCount do. Cells [j, i]:= ;. Cells [0, i]:= IntToStr(i);;;;TForm1. FormCreate (Sender: TObject);i, j: integer;:= StrToInt (Edit_N. Text);. RowCount:= N+1;. Cells [0,0]:= i;. Cells [1,0]:= Pi;. Cells [2,0]:= Ti;. Cells [3,0]:= Si;. Cells [4,0]:= Gi;i:= 1 to N do. Cells [0, i]:= IntTo