
- •Графовые модели территориально распределённых систем и задачи их декомпозиции
- •Введение
- •Глава 1. Описание предметной области
- •Глава 2. Постановка задачи разрезания графов
- •Глава 3. Матричный алгоритм решения задачи разрезания графов
- •3.1. Основные положения матричного алгоритма
- •3.2. Перемещение элементов матрицы
- •3.3. Выбор элементов для перемещения
- •3.4. Матричный алгоритм и пример его применения
- •Глава 4. Программная реализация и результаты экспериментальных исследований матричного алгоритма
- •4.1. Экспериментальные исследования алгоритма
- •4.2. Описание программы
- •4.3. Руководство для пользователя
- •Заключение
- •Литература
4.2. Описание программы
Программа включает четыре основных класса, приведённых на рис. 10. Класс Graf (рис. 11) отвечает за операции по формированию матрицы графа и работе с ней. Класс GrafControl (рис. 12) используется для визуализации матрицы графа, а также при задании условий задачи (количество элементов, размерность блоков шаблона, веса ребёр). Класс Project (рис. 13) предназначен для хранения вариантов разрезания (в списке GrafList) и включает методы для работы с алгоритмом разрезания. Класс ProjectControl (рис. 14) предназначен для отображения вариантов разрезания, используя совокупность визуальных элементов GrafControl, а также включает методы, организующие целостную работу программы. Таким образом, достигается отделение алгоритмов обработки данных от алгоритмов отображения и редактирования этих данных. Классы Graf и Project представляют собой данные и алгоритмы их обработки, а классы GrafControl и ProjectControl их соответствующие визуальные представления. Программа CutGraf реализована на языке C#, платформе Microsoft .NET Framework 3.5, и составляет около 2500 строк.
Рис. 10. Структура основных классов программы
4.3. Руководство для пользователя
Главное окно программы имеет вид, приведенное на рис. 15.
Рис. 15. Главное окно программы
Рис. 11. Описание класса Graf
Рис. 12. Описание класса GrafControl
Рис. 13. Описание класса Project
Рис. 14. Описание класса ProjectControl
Рис. 16. Мастер создания нового проекта
Окно включает основной интерфейс для работы с проектом (создание нового проекта, сохранение и загрузка, полное выполнение алгоритма и пошаговое).
При нажатии кнопки «Новый проект» открывается Мастер создания нового проекта. Сначала необходимо задать размерность графа (рис. 16).
Далее задаются параметры шаблона и в матрице указываются веса рёбер (симметричные значения весов появляются автоматически) (рис. 17).
Рис. 17. Задание параметров шаблона и в матрице указываются веса рёбер
Алгоритм может выполняться в двух режимах: пошаговый и автоматический. Автоматический режим после создания матрицы, выполняет алгоритм разрезания, при пошаговом же пользователь может вмешиваться в работу алгоритма, выбирая оценки . Для пошагового режима необходимо убрать галочку в нижнем левом углу окна. Нажав клавишу «Создать» в главном окне появится сформированная матрица (рис. 18).
Рис. 18. Сформированная матрица
Нажав клавишу «Выполнить далее» появится окно с матрицей оценок (рис. 19).
Рис. 19. Окно с матрицей оценок
Заметим,
что пустым клеткам соответствуют нулевые
значения оценок. Выбор элемента
означает указание на перенос столбцов
и строк с номерами 9 и 1 согласно правилам
переноса. В главном окне программы
появится полученная матрица (рис. 20).
Рис. 20. Полученная матрица
Нажав на кружок в левом верхнем углу матрицы, пользователь может посмотреть матрицу оценок для данной итерации, а также создать новый проект, внеся изменения в условия задачи (изменить параметры шаблона и веса рёбер).
Экспериментальные исследования проводились следующим образом. Создавалась исходная матрица, и автоматически выполнялся алгоритм разрезания. После этого, вручную делалась попытка перейти к другому локальному оптимуму, используя отрицательные оценки. Далее менялись условия задачи и накапливалась статистика.