Построение имитационной модели функционирования системы

Рассмотрев графики законов распределения безотказности подсистем и системы в целом можно сделать вывод: при работе системы меньше 2 часов на безотказность системы наибольшее влияние оказывают подсистемы 4, 5 и 6, т.е. преобладает действие равномерного распределения вероятности безотказной работы системы. При дальнейшей эксплуатации вероятность больше подчинена нормальному и экспоненциальному ра

спределению, которому соответствуют подсистемы 1, 2, 3 и 7.

функционирование система имитационная модель

Список литературы

1. Емельянов А.А. и др. Имитационное моделирование экономических процессов: Учеб. пособие / А.А. Емельянов, Е.А. Власова, Р.В. Дума; Под ред. А.А. Емельянова. - М.: Финансы и статистика, 2002. - 368 с : ил.

2. Гмурман В.Е. Руководство к решению задач по теории вероятностей и математической статистике: Учеб. пособие для студентов втузов.- 3-е изд., перераб. и доп.-М.: Высш. Школа, 2007. - 400 с., ил.

3. Гмурман В.Е. Теория вероятностей и математическая статистика Изд. 4-е, доп. Учеб. пособие для студентов втузов. М., «Высш. Школа», 2009. 368 с., илл.

4. Вентцель Е.С. Теория вероятностей, М., «Наука», 2010 г., 576 стр. с илл

Приложение. Исходный код

import java.text.DecimalFormat;

import java.util.ArrayList;

/**

* @author Sannikiv Igor Olegovich

*/

public class imep extends distribution

{

static int maxN = 3000;

static int maxT = 3000;

static DecimalFormat df = new DecimalFormat("0.0000");

static DecimalFormat prc = new DecimalFormat("0.00'%'");

static ArrayList<Double> results = new ArrayList<Double>();

static ArrayList<Boolean> successResults = new ArrayList<Boolean>();

/** так красивее) */

static int t1 = 0;

static int t2 = 1;

static int t3 = 2;

static int t4 = 3;

static int t5 = 4;

static int t6 = 5;

static int t7 = 6;

/** массив со значениями */

static double[] tArray = new double[7];

/** число реализаций случайного процесса */

static int Nt = 0;

/** время работы системы */

static int tStart = 0;

static int tEnd = 0;

/**

* @param args

*/

public static void main(String[] args)

{

// получаем число Nt

while (Nt == 0)

{

System.out.print("Enter the count of realizations of the random process Nt [1-" + maxN + "]: ");

String s = System.console().readLine();

if(isNumder(s, maxN))

Nt = Integer.parseInt(s);

}

// получаем число tStart

while (tStart == 0)

{

System.out.print("Enter the time interval \'Start\' [1-" + maxT + "]: ");

String s = System.console().readLine();

if(isNumder(s, maxT))

tStart = Integer.parseInt(s);

}

// получаем число tEnd

while (tEnd == 0)

{

System.out.print("Enter the time interval \'End\' [1-" + maxT + "]: ");

String s = System.console().readLine();

if(isNumder(s, maxT))

tEnd = Integer.parseInt(s);

}

if(tStart >= tEnd)

System.exit(2);

for(int i = tStart; i <= tEnd; i++)

{

/** счётчик числа успехов */

double success = 0;

for(int j = 0; j < Nt; j++)

{

generateBlockData();

// printBlockData(j);

boolean isSuccess = isSuccessful();

successResults.add(isSuccess);

if(isSuccess)

success++;

}

double fail = 1.0D - success / Nt; // вероятность отказа системы на i часу работы

// список с результатами вероятности отказа для каждого i часа

results.add(fail);

}

double noFailPercent = 100.D - average(results) * 100;

System.out.println("\nThe probabilities of system failure from \'" + tStart + "\' to \'" + tEnd + "\' hours:\n" + results);

System.out.println("The probability of failure-free operation: " + prc.format(noFailPercent));

}

static void generateBlockData()

{

tArray[t4] = Distribution(1.0D, 29.0D, DISTRIBUTIONS.UNIFORM); // 4 закон - Равномерное распределение (a = 1, b = 29)

tArray[t5] = Distribution(2.0D, 14.0D, DISTRIBUTIONS.UNIFORM); // 5 закон - Равномерное распределение (a = 2, b = 14)

tArray[t3] = Distribution(3.0D, 16.0D, DISTRIBUTIONS.NORMAL); // 3 закон - Нормальное распределение (sigma = 3 часа, m = 16 часов)

tArray[t7] = Distribution(2.0D, 14.0D, DISTRIBUTIONS.NORMAL); // 7 закон - Нормальное распределение (sigma = 2 часа, m = 14 часов)

tArray[t1] = Distribution(1.0D, 20.0D, DISTRIBUTIONS.EXPONENTIAL); // 1 закон - Экспоненциальное распределение (gamma = 1/20)

tArray[t2] = Distribution(1.0D, 10.0D, DISTRIBUTIONS.EXPONENTIAL); // 2 закон - Экспоненциальное распределение (gamma = 1/10)

tArray[t6] = Distribution(2.0D, 18.0D, DISTRIBUTIONS.SYMMETRIC_TRAGNGLE); // 6 закон - Симметричное треугольное распределение (c = 2, d = 18)

}

/**

* Возвращает среднее значение элемента из списка чисел <code>numbers</code>

*/

static double average(ArrayList<Double> numbers)

{

double summ = 0.0D;

for(double n : numbers)

summ += n;

return summ / numbers.size();

}

/**

* Возвращает, распределенную по равномерному закону, вероятность безотказной работы системы

*/

static double probability(ArrayList<Boolean> testResult)

{

double s = 0.0D;

for(boolean b : testResult)

if(b)

s++;

return s / testResult.size();

}

/**

* Возвращает <code>true</code> если цепь работает

*/

static boolean isSuccessful()

{

// Получаем 7 равномерно распределенных на [0,1] случайных числа

double[] yArray = new double[7];

for(int i = 0; i < 7; i++)

yArray[i] = rnd();

boolean b1 = tArray[t1] >= yArray[t1] ? true : false;

boolean b2 = tArray[t2] >= yArray[t2] ? true : false;

boolean b3 = tArray[t3] >= yArray[t3] ? true : false;

boolean b4 = tArray[t4] >= yArray[t4] ? true : false;

boolean b5 = tArray[t5] >= yArray[t5] ? true : false;

boolean b6 = tArray[t6] >= yArray[t6] ? true : false;

boolean b7 = tArray[t7] >= yArray[t7] ? true : false;

// Проверяем условия работоспособности цепи

if((b1 || b2) && b3 && (b4 || b5 || b6))

Страница:  1  2  3 


Другие рефераты на тему «Экономико-математическое моделирование»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы