Построение имитационной модели функционирования системы
Рассмотрев графики законов распределения безотказности подсистем и системы в целом можно сделать вывод: при работе системы меньше 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))
Другие рефераты на тему «Экономико-математическое моделирование»:
Поиск рефератов
Последние рефераты раздела
- Выборочные исследования в эконометрике
- Временные характеристики и функция времени. Графическое представление частотных характеристик
- Автоматизированный априорный анализ статистической совокупности в среде MS Excel
- Биматричные игры. Поиск равновесных ситуаций
- Анализ рядов распределения
- Анализ состояния финансовых рынков на основе методов нелинейной динамики
- Безработица - основные определения и измерение. Потоки, запасы, утечки, инъекции в модели