Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GOS_na_5.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
953.48 Кб
Скачать

2. Специализированные языки (gpss, siman, slam).

С пециализированные языки представляют собой программное обеспечение, ориентированное на имитацию процессов. Это языки высокого уровня, в которых стандартные операции имитационного моделирования, такие как “создать объект”, “двигать”, “передать по условию”, “ожидать в течение”, "генерировать случайные числа" и т.д., представляют собой блоки в виде последовательностей команд на одном из универсальных языков. Поведение системы отображается последовательностью событий. Событием является начало или окончание какой либо операции. Процесс отображается не системой уравнений, а взаимодействием элементов модели Е1,...,Еn во времени и пространстве.

Спец языки написаны на универсальных языках. Динамика системы отображается взаимодействием элементов модели Е1,...,Еn во времени и пространстве.

Специализированные языки различаются способами учета времени, сложностью изменения структуры модели, способами проведения экспериментов.

Специализированные языки требуют специальной подготовки пользователя, который должен написать программу в терминах языка для конкретного объекта моделирования. Поэтому созданы языки компьютерной анимации, позволяющие отображать процесс имитационного моделирования на мониторе. Например, Proof Animation отображает на экране компьютера взаимодействие объектов системы по результатам моделирования. Оно может соединяться с различными специализированными языками имитации (GPSS).

3. Имитационные среды (Extend, gpss World, Anylogic)

Имитационные среды не требуют программирования в виде последовательности команд. Пользователь составляет модель, выбирая из библиотеки модули, и/или заполняет специальные бланки.

В современных системах имитационного моделирования автоматизированы процессы обработки данных, управления экспериментами, сравнения различных альтернатив. Существует возможность создания своих собственных блоков на встроенных универсальных языках.

Имитационная среда обеспечивает возможность визуализации процесса имитации и связи с инструментами компьютерного проектирования систем.

Моделирование ведется быстрее, но область приложения большинства систем имитации ограничена.

Требования, преимущества и недостатки программных средств моделирования

№ п/п

Требования

ПО

Универс. Яз.

Спец. Яз.

Имитац. Среды

1

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

0

1

2

2

Возможность продвигать модельное время либо по шагам, либо от события к событию

0

2

2

3

Способность генерировать случайные числа и работать со случайными переменными, распределенными по различным законам

0

2

2

4

Возможность построения моделей без аналитического описания динамики системы

0

2

2

5

Способность автоматически накапливать необходимые данные

0

2

2

6

Автоматизация процессов статистической обработки данных, управления экспериментом, оптимизации параметров

0

1

2

7

Возможность выявлять и регистрировать логические ошибки в модели

0

2

2

8

Широкая распространенность

2

1

0

9

Гибкость

2

1

1

10

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

2

2

2

11

Простота визуализации системы в соответствии с имитационной моделью

0

1

2

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

Цикл со счетчиком:

try

{

//Объявление переменных

double x1 = -10;

double x2 = 20;

double dx = 0.5;

double x = x1;

double y;

int count = Convert.ToInt32((x2 - x1) / dx);

//Обработка исключений

if (x2 < x1)

{

MessageBox.Show("Неверно указаны границы интервала", "Ошибка!", MessageBoxButtons.OK);

return;

}

else if (dx < 0)

{

MessageBox.Show("Указан неправильный шаг", "Ошибка!", MessageBoxButtons.OK);

return;

}

//Расчет функции

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

{

if (x >= 0)

{

y = Math.Pow(x, 2);

results.Text = results.Text + "x" + (i + 1) + " = " + Convert.ToString(x) + "; y" + (i + 1) + " = " + Convert.ToString(y) + "\r\n";

}

else if (-5 <= x & x < 0)

{

y = 1 / x;

results.Text = results.Text + "x" + (i + 1) + " = " + Convert.ToString(x) + "; y" + (i + 1) + " = " + Convert.ToString(y) + "\r\n";

}

else if (x < -5)

{

y = 3 * x;

results.Text = results.Text + "x" + (i + 1) + " = " + Convert.ToString(x) + "; y" + (i + 1) + " = " + Convert.ToString(y) + "\r\n";

}

x = x + dx;

}

}

catch (Exception exceptionObject)

{

MessageBox.Show(exceptionObject.ToString());

}

Цикл с предусловием:

try

{

// Объявление переменных

double x1 = -10;

double x2 = 20;

double dx = 0.5;

double x = x1;

double y;

//Индекс i здесь исключительно декоративная штука

int i = 0;

//Обработка исключений

if (x2 < x1)

{

MessageBox.Show("Неверно указаны границы интервала", "Ошибка!", MessageBoxButtons.OK);

return;

}

else if (dx < 0)

{

MessageBox.Show("Указан неправильный шаг", "Ошибка!", MessageBoxButtons.OK);

return;

}

//Расчет функции

while (x<=x2)

{

if (x >= 0)

{

y = Math.Pow(x, 2);

results.Text = results.Text + "x" + (i + 1) + " = " + Convert.ToString(x) + "; y" + (i + 1) + " = " + Convert.ToString(y) + "\r\n";

}

else if (-5 <= x & x < 0)

{

y = 1 / x;

results.Text = results.Text + "x" + (i + 1) + " = " + Convert.ToString(x) + "; y" + (i + 1) + " = " + Convert.ToString(y) + "\r\n";

}

else if (x < -5)

{

y = 3 * x;

results.Text = results.Text + "x" + (i + 1) + " = " + Convert.ToString(x) + "; y" + (i + 1) + " = " + Convert.ToString(y) + "\r\n";

}

x = x + dx;

i++;

}

}

catch (Exception exceptionObject)

{

MessageBox.Show(exceptionObject.ToString());

}

Цикл с постусловием:

//Преобразование введенных переменных

double x1 = -10;

double x2 = 20;

double dx = 0.5;

double x = x1;

double y;

//Индекс i здесь исключительно декоративная штука

int i = 0;

//Обработка исключений

if (x2 < x1)

{

MessageBox.Show("Неверно указаны границы интервала", "Ошибка!", MessageBoxButtons.OK);

return;

}

else if (dx < 0)

{

MessageBox.Show("Указан неправильный шаг", "Ошибка!", MessageBoxButtons.OK);

return;

}

//Расчет функции

do

{

if (x >= 0)

{

y = Math.Pow(x, 2);

results.Text = results.Text + "x" + (i + 1) + " = " + Convert.ToString(x) + "; y" + (i + 1) + " = " + Convert.ToString(y) + "\r\n";

}

else if (-5 <= x & x < 0)

{

y = 1 / x;

results.Text = results.Text + "x" + (i + 1) + " = " + Convert.ToString(x) + "; y" + (i + 1) + " = " + Convert.ToString(y) + "\r\n";

}

else if (x < -5)

{

y = 3 * x;

results.Text = results.Text + "x" + (i + 1) + " = " + Convert.ToString(x) + "; y" + (i + 1) + " = " + Convert.ToString(y) + "\r\n";

}

x = x + dx;

i++;

}

while (x <= x2);

}

catch (Exception exceptionObject)

{

MessageBox.Show(exceptionObject.ToString());

}

3. Байесовские сети доверия как средство разработки ЭС. Основные понятия и определения.

Байесовская сеть (или Байесова сеть, Байесовская сеть доверия) — это графическая вероятностная модель, представляющая собой множество переменных и их вероятностных зависимостей. Формально, байесовская сеть — это направленный ациклический граф, каждой вершине которого соответствует случайная переменная, а дуги графа кодируют отношения условной независимости между этими переменными. Таким образом, байесовские сети доверия (БСД) применяют для моделирования ситуаций, содержащих неопределённость. Для БСД иногда используется ещё одно название причинно-следственная сеть, в которой случайные события соединены причинно-следственными связями.

С оединения методом причин и следствий позволяют более просто оценивать вероятности событий. В реальном мире оценивание наиболее часто делается в направлении от “наблюдателя” к “наблюдению”, или от “эффекта” к “следствию”, которое более сложно оценить, чем направление “следствие –> эффект”, то есть в направлении от следствия.

Рис.6.1. Пример простейшей БСД.

Рассмотрим пример сети (рис.6.1), в которой вероятность пребывания вершины «e» в различных состояниях (ek) зависит от состояний (ci , dj) вершин «c» и «d» и определяется выражением:

где p(ek  ci, dj) – вероятность пребывания в состоянии ek в зависимости от состояний ci, dj. Так как события, представленные вершинами «c» и «d» независимы, то совместная вероятность равна их произведению: p(ek  ci , dj) = p(ci)  p(dj).

Рис.6.2. Двухуровневая БСД.

Рассмотрим пример более сложной сети (рис.6.2). Данный рисунок иллюстрирует условную независимость событий. Для оценки вершин «c» и «d» используются те же выражения, что и для вычисления p(ek), тогда:

Из этих выражений видно, что вершина «e» условно не зависит от вершин A1, A2, B1, B2, так как нет стрелок непосредственно соединяющих эти вершины.

Понятия БСД.

БСД — это направленный ациклический граф, обладающий следующими свойствами:

- каждая вершина представляет собой событие, описываемое случайной величиной, которая может иметь несколько состояний;

- все вершины, связанные с “родительскими” определяются таблицей условных вероятностей (ТУВ) или функцией условных вероятностей (ФУВ);

- для вершин без “родителей” вероятности её состояний являются безусловными (маргинальными).

Другими словами, вершины в БСД представляют собой случайные переменные, а дуги – вероятностные зависимости, которые определяются через таблицы условных вероятностей. Таблица условных вероятностей каждой вершины содержит вероятности состояний этой вершины при условии состояний её “родителей”.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]