Решение задачи повышения надежности резервирования с помощью эволюционного моделирования
Надежность резервирования компонентов стендовой информационно-управляющей системы. Экспоненциальное распределение времени до отказа. Алгоритм решения задачи выбора вариантов резервирования компонентов стендовой информационно-управляющей системы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 16.06.2012 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
for i := 0 to (L div 2) - 1 do
begin
t1 := random(L);
t2 := random(L);
if random(101)/100 <= Pcros then
begin
CrPt := random (N);
for j := 0 to CrPt-1 do
begin
TempPopCr.Individs[2*i][j]:=TempPop.Individs[t1][j];
TempPopCr.Individs[2*i+1][j]:=TempPop.Individs[t2][j];
end;
for j := CrPt to N-1 do
begin
TempPopCr.Individs[2*i][j]:=TempPop.Individs[t2][j];
TempPopCr.Individs[2*i+1][j]:=TempPop.Individs[t1][j];
end;
end
else
for j := 0 to N-1 do
begin
TempPopCr.Individs[2*i][j]:=TempPop.Individs[t1][j];
TempPopCr.Individs[2*i+1][j]:=TempPop.Individs[t2][j];
end;
end;
if L mod 2 <> 0 then
for j := 0 to N-1 do
TempPopCr.Individs[L-1][j]:=TempPop.Individs[t1][j];
end;
procedure MutantPopulation (var TempPop: TPopulation);
var i,j: integer;
num: integer;
begin
{for i := 0 to L-1 do
for j := 0 to N-1 do
if random(101)/100 <= Pmut then
TempPop.Individs[i][j] := random(3) + 1; }
for i := 1 to L-1 do
if random(101)/100 <= Pmut then
for j := 1 to N-1 do
if random(101)/100 <= Pmut then
TempPop.Individs[i][j] := random(3) + 1;
end;
function SumTxX (var Indiv: TIndivid): real;
var
j: integer;
begin
result := 0;
for j := 0 to N-1 do
case Indiv[j] of
1: result := result + 1/T[j];
2: result := result + 2/3/T[j];
3: result := result + 6/5/T[j];
end;
end;
procedure FixPopulation (var TempPop: TPopulation);
var i, index: integer;
begin
for i := 0 to L-1 do
while SumTxX(TempPop.Individs[i]) > 1/Tavg do
begin
index := random (N);
if TempPop.Individs[i][index] = 3 then dec(TempPop.Individs[i][index],random(2)+1)
else if TempPop.Individs[i][index] = 1 then inc(TempPop.Individs[i][index])
end;
end;
procedure InitTavg;
var j: integer;
temp: real;
begin
temp := 0;
for j := 0 to N-1 do
temp := temp + 1/T[j];
Tavg := 1/temp;
end;
procedure InitRecord;
var i: integer;
begin
for i := 1 to RecQuantity do
begin
Rec[i].S := -9999999;
Rec[i].P := -9999999;
Rec[i].Quantity := 0;
end;
end;
function VectorIsHere (var RecEl: TRecElement; var Indivs: TIndivid): boolean;
var i,j,k: integer;
raznitsa: boolean;
begin
result := false; /// вектора нет
for i := 0 to RecEl.Quantity -1 do
begin
raznitsa := false;
for j := 0 to N-1 do
if RecEl.Solutions[i][j] <> Indivs[j] then
begin
raznitsa := true;
break;
end;
result := result or not raznitsa;
if result then break;
end;
end;
procedure AddToRecord (var TempPop: TPopulation);
var i,j,k,q,g: integer;
begin
for i := 0 to L-1 do
for k := 1 to RecQuantity do
begin
g := 0;
if (TempPop.Rank[i] >=1) and (TempPop.Rank[i] < 2) then //в рекорд идут недоминируемые решения
Begin //если вектор доминирует
if ((TempPop.Fitness[i].S >= Rec[k].S) and (TempPop.Fitness[i].P > Rec[k].P))
or ((TempPop.Fitness[i].S > Rec[k].S) and (TempPop.Fitness[i].P >= Rec[k].P)) then
begin
rec[k].S := TempPop.Fitness[i].S;
rec[k].P := TempPop.Fitness[i].P;
SetLength (rec[k].Solutions, 1);
rec[k].Quantity := 1; //остальные подтереть
SetLength (rec[k].Solutions[0], N);
for j := 0 to N-1 do
rec[k].Solutions[0][j] := TempPop.Individs[i][j];
RefreshNum := 0;
//подтирание
for g := k+1 to RecQuantity do
if ((TempPop.Fitness[i].S >= Rec[g].S) and (TempPop.Fitness[i].P > Rec[g].P))
or ((TempPop.Fitness[g].S > Rec[k].S) and (TempPop.Fitness[i].P >= Rec[g].P)) then
begin
Rec[g].S := -9999999;
Rec[g].P := -9999999;
Rec[g].Quantity := 0;
end;
break;
end
else //если вектор равен. то добавляем еще одно возможное решение
if (TempPop.Fitness[i].S = Rec[k].S) and (TempPop.Fitness[i].P = Rec[k].P) then
begin
if not VectorIsHere (Rec[k], TempPop.Individs[i]) then
begin
inc(rec[k].Quantity);
SetLength(rec[k].Solutions, rec[k].Quantity);
SetLength (rec[k].Solutions[rec[k].Quantity-1], N);
for j := 0 to N-1 do
rec[k].Solutions[rec[k].Quantity-1][j] := TempPop.Individs[i][j];
RefreshNum := 0;
end ;
break;
end
else if (TempPop.Fitness[i].S <= Rec[k].S) and (TempPop.Fitness[i].P <= Rec[k].P) then
break
End;
end;
end;
procedure CopyPopulation (var PopFrom: TPopulation; var PopInto: TPopulation);
var i,j: integer;
begin
for i := 0 to L-1 do
begin
PopInto.Rank[i] := PopFrom.Rank[i];
PopInto.Fitness[i].S := PopFrom.Fitness[i].S;
PopInto.Fitness[i].P := PopFrom.Fitness[i].P;
for j := 0 to N-1 do
begin
PopInto.Individs[i][j] := PopFrom.Individs[i][j];
end;
end;
end;
procedure InitRec;
begin
SetLength (Rec, RecQuantity + 1);
end;
procedure EraseRec;
begin
Rec := nil;
end;
procedure InitInputArrays;
begin
SetLength(P,N);
SetLength(T,N);
SetLength(S,N);
SetLength(G,N);
end;
procedure EraseInputArrays;
begin
P := nil;
T := nil;
S := nil;
G := nil;
end;
END.
Размещено на Allbest.ru
Подобные документы
Методы решения задачи оптимального резервирования технической системы. Решение задачи методами неопределенных множителей Лагранжа и динамического программирования. Построение оптимальной схемы системы при нагруженном резервировании ее элементов.
лабораторная работа [31,5 K], добавлен 10.06.2009Логическая организация информационной системы специального назначения, её состав и задачи. Назначение комплекса программ "Эксплуатационное обслуживание" и его компонентов. Архитектура подсистемы автоматического резервирования данных пользователей.
дипломная работа [1,5 M], добавлен 13.04.2014Построение графика изменения вероятности безотказной работы системы согласно структурной схемы. Порядок определения процентной наработки технической системы, обеспечение ее увеличения за счет повышения надежности элементов, структурного резервирования.
контрольная работа [482,9 K], добавлен 12.05.2009Увеличение надежности информационных систем с помощью резервирования и повышения вероятности безотказной работы элементов. Применение кластеризации как альтернативы симметричным мультипроцессорным системам по производительности и коэффициенту готовности.
курсовая работа [401,9 K], добавлен 18.06.2015Характеристики и оценка значения, а также роль и значение компьютерных систем бронирования и резервирования на современном рынке. Зарубежные и российские системы, используемые в данной сфере, их сравнительное описание, анализ преимуществ и недостатков.
презентация [2,0 M], добавлен 17.11.2015Классификация автомобильных мехатронных модулей по функциональному назначению. Анализ особенностей архитектуры сетевого интерфейса бортовой информационно–управляющей системы. Исследование основных топологических схем мультиплексных систем автомобиля.
дипломная работа [1,6 M], добавлен 26.07.2017Влияние на надежность системы числа резервных блоков, интенсивности восстановления, интенсивности отказов, интенсивности отказов при облегченном режиме работы. Показатели надежности при нагруженном резервировании. Вероятность безотказной работы системы.
курсовая работа [1,4 M], добавлен 06.08.2013Функциональная схема узла информационной управляющей системы, параметры ее функциональных элементов. Выбор стандартной схемы в качестве нелинейного преобразователя. Определение погрешностей каналов ввода сигналов. Погрешность и коэффициент передачи.
реферат [331,1 K], добавлен 25.12.2014Методы построения графика изменения вероятности безотказной работы системы от времени наработки в диапазоне снижения вероятности до нужного уровня. Определение процентного числа наработки технической системы. Анализ структурного резервирования элементов.
контрольная работа [831,3 K], добавлен 26.04.2010Обоснование выбора метода проектирования и инструментальных средств для разработки программного средства и базы данных. Требования к эргономике и технической эстетике. Разработка алгоритмов приложения. Руководство пользователя. Безопасность труда.
дипломная работа [2,9 M], добавлен 17.10.2014