Разработка системы планирования размещения точек водоснабжения в населенных пунктах

Использование информационных технологий для планирования размещения оптимальных точек водоснабжения, используя теорию графов. Функциональные возможности разрабатываемого приложения. Программная реализация основных модулей на основе алгоритма Флойда.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 31.01.2012
Размер файла 818,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

d4,25=min{d4,54+d5,24d4,24}=min{2+?; ?}=?

d4,35=min{d4,54+d5,34d4,34}=min{2+?; ?}=?

d4,45=min{d4,54+d5,44d4,44}=min{2+?; 0}=0

d4,55=min{d4,54+d5,54d4,54}=min{2+0; 2}=2

d4,65=min{d4,54+d5,64d4,64}=min{2+3; ?}=5

d5,15=min{d5,54+d5,14d5,14}=min{0+?; ?}=?

d5,25=min{d5,54+d5,24d5,24}=min{0+?; ?}=?

d5,35=min{d5,54+d5,34d5,34}=min{0+?; ?}=?

d5,45=min{d5,54+d5,44d5,44}=min{0+?; ?}=?

d5,55=min{d5,54+d5,54d5,54}=min{0+0; 0}=0

d5,65=min{d5,54+d5,64d5,64}=min{0+3; 3}=3

d6,15=min{d6,54+d5,14d6,14}=min{9+?; 2}=2

d6,25=min{d6,54+d5,24d6,24}=min{9+?; 3}=3

d6,35=min{d6,54+d5,34d6,34}=min{9+?; 5}=5

d6,45=min{d6,54+d5,44d6,44}=min{9+?; 7}=7

d6,55=min{d6,54+d5,54d6,54}=min{9+0; 9}=9

d6,65=min{d6,54+d5,64d6,64}=min{9+3; 0}=0

di,j6=min{ di,65+ d6,j5; di,j5}.

d1,16=min{d1,65+d6,15d1,15}=min{10+2; 0}=0

d1,26=min{d1,65+d6,25d1,25}=min{10+3; 1}=1

d1,36=min{d1,65+d6,35d1,35}=min{10+5; 3}=3

d1,46=min{d1,65+d6,45d1,45}=min{10+7; 5}=5

d1,56=min{d1,65+d6,55d1,55}=min{10+9; 7}=7

d1,66=min{d1,65+d6,65d1,65}=min{10+0; 10}=10

d2,16=min{d2,65+d6,15d2,15}=min{9+2; ?}=11

d2,26=min{d2,65+d6,25d2,25}=min{9+3; 0}=0

d2,36=min{d2,65+d6,35d2,35}=min{9+5; 2}=2

d2,46=min{d2,65+d6,45d2,45}=min{9+7; 4}=4

d2,56=min{d2,65+d6,55d2,55}=min{9+9; 6}=6

d2,66=min{d2,65+d6,65d2,65}=min{9+0; 9}=9

d3,16=min{d3,65+d6,15d3,15}=min{7+2; ?}=9

d3,26=min{d3,65+d6,25d3,25}=min{7+3; ?}=10

d3,36=min{d3,65+d6,35d3,35}=min{7+5; 0}=0

d3,46=min{d3,65+d6,45d3,45}=min{7+7; 2}=2

d3,56=min{d3,65+d6,55d3,55}=min{7+9; 4}=4

d3,66=min{d3,65+d6,65d3,65}=min{7+0; 7}=7

d4,16=min{d4,65+d6,15d4,15}=min{5+2; ?}=7

d4,26=min{d4,65+d6,25d4,25}=min{5+3; ?}=8

d4,36=min{d4,65+d6,35d4,35}=min{5+5; ?}=10

d4,46=min{d4,65+d6,45d4,45}=min{5+7; 0}=0

d4,56=min{d4,65+d6,55d4,55}=min{5+9; 2}=2

d4,66=min{d4,65+d6,65d4,65}=min{5+0; 5}=5

d5,16=min{d5,65+d6,15d5,15}=min{3+2; ?}=5

d5,26=min{d5,65+d6,25d5,25}=min{3+3; ?}=6

d5,36=min{d5,65+d6,35d5,35}=min{3+5; ?}=8

d5,46=min{d5,65+d6,45d5,45}=min{3+7; ?}=10

d5,56=min{d5,65+d6,55d5,55}=min{3+9; 0}=0

d5,66=min{d5,65+d6,65d5,65}=min{3+0; 3}=3

d6,16=min{d6,65+d6,15d6,15}=min{0+2; 2}=2

d6,26=min{d6,65+d6,25d6,25}=min{0+3; 3}=3

d6,36=min{d6,65+d6,35d6,35}=min{0+5; 5}=5

d6,46=min{d6,65+d6,45d6,45}=min{0+7; 7}=7

d6,56=min{d6,65+d6,55d6,55}=min{0+9; 9}=9

d6,66=min{d6,65+d6,65d6,65}=min{0+0; 0}=0

В результате, нами получена матрица длин кратчайших путей между каждой парой вершин графа. Ниже представлена таблица путей. Каждый элемент Cij таблицы, это путь из вершины i в вершину j

Таблица путей

1

2

3

4

5

6

1

-

d1-2=1-2

d1-3=1-2-3

d1-4=1-2-3-4

d1-5=1-2-3-4-5

d1-6=1-2-3-4-5-6

2

d2-1=2-3-4-5-6-1

-

d2-3=2-3

d2-4=2-3-4

d2-5=2-3-4-5

d2-6=2-3-4-5-6

3

d3-1=3-4-5-6-1

d3-2=3-4-5-6-1-2

-

d3-4=3-4

d3-5=3-4-5

d3-6=3-4-5-6

4

d4-1=4-5-6-1

d4-2=4-5-6-1-2

d4-3=4-5-6-1-2-3

-

d4-5=4-5

d4-6=4-5-6

5

d5-1=5-6-1

d5-2=5-6-1-2

d5-3=5-6-1-2-3

d5-4=5-6-1-2-3-4

-

d5-6=5-6

6

d6-1=6-1

d6-2=6-1-2

d6-3=6-1-2-3

d6-4=6-1-2-3-4

d6-5=6-1-2-3-4-5

-

2. Поиск медианы

Основываясь на полученной нами матрице длин кратчайших путей, найдем CВВ(i) для каждой вершины графа

CВВ(i)=Уd(i, j).

CВВ(1)==Уjd(1, j)=26

CВВ(2)==Уjd(2, j)=32

CВВ(3)==Уjd(3, j)=32

CВВ(4)==Уjd(4, j)=32

CВВ(5)==Уjd(5, j)=32

CВВ(6)==Уjd(6, j)=26

Медианами графа является такая вершина x, для которой

СВВ(x)=min{СВВ(i)}

Минимальное значение имеет СВВ(1) и СВВ(6)=26, а это значит, что вершина 1 и вершина 6 являются медианами графа.

Выводы к разделу 2

Теория графов находит широкое применение в различных областях науки и техники. Многие математические факты удобно формулировать на языке графов. В последнее время теория графов находит всё больше применений в прикладных вопросах. Графы стали широко использовать в теории массового обслуживания, поскольку там возникают задачи оптимального размещения точек обслуживания. Основной проблемой является минимизация расстояния от любой точки населенного пункта до ближайшего пункта обслуживания.

К решению подобных задач применимы алгоритмы поиска кратчайших путей, поскольку пункты массового обслуживания можно представить вершинами графа, а расстояния между ними - дугами графа.

В информатике графы применяют для наглядного моделирования информационных процессов, для составления программ автоматизированной разработки, алгоритмов решения задач. Графы играют важную роль в теории информации.

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

оптимальный алгоритм граф флойд

Раздел 3. Программная реализация системы планирования размещения точек водоснабжения в населенных пунктах

3.1 Описание функциональных возможностей разрабатываемого приложения. Информационная структура приложения

Нахождение медиан графа реализовано в методе Флойда в среде программирования Delfi.

Чтобы найти медианы графа необходимо построить граф.

Для задания матрицы весов и количества вершин предусмотрена возможность их введения как вручную, так и из текстового файла. Для этого нужно нажать на вкладку «ввод» и выбрать соответствующее действие (рисунок 7).

Рисунок 7. «Форма программы»

Если вы выбрали «считать из файла», то у вас появится окно (рисунок 8), в котором нужно выбрать: 1.txt (нахождение 1 медианы графа) или 2.txt (нахождение 2 медиан графа) или 3.txt (нет медиан, т.к. задан несвязный граф), которые показаны на рисунках 9,10 и 11 соответственно.

Также предусмотрено изменение элементов матрице вручную на форме программы.

Рисунок 8. «Окно для выбора текстового файла»

Рисунок 9. «Текстовый файл для нахождения 1 медианы»

Рисунок 10. «Текстовый файл для нахождения 2 медиан»

Рисунок 11. «Текстовый файл для несвязного графа»

Предусмотрены следующие проверки:

1) на главной диагонали стоят только нули;

2) матрица должна содержать все элементы;

3) матрица симметрична относительно главной диагонали;

4) значения должны быть целочисленными.

После того как мы загрузили 1.txt (рисунок 12), необходимо нажать на кнопку «построить граф» (рисунок 13).

Рисунок 12. «Форма программы»

Рисунок 12. «Форма программы»

После этого нажав на кнопку «Медиана» мы можем найти 1 или более медиан графа, если он является связным (рисунок 13).

Рисунок 13. «Форма программы»

Также предусмотрено:

1) очистка рисунка и значений матрицы;

2) сохранение матрицы, содержимое которой будет хранится в текстовом файле;

3) сохранение рисунка в файл, имеющий расширение: «.bmp», «.ico», «.emf», «.wmf»;

4) закрытие формы программы.

3.2 Информационная структура приложения. Программная реализация основных модулей

Рассмотрим основные имена функций, процедуры и переменных в программе:

1) procedure TForm1.Button1Click(Sender: TObject)// кнопка «построить граф»;

2) procedure StringGrid1Click(Sender: TObject);//матрица весов и вершин;

3) procedure Button3Click(Sender: TObject);//кнопка нахождения медиан;

4) Matr_S//массив, в котором храниятся значения матрицы;

5) Ves_Tree//переменная - весовой коэффициент;

6) procedure redraw(var im: Timage);//процедура рисования графа;

7) function kolvos// функция, использующая для подсчета и занесения значений в StrinGrid.

Выводы к разделу 3

Таким образом была разработана программная реализация системы планирования размещения точек водоснабжения в населенных пунктах, основные функции и процедуры которой были описаны выше.

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

Заключение

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

К решению подобных задач применимы алгоритмы поиска кратчайших путей, поскольку пункты массового обслуживания можно представить вершинами графа, а расстояния между ними - дугами графа. Теория графов находит широкое применение в различных областях науки и техники. Многие математические факты удобно формулировать на языке графов. В последнее время теория графов находит всё больше применений в прикладных вопросах.

Список использованной литературы

1. Берж К., Теория графов и ее применения, 1972.

2. Кристофидес Н., Теория графов. Алгоритмический подход, 1975.

3. Кормен Т., Лейзер Ч., Алгоритмы. Построение и анализ.

4. Оре О., Графы и их применения, 1975.

5. www.uchimatchact.ru

6. www.matematik.com.ua

7. Джигерей В.С., Экология и охрана окружающей среды, 2006.

8. Белявский Г.О., Экологические показатели и их сравнение, 2008.

Приложение

// нахождение медиан с помощью алгоритма Флойда

const

INF: Double = 1000000;

var

D: array of array of Double;

dist: array of Double;

sum, min_d: Double;

i, j, k, n: Integer;

begin

n := Length(Matr_S);

SetLength(dist, n);

SetLength(D, n, n);

for i := 0 to n - 1 do

for j := 0 to n - 1 do

if Matr_S[i][j] = 0 then D[i][j] := INF else

D[i][j] := Matr_S[i][j];

for k := 0 to n - 1 do

for i := 0 to n - 1 do

for j := 0 to n - 1 do

D[i][j] := Min( D[i][j], D[i][k] + D[k][j]);

min_d := 1000000;

for i := 0 to n - 1 do begin

sum := 0;

for j := 0 to n - 1 do

sum := sum + D[i][j];

dist[i] := sum;

if dist[i] < min_d then min_d := dist[i];

end;

Edit1.Text := '{ ';

for i := 0 to n - 1 do

if dist[i] = min_d then Edit1.Text := Edit1.Text + IntToStr(i + 1) + '; ';

Edit1.Text := Edit1.Text + '}';

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.