Автоматизация процесса проектирования сетей DWDM по технологии xPON

0

Заключение

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

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

Для достижения поставленной цели были решены следующие задачи:

− Проведен анализ существующих технологий широкополосного доступа к сети Ethernet;

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

− Разработан алгоритм оптимизации процесса проектирования сетей DWDM и подбора оборудования сети с заданными техническими характеристиками;

− Разработан прототип системы автоматизированного проектирования сетей DWDM;

− Предложенный алгоритм и прототип программного средства реализованы в автоматизированной системе проектирования сетей DWDM.

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

Разработанные в магистерской диссертации теоретические положения по исследованию процессов функционирования и оптимизации проектирования сетей DWDM содержат следующие новые научно-обоснованные результаты:

− Анализ существующих технологий широкополосного доступа к сети Ethernet, а так же методов оптимизации задач на графах;

− Новые методы исследования, и проектирования сетей DWDM, обеспечивающие учёт специфики их функционирования (распределённая архитектура построения, передача разнородной информации, ограниченность сетевых ресурсов, необходимость обеспечения устойчивости) и связанные с этим способы управления качеством обслуживания;

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

− Прототип системы автоматизированного проектирования сетей DWDM;

− Расчеты и анализ полученных результатов;

− Разработана автоматизированной технологической и информационной среды проектирования сетей DWDM с оптимизацией затрат на эксплуатационные расходы.

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

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

1. Головин С.Л. Технологии мультисервисных сетей. //СЮ, 2005. №10.-с. 31 -36.

2. Концептуальные положения по построению мультисервисных сетей на ВСС России. М.: ДЭС Минсвязи России, 2001. - 32с.

3. Гилязов Р.Л., Столбов В.Ю. Моделирование распределительного уровня цифровой сети передачи данных с учетом социальных предпочтений. // Вестник ПГТУ. Прикладная математика и механика. Пермь: Изд-во ПГТУ, 2007.-е. 91-102.

4. Гилязов Р.Л., Столбов В.Ю. Моделирование цифровой сети передачи данных с учетом случайных потребностей в доставке информации: сб. тр. XXXIV Междунар. конф. «IT-S&E'07». Украина, г. Гурзуф, 2007-с.84-86.

5. Лихгциндер Б.Я., Кузякин М.А., Росляков А.В., Фомичев С.М. Интеллектуальные сети связи. -М.: ЭКО ТРЕНДЗ, 2000. - 205с.

6. Давыдов Г.Б. Информатизация и сети связи. М.: Наука, 1984.128с.

7. Филип Б.П. Методы анализа структурной надежности сетей связи.ч- М.:Радио и связь, 1988. 204с.

8. Стеколышков Ю.И. Живучесть систем. Теоретические основы. — СПб.: Политехника, 2002. 155с.

9. Нечипоренко В.И. Структурный анализ систем (эффективность и надёжность). -М.: Сов. радио, 1977. -214с.

10. Нетес В.А. Надежность сетей связи: тенденции последнего десятилетия //Электросвязь, 1998. №1. - с. 41 - 45.

11. McDonald J.С. Public network dependable? //IEEE Communications Mag.-1992.-№4,- P.110-112.

12. РТМ. Принципы построения местных мультисервисных сетей электросвязи. -М.:ДЭС Минсвязи России. 2005. -48с.

13. Гольдштейн Б. С., Пинчук А. В., Суховицкий A. JI. IP-телефония. -М.: Радио и связь, 2001. 336с.

14. Электроннвй сборник статей по информационным технологиям hypercomp.ru. http://www.hypercomp.ru/articlcs/IP-telephony-terms-and-basics/

15. Шварц М. Сети связи: протоколы, моделирование и анализ. В 2-х частях. Ч. 1. Пер. с англ. М.: Наука, 1992. - 336с.

16. Йенсен П.А., Барнес Д. Потоковое программирование. М.: Радио и связь, 1984. - 392с.

17. Йенсен П.А., Барнес Д. Потоковое программирование. М.: Радио и связь, 1984. - 392с.

18. Ху Т. Целочисленное программирование и потоки в сетях. М.: Мир, 1974.-519с.

19. Данциг Д.Б. Линейное программирование, его применение и обобщение. М.: Прогресс, 1966.- 599с.

20. Васильева Е. М. Левит Б.Ю. Лившиц B.Ii. Нелинейные транспортные задачи в сетях. М.: Финансы и статистика, 1981. -104с.

21. Раскин Л.Г., Кириченко И.О. Многоиндексные задачи линейного программирования. М.: Радио и связь, 1982. - 260с.

22. Ишмамедов К.В. Мультисервисная технологическая сеть связи// Автоматика, связь, информатика,- 2006.- №7.-С. 31-33.

23. Сычев К.И. Многокритериальное проектирование мультисервисных сетей связи. //Телекоммуникации. 2007. - №9. - С. 2-7.

24. Бурков В.II. Основы математической теории активных систем. — М.: Наука, 1977.-255с.

25. Новиков Д.А. Теория управления организационными системами. — М.: Издательство физико-математической литературы, 2007. 584с.

26. Губко М.В. Математические модели оптимизации иерархических структур. М.: ЛЕНАНД, 2006. - 264с.

27. Микони С.В. Теория и практика рационального выбора. М.: Маршрут, 2004. - 463с.

28. Бурков В.Н., Заложнев А.Ю., Новиков Д.А. Теория графов в управлении организационными системами. М.: Синтег, 2001. - 124с.

29. Фролов В.II., Львович Я.Е., Подвальный С.Л. Проблема оптимального выбора в прикладных задачах. Воронеж: Изд-во Воронежского университета, 1980. - 139с.

30. Цыганов В.В, Бородин В. А., Шишкин Г.Б. Интеллектуальное предприятие: механизмы овладения капиталом и властью (теория и практика управления эволюцией организации). М.: Университетская книга. - 2004 -768с.

31. Давыдов Г.Б., Рогинский В.Н., Толчан А .Я. Сети электросвязи. -М.: Связь, 1977.-360с.

32. Соколов Н.А. Телекоммуникационные сети. М.: Альварес Паблишинг, 2003. - 192с.

33. Введение в математическое моделирование: Учебное пособие /Под ред. П.В. Трусова. М.: Логос, 2005. - 440с.

34. Нетес В.А. Выбор обобщенных показателей надежности сетей связи. //Электросвязь. -1981. №5. - С. 24 -27.

35. Надежность технических систем/ Под ред. И. А. Ушакова. М.: Радио и связь, 1985. - 608с.

36. Мизин И. А., Богатырев В. А., Кулешов А. П. Сети коммутации пакетов/ Под ред. В. С. Семенихина.— М.: Радио и связь, 1986. — 408с.

37. Методика выбора показателей для оценки надежности сложных технических систем. М.: Стандарты, 1977. - 44с.

38. Гилязов Р.Л., Гитман М.Б., Столбов В.Ю. Управление транспортными сетями электросвязи с учетом нечетких предпочтений // Проблемы управления. 2008. - №1. - С.62-67.

39. Клейнрок Л. Теория массового обслуживания. М.: Машиностроение, 1979. - 426с.

40. Гилязов Р.Л., Гитман М.Б., Столбов В.Ю. Построение обобщенного критерия оптимальности при заданной нечеткой иерархическойструктуре частных критериев // Труды XXXV Междунар. конф. «1Т-8&Е'08», Украина, г. Гурзуф, 2008.- С.207-210.

41. Котов С.С., Кузнецов В.В., Столбов В.Ю. Применение имитационного подхода в управлении системами массового обслуживания //Теор. и прикл. аспекты инф. технологий. Сб-к науч. тр. ГосНИИУМС.-Пермь, 2006. Вып. 55. С. 160-168.

42. Смолянский М.Е. Проектирование линейных сооружений ГТС. -М: Радио и Связь, 1989. 180с.

43. Бесслер Р., Дойч А.Проектирование сетей связи. М: Радио и связь, 1988. - 272с.

44. Гужавин С.А., Драмашко И.А., Кокорип А.Б., Коломо-ец В.В., Хабаров АЛО. Статистический регрессионный анализ БД АСУ учета линейных сооружений сети основа для принятия управленческих решений // Зв'язок, 2001, №2,- С. 59-64.

45. Гилязов Р.Л., Столбов В.Ю. Проектирование распределительного уровня мультисервисной сети связи с учетом конфликтных интересов различных групп пользователей. /Телекоммуникации. 2008. №11. - С.15-21.

46. Гилязов Р.Л. Оптимизация сетей электросвязи // Математическое моделирование в естественных науках. Тезисы докладов 11-й всероссийской конференции молодых ученых. Пермь, 2002. С. 60-61.

Приложение А

(обязательное)

Текст программы

import java.util.HashSet;

import java.util.TreeSet;

import java.util.Vector;

/**

* Created with IntelliJ IDEA.

* User: napster

* Date: 4/27/13

* Time: 10:42 PM

* To change this template use File | Settings | File Templates.

*/

class EdgeForKruskal implements Comparable<EdgeForKruskal> {

int vertexA, vertexB;

double weight;

public EdgeForKruskal(int vertexA, int vertexB, double weight) {

this.vertexA = vertexA;

this.vertexB = vertexB;

this.weight = weight;

}

public int getVertexA() {

return vertexA;

}

public int getVertexB() {

return vertexB;

}

public double getWeight() {

return weight;

}

@Override

public String toString() {

return "(" + vertexA + ", " + vertexB + ") : Weight = " + weight;

}

public int compareTo(EdgeForKruskal edge) {

//== is not compared so that duplicate values are not eliminated.

return (this.weight < edge.weight) ? -1 : 1;

}

}

public class KruskalEdges {

Vector<HashSet<Integer>> vertexGroups = new Vector<HashSet<Integer>>();

TreeSet<EdgeForKruskal> kruskalEdges = new TreeSet<EdgeForKruskal>();

public TreeSet<EdgeForKruskal> getEdges() {

return kruskalEdges;

}

HashSet<Integer> getVertexGroup(int vertex) {

for (HashSet<Integer> vertexGroup : vertexGroups) {

if (vertexGroup.contains(vertex)) {

return vertexGroup;

}

}

return null;

}

public void insertEdge(EdgeForKruskal edge) {

int vertexA = edge.getVertexA();

int vertexB = edge.getVertexB();

HashSet<Integer> vertexGroupA = getVertexGroup(vertexA);

HashSet<Integer> vertexGroupB = getVertexGroup(vertexB);

if (vertexGroupA == null) {

kruskalEdges.add(edge);

if (vertexGroupB == null) {

HashSet<Integer> htNewVertexGroup = new HashSet<Integer>();

htNewVertexGroup.add(vertexA);

htNewVertexGroup.add(vertexB);

vertexGroups.add(htNewVertexGroup);

} else {

vertexGroupB.add(vertexA);

}

} else {

if (vertexGroupB == null) {

vertexGroupA.add(vertexB);

kruskalEdges.add(edge);

} else if (vertexGroupA != vertexGroupB) {

vertexGroupA.addAll(vertexGroupB);

vertexGroups.remove(vertexGroupB);

kruskalEdges.add(edge);

}

}

}

}

import java.awt.*;

import java.util.*;

import java.util.List;

/**

* Created with IntelliJ IDEA.

* User: napster

* Date: 4/9/13

* Time: 3:42 PM

* To change this template use File | Settings | File Templates.

*/

public class pathSearcher {

private static int maxSock = 8;

private static int distMult = 2;

private static double dist, dist2;

private static RoadGraph nearest, nearestSocket;

private static int minDistance;

public static int getDistMult() {

return pathSearcher.distMult;

}

public static int getMaxSock() {

return pathSearcher.maxSock;

}

public static void searchSocks(){

JMaps.getSocketList().clear();

JMaps.getRoadGraphList().clear();

RoadGraphLoader.loadGraph();

for (Point arr: JMaps.getHousesList()){

//nearest point in graph

minDistance=Integer.MAX_VALUE;

nearest = null;

for (RoadGraph i: JMaps.getRoadGraphList()){

dist = Math.sqrt((i.getPoint().x - arr.x)*(i.getPoint().x - arr.x)+(i.getPoint().y - arr.y)*(i.getPoint().y - arr.y));

if (dist < minDistance){

minDistance = (int)dist;

nearest = i;

}

}

//add first socket from the nearest point ^

nearestSocket = null;

if (JMaps.getSocketList().isEmpty()){

nearest.setSocketState(true);

JMaps.getSocketList().add(new RoadGraph(nearest.getNumber(), nearest.getPoint(), nearest.getList()));

JMaps.getSocketList().get(JMaps.getSocketList().size()-1).setSocketState(true);

JMaps.getSocketList().get(JMaps.getSocketList().size()-1).incSocketConnetions();

JMaps.getSocketList().get(JMaps.getSocketList().size() - 1).addHouseInEachSock(arr);

} else {

//finding the nearest socket

minDistance = Integer.MAX_VALUE;

for (RoadGraph i: JMaps.getSocketList()){

if (i.isSocket() && i.getSocketConnections() < maxSock){

dist = Math.sqrt((i.getPoint().x - arr.x)*(i.getPoint().x - arr.x)+(i.getPoint().y - arr.y)*(i.getPoint().y - arr.y));

if (dist < minDistance){

minDistance = (int)dist;

nearestSocket = i;

}

}

}

// if (nearestSocket == null){

// nearest.setSocketState(true);

// JMaps.getSocketList().add(new RoadGraph(nearest.getNumber(), nearest.getPoint(), nearest.getList()));

// JMaps.getSocketList().get(JMaps.getSocketList().size()-1).setSocketState(true);

// JMaps.getSocketList().get(JMaps.getSocketList().size() - 1).addHouseInEachSock(arr);

// nearestSocket = JMaps.getSocketList().get(JMaps.getSocketList().size()-1);

// }

// minDistance = Integer.MAX_VALUE;

// for (RoadGraph i: JMaps.getSocketList()){

// dist = Math.sqrt((i.getPoint().x - arr.x)*(i.getPoint().x - arr.x)+(i.getPoint().y - arr.y)*(i.getPoint().y - arr.y));

// if ((dist < minDistance) && (i.getSocketConnections() < maxSock)){

// minDistance = (int)dist;

// nearestSocket = i;

// }

// }

dist = Math.sqrt(

(nearest.getPoint().x - arr.x)*((nearest.getPoint().x - arr.x))

+

(nearest.getPoint().y - arr.y)*((nearest.getPoint().y - arr.y))

);

dist2 = Math.sqrt(

(nearestSocket.getPoint().x - arr.x)*((nearestSocket.getPoint().x - arr.x))

+

(nearestSocket.getPoint().y - arr.y)*((nearestSocket.getPoint().y - arr.y))

);

//if socket is closer - inc connections

if (dist2 <= distMult*dist){

for (RoadGraph i: JMaps.getSocketList())

if (i.getNumber() == nearestSocket.getNumber()) {

i.incSocketConnetions();

i.addHouseInEachSock(arr);

break;

}

}

//else add new socket

else {

nearest.setSocketState(true);

JMaps.getSocketList().add(new RoadGraph(nearest.getNumber(), nearest.getPoint(), nearest.getList()));

for (RoadGraph i: JMaps.getSocketList())

if (i.getNumber() == nearest.getNumber()) {

i.setSocketState(true);

i.incSocketConnetions();

i.addHouseInEachSock(arr);

break;

}

}

}

}

}

public static RoadGraph findNearestForStation(Point p) {

RoadGraph nearestPoint = null;

double minDistance = Double.POSITIVE_INFINITY;

double dist;

for (RoadGraph i : JMaps.getRoadGraphList()) {

dist = Math.sqrt((i.getPoint().x - p.x) * (i.getPoint().x - p.x) + (i.getPoint().y - p.y) * (i.getPoint().y - p.y));

if (dist < minDistance) {

minDistance = (int) dist;

nearestPoint = i;

i.setImportant(true);

}

}

return nearestPoint;

}

public static double getCost(RoadGraph from, RoadGraph to) {

ArrayList<Vertex> temp = getPathVertex(from, to);

return temp.get(0).minDistance;

}

public static ArrayList<RoadGraph> getPath(RoadGraph from, RoadGraph to) {

ArrayList<RoadGraph> path = new ArrayList<RoadGraph>();

ArrayList<Vertex> vertexArrayList = new ArrayList<Vertex>();

path.clear();

vertexArrayList.clear();

Vertex vertex1;

for (RoadGraph i : JMaps.getRoadGraphList()) {

vertex1 = new Vertex(i.getNumber());

vertexArrayList.add(vertex1);

}

for (Vertex vertexarr : vertexArrayList) {

RoadGraph rg = null;

for (RoadGraph x : JMaps.getRoadGraphList()) {

if (vertexarr.name == x.getNumber()) {

rg = x;

break;

}

}

for (Integer list : rg.getList()) {

RoadGraph rg2 = null;

for (RoadGraph x : JMaps.getRoadGraphList()) {

if (list == x.getNumber()) {

rg2 = x;

break;

}

}

double temp = (

(rg2.getPoint().x

- rg.getPoint().x)

*

(rg2.getPoint().x

- rg.getPoint().x)

+

(rg2.getPoint().y

- rg.getPoint().y)

*

(rg2.getPoint().y

- rg.getPoint().y)

);

Vertex rg3 = null;

for (Vertex x : vertexArrayList) {

if (list == x.name) {

rg3 = x;

break;

}

}

vertexarr.adjacencies.add(new Edge(rg3, temp));

}

}

for (int item = 0; item < JMaps.getRoadGraphList().size() - 1; item++)

if (JMaps.getRoadGraphList().get(item).getNumber() == from.getNumber())

computePaths(vertexArrayList.get(item));

List<Vertex> temppath;

for (int item = 0; item < JMaps.getRoadGraphList().size() - 1; item++)

if (JMaps.getRoadGraphList().get(item).getNumber() == to.getNumber()) {

temppath = getShortestPathTo(vertexArrayList.get(item));

for (Vertex temp : temppath) {

for (RoadGraph i : JMaps.getRoadGraphList()) {

if (i.getNumber() == temp.name) {

path.add(i);

break;

}

}

}

}

return path;

}

public static ArrayList<Vertex> getPathVertex(RoadGraph from, RoadGraph to) {

ArrayList<RoadGraph> path = new ArrayList<RoadGraph>();

ArrayList<Vertex> vertexArrayList = new ArrayList<Vertex>();

path.clear();

vertexArrayList.clear();

Vertex vertex1;

for (RoadGraph i : JMaps.getRoadGraphList()) {

vertex1 = new Vertex(i.getNumber());

vertexArrayList.add(vertex1);

}

for (Vertex vertexarr : vertexArrayList) {

RoadGraph rg = null;

for (RoadGraph x : JMaps.getRoadGraphList()) {

if (vertexarr.name == x.getNumber()) {

rg = x;

break;

}

}

for (Integer list : rg.getList()) {

RoadGraph rg2 = null;

for (RoadGraph x : JMaps.getRoadGraphList()) {

if (list == x.getNumber()) {

rg2 = x;

break;

}

}

double temp = (

(rg2.getPoint().x

- rg.getPoint().x)

*

(rg2.getPoint().x

- rg.getPoint().x)

+

(rg2.getPoint().y

- rg.getPoint().y)

*

(rg2.getPoint().y

- rg.getPoint().y)

);

Vertex rg3 = null;

for (Vertex x : vertexArrayList) {

if (list == x.name) {

rg3 = x;

break;

}

}

vertexarr.adjacencies.add(new Edge(rg3, temp));

}

}

for (int item = 0; item < JMaps.getRoadGraphList().size() - 1; item++)

if (JMaps.getRoadGraphList().get(item).getNumber() == from.getNumber())

computePaths(vertexArrayList.get(item));

Vertex ae = null;

for (Vertex u : vertexArrayList)

if (u.name == to.getNumber())

ae = u;

return getShortestPathTo(ae);

}

private static void computePaths(Vertex source) {

source.minDistance = 0;

PriorityQueue<Vertex> vertexQueue = new PriorityQueue<Vertex>();

vertexQueue.add(source);

while (!vertexQueue.isEmpty()) {

Vertex u = vertexQueue.poll();

for (Edge e : u.adjacencies) {

Vertex v = e.target;

double weight = e.weight;

double distanceThroughU = u.minDistance + weight;

if (distanceThroughU < v.minDistance) {

vertexQueue.remove(v);

v.minDistance = distanceThroughU;

v.previous = u;

vertexQueue.add(v);

}

}

}

}

private static ArrayList<Vertex> getShortestPathTo(Vertex target) {

ArrayList<Vertex> path = new ArrayList<Vertex>();

for (Vertex vertex = target; vertex != null; vertex = vertex.previous)

path.add(vertex);

// Collections.reverse(path);

return path;

}

}

class Vertex implements Comparable<Vertex> {

public final int name;

public ArrayList<Edge> adjacencies = new ArrayList<Edge>();

public double minDistance = Double.POSITIVE_INFINITY;

public Vertex previous;

public Vertex(int argName) {

name = argName;

}

public int compareTo(Vertex other) {

return Double.compare(minDistance, other.minDistance);

}

}

class Edge {

public final Vertex target;

public final double weight;

public Edge(Vertex argTarget, double argWeight) {

target = argTarget;

weight = argWeight;

}

}

 

Скачать: Avtomatizaciya-processa-proektirovaniya-setey-DWDM.doc

Назад Вперед

Категория: Дипломные работы / Дипломные работы по информатике

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