на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Исследование структурной надежности методом статистического моделирования
p align="left">На анализируемой сети выбирается произвольный узел. Далее находят смежные ему узлы и соединяют с ним. Это происходит до тех пор, пока сеть не представится в виде одного узла - “точки” (в случае если, сеть связана) или множества узлов (если сеть не связана).

Разработанный на основе всего выше изложенного алгоритм программы, в общем виде, отобразим на рисунке 2.1. Опишем с начала переменные, используемые в этом алгоритме:

i, e и j - переменные используемые в циклах типа for - next основной процедуры расчета надежности сети;

PlasResult - хранит число благоприятных исходов;

x( ) - динамический массив, равномерно распределенных в интервале (0, 1) чисел;

Nnoi - хранит текущий номер испытания;

maxNnoi - хранит общее число испытаний;

PP - хранит значение вероятности события - сеть связна;

Imeny - хранит номер случайно выбранного узла;

S( ) - динамический массив, для хранения номеров смежных узлов;

Nnew - хранит информацию о наличии новых смежных вершин;

sngStartWork(1, 2) - массив дат начала и конца расчета надежности сети;

sngStartWorkSEC - хранит число секунд расчета надежности сети;

bar - промежуточная переменная для хранения текущего номера испытаний.

Рисунок 2.1 - Алгоритм расчета структурной надежности сети

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

Таблица 2.1 - Процедуры определения связности сети

Имя процедуры

Задача процедуры

VektStrok Nnew, Imeny, S, A

Соединение смежных узлов

SvjazNet Imeny, A, p

Проверка на единичность полученной

вектор-строки

FinishAnswer A, PlasResult, Imeny, p, S, Nnew

Вынесение решения о связности сети, проверка наличия новых смеж-ных узлов для формирования нового массива смежных узлов

Рисунок 2.2 - Алгоритм процедуры “ VektStrok ”

Рисунок 2.3 - Алгоритм процедуры “ SvjazNet ”

Рисунок 2.4 - Алгоритм процедуры “ FinishAnswer ”

2.2.2 Алгоритм интерфейсной части программы расчета надежности сети методом статистического моделирования

Приведем рисунок алгоритма программы интерфейса.

2.3 Разработка программы расчета структурной надежности методом

статического моделирования

2.3.1 Разработка расчетной части программы расчета структурной надежности сети

Option Explicit

Dim A (200, 200) As Single, p As Integer

Public maxNnoi As Single, flgstopuser As Boolean

Private Sub firstStepp (A( ) As Single, x( ) As Single)

Dim n As Integer

Dim i As Integer

Dim j As Integer

n = 1

For i = 1 To ((FrmSSN.kolvouzlov) - 1) '4

For j = i + 1 To (FrmSSN.kolvouzlov) '5

If A (i, j) > 0 Then

If x (n) < A (i, j) Then

A (i, j) = 1

Else

A (i, j) = 0

End If

n = n + 1

End If

A (j, i) = A (i, j)

Next j

Next i

End Sub

Private Sub VektStrok (Nnew, Imeny As Integer, S( ) As Integer, A( ) As Single)

Dim k As Integer

Dim j As Integer

For k = 1 To (FrmSSN.kolvouzlov)

If S (k) > 0 Then

For j = 1 To (FrmSSN.kolvouzlov)

A (Imeny, j) = A (Imeny, j) + A (k, j)

If A (Imeny, j) > 1 Then

A (Imeny, j) = 1

End If

Next j

End If

Next k

Nnew = 0

End Sub

Private Sub SvjazNet (Imeny As Integer, A( ) As Single, p As Integer)

Dim j As Integer

p = 1

For j = 1 To (FrmSSN.kolvouzlov)

If A (Imeny, j) = 0 Then

p = 0

Exit Sub

End If

Next j

End Sub

Private Sub FinishAnswer (A( ) As Single, PlasResult As Integer, Imeny As Integer, p _ As Integer, S() As Integer, Nnew As Integer)

Dim j As Integer

Dim Pm (1 To 6) As Integer

Dim Nbg As Integer, nUlvekt As Integer

If p <> 0 Then

PlasResult = PlasResult + 1

Exit Sub

End If

Nbg = 0

Nnew = 0

nUlvekt = 0

For j = 1 To (FrmSSN.kolvouzlov)

If A (Imeny, j) = 1 Then

Pm (j) = j

Else: nUlvekt = nUlvekt + 1

End If

Next j

If nUlvekt = (FrmSSN.kolvouzlov) Then

Exit Sub

End If

For j = 1 To (FrmSSN.kolvouzlov)

If Pm (j) <> S (j) Then

S (j) = Pm (j)

Nnew = Nnew + 1

End If

Next j

End Sub

Private Sub FormirNLmassWork ( )

Dim initm As Integer

For initm = 1 To FrmSSN.kolvolin

FrmSSN.numUZmu initm, FrmSSN.kolvouzlov, 2, na1, na2

A (na1, na2) = FrmSSN.UvmLN (initm)

A (na2, na1) = A (na1, na2)

Next initm

End Sub

Public Sub cmdrasch_workmod ( )

Dim i As Integer, j As Integer

Dim PlasResult As Integer, e As Integer

Dim x( ) As Single, C As Integer

Dim Nnoi As Integer

Dim PP As Currency, Imeny As Integer

Dim S ( ) As Integer

Dim Nnew As Integer

Dim sngStartWork (1, 1 To 2) As Date

Dim sngStartWorkSEC As Single, bar As Integer

frmBrWk.PrgBarWSind.Min = 0: frmBrWk.PrgBarWSind.Max = 100

frmBrWk.PrgBarWSind.Visible = False

frmBrWk.LblSwrE(1).Caption = 0

PlasResult = 0

ReDim Preserve x (FrmSSN.kolvolin)

ReDim Preserve S (FrmSSN.kolvouzlov)

Randomize

For Nnoi = 1 To maxNnoi

DoEvents

If MdlWorkSpase.flgstopuser = True Then Exit For

If Nnoi = 1 Then

sngStartWork(1, 1) = Now

sngStartWorkSEC = Timer

frmBrWk.LblSwrE(1).Caption = sngStartWork(1, 1)

End If

For e = 1 To FrmSSN.kolvolin

x (e) = Rnd

Next e

firstStepp A, x'1

Imeny = (((FrmSSN.kolvouzlov) - 1) * Rnd) + 1

S (Imeny) = Imeny

For j = 1 To FrmSSN.kolvouzlov

If A (Imeny, j) = 1 Then

S (j) = j

End If

Next j

VektStr:

VektStrok Nnew, Imeny, S, A'2

SvjazNet Imeny, A, p'3

FinishAnswer A, PlasResult, Imeny, p, S, Nnew'4

If Nnew <> 0 Then

GoTo VektStr

End If

For i = 1 To FrmSSN.kolvouzlov

S (i) = 0

For j = 1 To FrmSSN.kolvouzlov

A (i, j) = 0

Next j

Next i

bar = Nnoi

frmBrWk.PrgBarWSind.Value = ((bar / maxNnoi) * 100)

frmBrWk.PrgBarWSind.Visible = True

Next Nnoi

If MdlWorkSpase.flgstopuser = True Then Exit Sub

PP = (PlasResult / maxNnoi)

sngStartWorkSEC = (Timer - sngStartWorkSEC)

sngStartWork (1, 2) = Now: frmBrWk.LblSwrE(0).Caption = sngStartWork(1, 2)

UserFormVorkClosed sngStartWorkSEC, maxNnoi, PP, sngStartWork

End Sub

Private Sub UserFormVorkClosed (sngStartWorkSEC, maxNnoi, PP, sngStartWork)

Dim work As Integer, TimeWork As String

Dim bufchench1 As Date, bufchench2 As Currency

If sngStartWork (1, 1) <> sngStartWork (1, 2) Then

If (sngStartWork (1, 2) - sngStartWork (1, 1)) > sngStartWorkSEC _

And (sngStartWork (1, 2) - sngStartWork (1, 1)) < 1 Then GoTo 12

bufchench1 = (sngStartWork(1, 2) - sngStartWork(1, 1))

TimeWork = Str(bufchench1)

Else

12:

bufchench2 = sngStartWorkSEC

TimeWork = Str (0) & Str (bufchench2) & " секунды"

End If

work = MsgBox("Расчет структурной надежности закончен !" & vbCrLf & Chr$(13) & "Число испытаний : " & maxNnoi & vbCrLf & "Вероятность связности : " & PP & vbCrLf & "Расчет длился около : " & TimeWork, vbInformation + vbOKOnly, " ")

sngStartWork(1, 1) = 0: sngStartWork(1, 2) = 0

sngStartWorkSEC = 0: frmBrWk.PrgBarWSind.Value = 0

Unload frmBrWk

End Sub

2.3.2 Разработка интерфейсной части программы расчета структурной надежности сети

Интерфейсная часть программы состоит из четырех частей, а именно:

первая, основная часть, располагается в файле формы основного окна

“ FrmSSN ”;

следующая часть располагается в файле формы окна расчета структурной надежности “ frmBrWk ”;

третья часть программы находится в файле формы окна конфигурирования координатной сетки “ FrmPrWeb ”;

четвертая, последняя, часть программы - в файле формы окна ввода числовой характеристики выбранной линии “ FrmNwORsZ ”.

Приведем листинги данных частей, интерфейсной части программы расчета структурной надежности сети, в этом же порядке.

Первая часть

Option Explicit

Public kolvouzlov As Integer, needFRsave As Boolean

Public kolvolin As Integer

Dim znak As Boolean, zamok As Boolean

Dim x1 As Integer, y1 As Integer

Dim x2 As Integer, y2 As Integer

Dim MasKoLuZv(1 To 200, 1 To 5) As Single

Dim keeCH As Boolean

Dim deletealluz As Boolean, deletealllinsv As Boolean

Dim keeAB As Boolean, testimonial As Boolean

Dim testNyn As Boolean, change As Boolean

Dim mlinesSV(1 To 400, 1 To 10) As Single, SFALNAME As String

Const myORno As String = "sns"

Dim zapros As Boolean

Public poweb As Boolean

Public shwebx As Single, shweby As Single

Public bJampWeb As Boolean

Private Sub svayzy (x1, x2, y1, y2, iduzla, Index, mlinesSV, kolvolin)

Dim i As Integer, j As Integer

On Error GoTo metSVx

If deletealllinsv = True And kolvolin > 0 Then

FrmSSN.Enabled = False

FrmSSN.MousePointer = 3

For i = 1 To kolvolin

For j = 1 To 10

mlinesSV(i, j) = 0

Next j: Next i

kolvolin = 0

Else

For i = 1 To kolvolin

If mlinesSV(i, 1) = 0 Then

mlinesSV(i, 1) = iduzla: mlinesSV(i, 2) = Index

mlinesSV(i, 3) = x1: mlinesSV(i, 4) = y1

mlinesSV(i, 5) = x2: mlinesSV(i, 6) = y2

mlinesSV(i, 7) = 0

mlinesSV(i, 8) = 0: mlinesSV(i, 9) = 0 '-номера вершин (новые)

mlinesSV(i, 10) = 0 '-вес линии

Exit Sub

End If

Next i

End If

FrmSSN.Enabled = True

FrmSSN.MousePointer = 0

brcoutSVX:

Exit Sub

metSVx:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", vbCritical, "Error"

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.