Исследование связности ячеистых сетей и разработка алгоритмов имитационного моделирования
Детерминированный и вероятностный подходы к оценке живучести сетей. Анализ моделей гибели и вероятности связности сетей. Табличное представление результатов вычислений и построение графических зависимостей в программе, написанной на языке Object Pascal.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 03.09.2013 |
Размер файла | 2,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
//Form1.Memo1.Append(''+inttostr(d[i]));
end;
end;
function anton2:integer;
var uze: array[0..13] of boolean;
str,sum:string;
i,j,k,kf:integer;
begin
for i:=0 to 13 do uze[i]:=false;
//smez3:=smez;
//Memo1.Append(anton1(0));
sum:='';
kf:=0;
for i:=0 to nversh-1 do begin
if not uze[i] then begin str:=anton1(i);
if str<>'' then for j:=1 to Length(str) do uze[StrToInt(str[j])]:=true;
kf:=kf+Length(str)*(Length(str)-1);
sum:=sum+' '+str;
end;
end;
anton2:=kf;
end;
Программный код расчета гибели сети детерминированным способом при атаке на узлы
procedure TForm1.Button12Click(Sender: TObject);
var i,ig,i7,j,n,g,g2,h,tek,pred,kk,p:integer;
html: TIpHtml;
ms:TMemoryStream;
MyString:AnsiString;
pr:real;
koef: array[0..40] of integer;
koef2: array[0..40] of integer;
s,str,ps,vr:string;
new:boolean;
res: Word;
// для графика,которого нет
kff:real;
maxk:integer;
begin
kostgraph:=0; // -1
nraz:=2;
prev.x:=0;
n:=0;
h:=1;
kk:=0;
for i:=0 to 40 do begin
koef[i]:=0;
koef2[i]:=0;
end;
for i:=0 to nversh-1 do begin // заполнение массива вершин
dug[h]:=IntToStr(i);
h:=h+1;
end;
n:=h-1;
Label2.Caption:='r='+inttoStr(n);
Label3.Caption:='n='+inttoStr(nversh);
str:='';
kk:=0;
res:=1;
if n>17 then begin // ограничение
res := MessageDlg('Данная процедура может занять более '+FloattoStr(power(2,(n-17)))+' минут. Продолжить?', mtInformation, [mbOk, mbCancel], 0);
end;
if res<>2 then begin
for i:=1 to (1 shl n)-1 do begin
for j:=1 to n do if(i and(1 shl(j-1)))>0 then
begin
str:=str+dug[j];
end;
if true then begin //length(str)
g2:=1;
smez3:=smez; // дублируем исходную матрицу
for g:=1 to round(length(str)) do begin // удаление вершин
For i7:=0 To nversh Do begin
smez3[StrtoInt(str[g]),i7]:=-1;
smez3[i7,StrToInt(str[g])]:=-1;
end;
end;
//ShowMessage(str+' '+inttostr(connect));
//if (length(str)/4)=2 then Memo1.Append(str+' '+inttostr(connect));
koef[round(length(str))]:=koef[round(length(str))]+Length(jivnew);
koef2[round(length(str))]:=koef2[round(length(str))]+1;
//Memo1.Append('anton:'+IntToStr(anton2));
if round(length(str))>kk then kk:=round(length(str));
end;
str:='';
end;
end;
for i:=1 to kk do vr:=vr+InttoStr(koef[i])+' '+InttoStr(i)+'+';
Memo1.Append(vr);
if not Otch.Checked then StringGrid1.ColCount:=2;
if Otch.Checked then StringGrid1.ColCount:=notch+2;
StringGrid1.Cells[0,0]:='Количество изымаемых вершин';
StringGrid1.Cells[1+notch,0]:=bukv[notch]+')';
StringGrid1.Cells[0,1]:='0';
StringGrid1.Cells[1+notch,1]:=IntToStr(0); // костыли
//koef[kk]:=0;
maxk:=0; // для графика
for i:=1 to 10 do begin //нафиг эти костыли!
if koef2[i]<>0 then begin
pr:=0;
pr:=koef[i]/koef2[i];
StringGrid1.Cells[0,i+1]:=floattostr(i);
StringGrid1.Cells[1+notch,i+1]:=Format('%.3n',[1-(pr/nversh)]); //вывод в таблицу
maxk:=maxk+1;
end
else StringGrid1.Cells[1+notch,i+1]:='0';
end;
if otch.Checked then begin /// отчет!!
form[notch]:=MyString;
notch:=notch+1;
//Image1.Picture.SaveToFile(IntToStr(notch)+'.bmp');
jpg.Assign(Image1.Picture.Bitmap);
jpg.CompressionQuality:= 100;
jpg.SaveToFile(IntToStr(notch)+'.jpg');
if notch=6 then Button6.Enabled:=false;
end;
end;
function connect:integer;
var
b:array[0..25]of boolean;//список просмотренных вершин
d:array[0..25] of longint;//кротчайшие расстояния
q, i, j, m, v,n: integer;
s:string;
begin
//Ввод данных
n:=nversh-1;
q := 0; //начальная вершина
if (q < 1) or (q > n) then q := 1;
for i := 0 to n do
for j := 0 to n do
//Расчет
fillchar(b,sizeof(b),0);
fillchar(d,sizeof(d), 10000);
d[q] := 0;//расстояние до начальной вершины
for i:=0 to n do
begin
m := 1000;
for j := 0 to n do
if ( (d[j] <= m) and (not b[j]) ) then
begin
m:=d[j];
v:=j;
end;
b[v] := true;
for j := 0 to n do
if ((smez3[v,j]<>-1)and (not b[j]) and (d[v]+smez3[v,j]<d[j])) then
d[j]:=d[v]+smez3[v,j];
end;
connect:=0;
for i := 0 to n do begin
if d[i]>nversh then begin
connect:=connect+1;
end;
end;
end;
Программный код построения графических зависимостей при гибели сетей
procedure TForm1.Button2Click(Sender: TObject);
var i,j,nox,noy,XI,Yi:integer;
xxx,xxx1:real;
Rect: TRect;
Points: Array[0..3] of TPoint;
begin
Image2.Canvas.Brush.Color:=clWhite; //присваиваем кисти цвет формы.
Image2.Canvas.FillRect(0,0,Width,Height); //заливаем Image выбранным цветом кисти.
Image2.Canvas.Pen.Width:=1;
Image2.Canvas.Pen.Color:=clBlack;
Image2.Canvas.Line(25,Image2.Height-15,Image2.Height-5,Image2.Height-15); // горизонтальная палка ох
Image2.Canvas.Line(Image2.Height-5,Image2.Height-15,Image2.Height-15,Image2.Height-11); // стрелочка
Image2.Canvas.Line(Image2.Height-5,Image2.Height-15,Image2.Height-15,Image2.Height-19); // ->
Image2.Canvas.Line(25,Image2.Height-15,25,10); // вертикальная палка оу
Image2.Canvas.Line(25,10,29,20); // cтрелка
Image2.Canvas.Line(25,10,21,20); // ^
Image2.Canvas.Font.Size:=7;
nox:=10;
noy:=10; // кол-во меток по Оу
//noy:=maxoy;
// nox:=maxoy;
{ длина оси отступ } // черточки и цифры по осям
for i:=0 to nox do begin
Image2.Canvas.TextOut(trunc((Image2.Height-45)/nox)*i+25,Image2.Height-10,Format('%.2n',[i/10]));
Image2.Canvas.Line(trunc((Image2.Height-45)/nox)*i+25,Image2.Height-10,trunc((Image2.Height-45)/nox)*i+25,Image2.Height-20); // черточки |
end;
for i:=0 to noy do begin
Image2.Canvas.TextOut(5,Image2.Height-10-trunc((Image2.Height-45)/noy)*i,Format('%.2n',[i/10]));
Image2.Canvas.Line(20,Image2.Height-15-trunc((Image2.Height-45)/noy)*i,30,Image2.Height-15-trunc((Image2.Height-45)/noy)*i);
end;
Image2.Canvas.Pen.Color:=clGray;
// серые полоски
for i:=1 to nox do Image2.Canvas.Line(trunc((Image2.Height-45)/nox)*i+25,Image2.Height-15,trunc((Image2.Height-45)/nox)*i+25,10); // полосочки |
for i:=1 to noy do Image2.Canvas.Line(25,Image2.Height-15-trunc((Image2.Height-45)/noy)*i,Image2.Height-15,Image2.Height-15-trunc((Image2.Height-45)/noy)*i);
Image2.Canvas.Font.Size:=10;
Image2.Canvas.TextOut(30,0,'d(Sp)');
Image2.Canvas.TextOut(Image2.Height,Image2.Height-15,'dпр');
Image2.Canvas.Pen.Width:=2;
Image2.Canvas.Pen.Mode := pmMask;
for j:=1 to StringGrid1.ColCount-1 do begin // по столбцам
Image2.Canvas.Pen.Color:=Colores[j mod 7];
Image2.Canvas.Brush.Color:=Colores[j mod 7];
for i:=2 to StringGrid1.RowCount-1 do begin // по строчкам
if StringGrid1.Cells[0,i]<>'' then begin { FloatToStr(10*(i-1)/skokan(j)) Grx(StringGrid1.Cells[0,i-1])}
Memo1.Append(StringGrid1.Cells[0,i]+' / '+InttoStr(skokan(j)));
xxx:=StrToFloat(StringGrid1.Cells[0,i-1])/skokan(j);
xxx1:=StrToFloat(StringGrid1.Cells[0,i])/skokan(j);
if Grx1(FloatToStr(xxx1))<Image2.Height then begin //Grx1(StringGrid1.Cells[j,i])<Image2.Height-50
Figur(Grx1(FloatToStr(xxx1)),Gry1(StringGrid1.Cells[j,i]),j);
Image2.Canvas.Line(Grx1(FloatToStr(xxx)),Gry1(StringGrid1.Cells[j,i-1]),Grx1(FloatToStr(xxx1)),Gry1(StringGrid1.Cells[j,i]));
//if xxx1=1 then break;
end;
end;
end;
Image2.Canvas.Line(Image2.Height+20,25*j,Image2.Height+30,25*j);
Figur(Image2.Height+25,25*j,j);
Image2.Canvas.Pen.Mode := pmCopy;
Image2.Canvas.Brush.Color:=clWhite;
Image2.Canvas.TextOut(Image2.Height+35,25*j-7,bukv[j-1]+' '+mnbu[j-1]);
end;
end;
procedure Figur(x:integer;y:integer;n:integer) ; // отрисовка фигур
var x1,x2,y1,y2:integer;
xyp: array[1..4] of TPoint;
begin
x1:=x-4;
x2:=x+4;
y1:=y-4;
y2:=y+4;
with Form1.Image2.Canvas do begin
Brush.Style := bsSolid;
case n of
1:EllipseC(x,y,4,4); // не залитый круг
2:Rectangle(x-4,y-4,x+4,y+4); // квадрат
3:begin // ромб
xyp[1].x:=x1; xyp[1].y:=Round((y1 + y2) / 2);
xyp[2].x:=Round((x1 + x2) / 2); xyp[2].y:=y1;
xyp[3].x:=x2; xyp[3].y:=Round((y1 + y2) / 2);
xyp[4].x:=Round((x1 + x2) / 2); xyp[4].y:=y2;
Polygon(xyp);
end;
4:begin // треугольник
xyp[1].x:=x; xyp[1].y:=y1;
xyp[2].x:=x1; xyp[2].y:=y2;
xyp[3].x:=x2; xyp[3].y:=y2;
xyp[4].x:=x2; xyp[4].y:=y2;
Polygon(xyp);
end;
5:begin // перевернутый треугольник
xyp[1].x:=x1; xyp[1].y:=y1;
xyp[2].x:=x2; xyp[2].y:=y1;
xyp[3].x:=x; xyp[3].y:=y2;
xyp[4].x:=x; xyp[4].y:=y2;
Polygon(xyp);
end;
6:begin
line(x,y1,x,y2);
line(x1,y,x2,y);
end;
end;
end;
end;
function Grx(x:string): integer; // перевод координат
begin
Grx:=trunc((Form1.Image2.Height-47)*StrToFloat(x)/maxdox)+25;
end;
function Gry(y:string): integer; // перевод координат
begin
Gry:=Form1.Image2.Height-15-trunc((Form1.Image2.Height-47)*StrToFloat(y)/maxdoy);
end;
function skokan(col:integer): integer; // к
var i:integer;
firstnull:boolean; // в начале могут быть нули которые нам нужны
begin
skokan:=0;
firstnull:=true;
for i:=2 to Form1.StringGrid1.RowCount-1 do begin
if (StrToFloat(Form1.StringGrid1.Cells[col,i])=0) and firstnull then skokan:=skokan+1;
if StrToFloat(Form1.StringGrid1.Cells[col,i])<>0 then begin
skokan:=skokan+1;
firstnull:=false;
end;
end;
skokan:=skokan;
end;
function Gry1(y:string): integer;
begin
Gry1:=Form1.Image2.Height-15-trunc((Form1.Image2.Height-47)*StrToFloat(y));
end;
function Grx1(x:string): integer;
begin
Grx1:=trunc((Form1.Image2.Height-47)*StrToFloat(x))+25;
end;
Программный код вывода отчета во внешний файл
procedure TForm1.Button1Click(Sender: TObject);
var i,j,n:integer;
begin
n:=StringGrid1.ColCount-1;
Memo1.Clear;
Memo1.Append('<html>');
Memo1.Append('<head>');
Memo1.Append('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
Memo1.Append('</head>');
Memo1.Append('<body>');
Memo1.Append('<TABLE>');
for i:=1 to n do Memo1.Append('<TD>'+bukv[i-1]+')<img src="'+IntToStr(i)+'.jpg" WIDTH=100 HEIGHT=100 /></TD>');
Memo1.Append('</TABLE>');
Memo1.Append(('Теоретические зависимости:'));
Memo1.Append('<TABLE>');
for i:=0 to 2 do Memo1.Append('<TR><TD>'+bukv[i*2]+')'+form[i*2]+'</TD><TD>'+bukv[(i*2)+1]+')'+form[(i*2)+1]+'</TD><TR>');
Memo1.Append('</TABLE>');
Memo1.Append('Вероятности связности');
Memo1.Append('<center>');
SGridToHtml(StringGrid1, Memo1, 1);
Memo1.Append('</center>');
//Image2.Picture.SaveToFile('graph.bmp');
Memo1.Append(('График'));
jpg.Assign(Image2.Picture.Bitmap);
jpg.CompressionQuality:=100;
jpg.SaveToFile('graph.jpg');
Memo1.Append('<center>');
Memo1.Append('<TD><img src="graph.jpg" WIDTH=536 HEIGHT=448 /></TD>');
Memo1.Append('</center>');
Memo1.Append('</body>');
Memo1.Append('</html>');
Memo1.Lines.SaveToFile('1.html');
Otch.Checked:=false;
end;
procedure SGridToHtml(SG: TStringgrid; Dest: TMemo; BorderSize: Integer);
const
Colores:array[0..6] of TColor=($000000, $ef9c00, $ffff00, $008000, $0000ff, $000080, $ff00ff);
var
i, p: integer;
SStyle1, SStyle2, Text: string;
begin
//Dest.Clear;
// Dest.Lines.Add('<html>');
Dest.Lines.Add('<body>');
Dest.Lines.Add(' <table border="' + IntToStr(BorderSize) + '" width="' +
IntToStr(SG.Width) + '" height="' + IntToStr(SG.Width) + '">');
for i := 0 to SG.RowCount - 1 do
begin
Dest.Lines.Add(' <tr>');
for p := 0 to SG.ColCount - 1 do
begin
SStyle1 := '';
SStyle2 := '';
if fsbold in SG.Font.Style then
begin
SStyle1 := SStyle1 + '<b>';
SStyle2 := SStyle2 + '</b>';
end;
if fsitalic in SG.Font.Style then
begin
SStyle1 := SStyle1 + '<i>';
SStyle2 := SStyle2 + '</i>';
end;
if fsunderline in SG.Font.Style then
begin
SStyle1 := SStyle1 + '<u>';
SStyle2 := SStyle2 + '</u>';
end;
Text := sg.Cells[p, i];
if Text = '' then Text := ' ';
Dest.Lines.Add(' <td width="' + IntToStr(sg.ColWidths[p]) +
'" height="' + IntToStr(sg.RowHeights[p]) +
'"><font color="#' + ColorToHTMLHexColor(Colores[p mod 7]) +
'" face="' + SG.Font.Name + '">' + SStyle1 +
Text + SStyle2 + '</font></td>');
end;
Dest.Lines.Add(' </tr>');
end;
Dest.Lines.Add(' </table>');
// Dest.Lines.Add('</body>');;
// Dest.Lines.Add('</html>');end;
Размещено на Allbest.ru
Подобные документы
Понятие сетей и связи их компонентов. Характеристики и структура сетей. Основные модели, описывающие поведение сетей. Проектирование и реализация взвешенных сетей: требования к интерфейсу, выбор среды разработки, структура приложения. Анализ результатов.
курсовая работа [1,1 M], добавлен 29.06.2012Понятие и общая характеристика Е-сетей, их функциональные особенности и назначение. Правила функционирования элементарных сетей. Порядок взаимодействия МИКРОСИМ и СВПИМ. Технология интеграции Windows и DOS-приложений, оценка их конкурентоспособности.
дипломная работа [238,5 K], добавлен 19.06.2010Понятие сетей Петри, их применение и возможности. Сетевое планирование, математические модели с использованием сетей Петри. Применение сетевых моделей для описания параллельных процессов. Моделирование процесса обучения с помощью вложенных сетей Петри.
курсовая работа [1,0 M], добавлен 17.11.2009- Разработка алгоритмов и программ для определения сходства семантических сетей на основе их сложности
Семантические сети как модели представления знаний. Основные методы определения сходства графовых моделей систем. Метод решения задач определения сходства семантических сетей на основе их сложности. Разработка алгоритмов и их программная реализация.
дипломная работа [1,3 M], добавлен 17.12.2011 Архитектура и топологии IP-сетей, принципы и этапы их построения. Основное оборудование корпоративных IP сетей магистрального и локального уровней. Маршрутизация и масштабируемость в объединенных сетях. Анализ моделей проектирования кампусных сетей.
дипломная работа [2,0 M], добавлен 10.03.2013Эффективность построения и использования корпоративных информационных систем. Описание программных систем имитационного моделирования сетей. Обозначения и интерфейс программы "Net-Emul". Использование маршрутизатора (роутера) как сетевого устройства.
контрольная работа [1,9 M], добавлен 22.12.2011Центральные магистрали передачи данных. Улучшение параметров мультисервисной сети за счет использования имитационного моделирования. Сети с трансляцией ячеек и с установлением соединения. Коммутация в сети Ethernet. Многоуровневая модель протоколов.
курсовая работа [2,3 M], добавлен 25.06.2014Создание компьютерных сетей с помощью сетевого оборудования и специального программного обеспечения. Назначение всех видов компьютерных сетей. Эволюция сетей. Отличия локальных сетей от глобальных. Тенденция к сближению локальных и глобальных сетей.
презентация [72,8 K], добавлен 04.05.2012Диагностический анализ изучения алгоритмов обучения нейронных сетей "с учителем". Сбор входных и выходных переменных для наблюдений и понятие пре/пост процессирования. Подготовка и обобщение многослойного персептрона, модель обратного распространения.
курсовая работа [249,3 K], добавлен 22.06.2011Анализ средств построения динамически масштабируемых ВС. Разработка алгоритма, обеспечивающего устойчивость функционирования информационно-вычислительных сетей в условиях воздействий компьютерных атак, использующих фрагментированные пакеты сообщений.
дипломная работа [3,8 M], добавлен 21.12.2012