Зонирование территории по степени риска цунами

курсовая работа

Заключение

Выполнено обоснование модели зонирования территории по степени опасности. Разработаны алгоритм и программа для проведения расчетов.

Разработана методика зонирования защищаемых территории по степени опасности наводнений. Методика основана на технологии расчета множества Парето, по которому в дальнейшем эксперт выбирает оптимальный участок для строительства гидротехнических объектов.

Приведен пример зонирования береговой территории по степени опасности. Предлагаемое алгоритмическое и методическое обеспечение позволяет повысить эффективность защищаемых мероприятий для береговых территорий в критериях "риск-стоимость".

Список используемых источников

1. Феллер В. Введение в теорию вероятностей и ее приложения. В 2-х томах. Т.1: Пер. с англ. - М.: Мир, 1984. - 528 с.

2. Питер Джексон. Введение в экспертные системы. - Москва: "Вильямс", 2001. - 662 с.

3. Кириллова С.В. Вычислительный эксперимент в задачах оценки цунами-опасности // Приложение к журналу "Открытое образование". Красноярск, 2006. - С.83-88

4. Белолипецкий В.М., Шокин Ю.И. Математическое моделирование в задачах охраны окружающей среды. - Новосибирск: Инфолио-пресс, 1997. - 240 с.

5. Симонов К.В., Перетокин С.А., Щемель А.Л., Болотина С.В. Алгоритмические средства обработки больших массивов данных // Труды II Всероссийского семинара "Распределенные и кластерные вычисления" - Красноярск, ИВМ СО РАН, 2004

Приложение 1

Листингпрограммы

#include <stdio. h>

#include <conio. h>

struct node

{

int N; // Порядковый номер пикселя

float R; // Оценка риска

int C; // Стоимость

node *r,*l;

};

node *left, *right;

bool In ()

{

int N,C;

float R;

node *p, *q;

FILE *f;

f = fopen ("data. txt","r"); // Считываем данные из файла

if (f == NULL)

{

printf ("Error! File data. txt not found! "); // ошибка

getch ();

return false;

}

q = left;

while (! feof (f))

{

fscanf (f,"%d%f%d",&N,&R,&C);

p = new node;

p->N = N;

p->R = R;

p->C = C;

p->l = NULL;

p->r = NULL;

if (q == NULL)

{

left = p;

right = p;

q = p;

}

else

if (q == left)

{

left->r = p;

p->l = left;

q = p;

}

else

{

q->r = p;

p->l = q;

q = p;

}

}

right = q;

fclose (f);

return true;

}

bool Delete (int N)

{

node *n, *p;

n = left;

while (n! = NULL)

{

if (n->N == N)

{

if (n == left && n == right) // в списке один элемнт

{

left = NULL;

right = NULL;

delete n;

return true;

}

if (n == left) // удаляем первый элемент

{

left = n->r;

left->l = NULL;

delete n;

return true;

}

if (n == right) // удаляем правый элемент

{

right = n->l;

right->r = NULL;

delete n;

return true;

}

// удаляем из середины

p = n->r;

p->l = n->l;

n->l->r = p;

delete n;

return true;

}

n = n->r;

}

return false;

}

node *Delete (node *n)

{

node *p;

if (n == left && n == right) // в списке один элемнт

{

left = NULL;

right = NULL;

p = NULL;

delete n;

return p;

}

if (n == left) // удаляем первый элемент

{

left = n->r;

left->l = NULL;

p = n->r;

delete n;

return p;

}

if (n == right) // удаляем правый элемент

{

right = n->l;

right->r = NULL;

p = NULL;

delete n;

return p;

}

// удаляем из середины

p = n->r;

p->l = n->l;

n->l->r = p;

delete n;

return p;

}

void Out ()

{

node *n;

n = left;

while (n! = NULL)

{

printf ("N = %dR = %.2f C = %d ",n->N,n->R, n->C);

n = n->r;

// …. …………………. Расчет множества парето………………………….

int main ()

{

int k;

left = NULL;

right = NULL;

node *n,*p;

In ();

Out ();

n = left;

while (n! = NULL)

{

p = left;

while (p! = NULL)

{

k = 0;

if (n->C < p->C) // сравнение значений стоимости

k ++;

else

if (n->C > p->C)

k=-10;

if (n->R < p->R) // сравнение значений риска

k ++;

else

if (n->R > p->R)

k=-10;

if (k > 0)

p = Delete (p);

else

p = p->r;

}

n = n->r;

}

printf (" After pareto: ");

Out ();

getch ();

return 0;

}

Приложение 2

Описание данных

Порядковый номер пикселя,

N

Риск, R

Стоимость, C

1

0.1

5

2

0.1

5

3

0.2

4

4

0.2

9

5

0.2

5

6

0.2

5

7

0.3

4

8

0.4

5

9

0.1

6

10

0.2

8

11

0.3

5

12

0.2

8

13

0.1

5

14

0.2

8

15

0.5

6

16

0.2

5

17

0.1

6

18

0.2

7

19

0.3

4

20

0.4

8

21

0.3

5

22

0.4

5

23

0.1

9

Делись добром ;)