- •Оглавление
- •Аналитический раздел
- •Общая постановка задачи
- •Классические задачи принятия решений.
- •Многостадийный процесс
- •Задача линейного программирования
- •Задача о распределении ресурсов
- •Транспортная задача
- •Формула 11. Транспортная задача
- •Вывод по аналитическому разделу
- •Конструкторский раздел
- •Сценарий работы программы
- •Расчет функции прогнозируемой прибыли
- •Формула 13
- •Предлагаемый алгоритм работы программы
- •Алгоритмформирования групп для текущего распределения
- •Алгоритм поиска нового распределения для данного курса
- •Диаграмма классов
- •Спецификация основных классов
- •Требования к бд
- •Концептуальная модель базы данных
- •Спецификации таблиц
- •Вычисление расстояния поGps-координатам
- •1. Сферическая теорема косинусов
- •2. Формула гаверсинусов
- •Формула 16. Формула гаверсинусов
- •3. Модификация для антиподов
- •Формула 17. Формула для антиподов
- •Технологический раздел
- •Требования к вычислительной системе
- •Выбор субд
- •Выбор среды разработки
- •Выбор языка программирования
- •Используемые технологии asp.Net
- •Ado.Net
- •Пользовательский интерфейс
- •Интерфейс приложения
- •Интерфейс веб-приложения
- •Развертывание системы
- •Функциональная декомпозиция системы по уровням
- •Исследовательский раздел
- •Исследование зависимости времени работы алгоритма от числа учащихся
- •Нагрузочное тестирование
- •Вывод по исследовательскому разделу
- •Организационно-экономический раздел
- •Организация и планирование процесса разработки
- •Расчет трудоемкости выполнения работ
- •Расчет количества исполнителей
- •Календарный план-график разработки программного продукта
- •Расчет стоимости программного продукта
- •Расчет экономической эффективности
- •Промышленная экология и безопасность
- •Анализ вредных и опасных факторов
- •Освещенность
- •Электрические и магнитные поля
- •Статическое электричество
- •Электробезопасность
- •Опасность возникновения пожара
- •Вибрация
- •Травматизм
- •Микроклимат
- •Расчет системы освещенности
- •6.2.1 Расчет площади светопроемов
- •Расчет искусственного освещения
- •6.3.1 Общее освещение
- •6.3.2 Местное освещение
- •Заключение
- •Список использованных источников
Диаграмма классов
Диаграмма классов с указанием уровней логики представлена на рис. .
Рисунок 6. Диаграмма классов
Спецификация основных классов
Таблица 3. Класс «ClientsDistribution» | ||
Класс «ClientsDistribution» | ||
Имя члена/метода |
Модификатор доступа |
Описание |
Client[] clients |
+ |
Массив записей клиентов на курсы (хранится пара ID клиента и ID курса) |
Course[] courses |
+ |
Список курсов |
EducationCenter[] centers |
+ |
Список ОЦ |
Relation[][] distribution |
+ |
Массив возможных распределений (для каждого клиента хранятся ближайшие ОЦ, в которых он может учиться) |
bool DataLoaded |
- |
True, если данные загружены |
bool InitialDistributionMade |
- |
True, если создано начальное распределение |
double relatedDistance |
- |
Максимально допустимое расстояние от ОЦ до места жительства клиента, в метрах |
int numOfRelatedCenters |
- |
Количество центров, в которых может обучаться каждый клиент. Служит для ускорения работы алгоритма. Все равно клиент не будет учиться в удаленных ОЦ |
LoadData() |
+ |
Загрузить данные из базы |
MakeInitialDistribution() |
+ |
Создать начальное распределение |
GetCurrentDistribution() |
+ |
Получить текущее распределение (для дальнейшего его отображения на карте Москвы) |
GetClientsCoordinates |
+ |
Возвращает координаты клиента по его ID |
GetCurrentIncome() |
+ |
Подсчитывает прогнозируемую прибыль для текущего распределения |
FindOptDistribution() |
+ |
Запускает алгоритм поиска “оптимального” распределения |
Таблица 4. Класс «MoscowMap» | ||
Класс «MoscowMap» | ||
Имя члена/метода |
Модификатор доступа |
Описание |
double dolgota1, shirota1, dolgota2, shirota2
|
- |
Координаты GPS левого верхнего и правого нижнего углов карты Москвы. Нужны для масштабирования карты и аппроксимации местоположения |
int Width
|
+ |
Ширина карты, в пикселях |
int Height
|
+ |
Высота карты, в пикселях |
getCurrentCoordinates() |
+ |
Получает gps координаты по координатам пикселя |
GetCurrentDistribution() |
+ |
Возвращает изображение с текущим распределением клиентов
|
GetIntCoordinates() |
- |
Получает координаты пикселя по gps-координатам
|
GetEmptyMap()
|
+ |
Возвращает пустую карту
|
Таблица 5. Класс «GPS» | ||
Класс «GPS» | ||
Имя члена/метода |
Модификатор доступа |
Описание |
ConvertToRadians() |
- |
Конвертирует значение из градусов в радианы |
get_fi() |
- |
Вычисляет угол, который вдальнейшем используется для нахождения расстояния между двумя точками по их gps координатам
|
get_S_yandex()
|
+ |
Вычисляет расстояние по gps координатам
|
Таблица 6. Класс «Client» | ||
Класс «Client» | ||
Имя члена/метода |
Модификатор доступа |
Описание |
Int32 ID |
+ |
ID клиента |
double Dolgota |
+ |
GPS координаты долготы |
double Shirota |
+ |
GPS координаты широты |
Int32 CourseID
|
+ |
ID курса, к которому относится данная запись |
Таблица 7. Класс «Course» | ||
Класс «Course» | ||
Имя члена/метода |
Модификатор доступа |
Описание |
Int32 ID |
+ |
ID курса |
Double Cost
|
+ |
Стоимость курса |
Int32 MinGroupSize
|
+ |
Минимальный размер группы по данному курсу |
Int32 MaxGroupSize
|
+ |
Максимальный размер группы по данному курсу |
Таблица 8. Класс «EducationCenter» | ||
Класс «EducationCenter» | ||
Имя члена/метода |
Модификатор доступа |
Описание |
Int32 ID |
+ |
ID образовательного центра |
double Dolgota |
+ |
GPS координаты долготы |
double Shirota |
+ |
GPS координаты широты |
Таблица 9. Класс «OneClientDistribution» | ||
Класс «OneClientDistribution» | ||
Имя члена/метода |
Модификатор доступа |
Описание |
Int32 ClientID |
+ |
ID клиента |
Int32 CenterID |
+ |
ID образовательного центра, к которому он относится |
Int32 CourseID |
+ |
ID курса, на который записан |
bool isDistributed |
+ |
True, если клиент уже распределен в какую-то группу |
Int32 relatedCenter |
+ |
Коэффициент, который позволяет учитывать учащихся, которые вносят корреляцию |
Таблица 10. Класс «Relation» | ||
Класс «Relation» | ||
Имя члена/метода |
Модификатор доступа |
Описание |
Int32 ID |
+ |
ID ОЦ в списке связанных для данного клиента ОЦ |
Double S |
+ |
Расстояние для данного ОЦ |
Double P |
+ |
Весовой коэффициент – вероятность того, что клиент будет ходить именно в этот ОЦ |