Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/korolev2512/compliance-audit

Program for optimizing a set of activities based on network planning and management methods
https://github.com/korolev2512/compliance-audit

copy matplotlib networkx numpy openpyxl os pandas python3 tkinter

Last synced: 29 days ago
JSON representation

Program for optimizing a set of activities based on network planning and management methods

Awesome Lists containing this project

README

        

# compliance-audit

## Оптимизация комплекса мероприятий (КМ) с использованием метода критического пути (CPM)

Этот проект представляет собой программу для оптимизации комплекса мероприятий, основанную на методах сетевого планирования и управления. Программа написана на языке программирования Python.

## Описание программы

Программа позволяет вводить исходные данные из двух Excel файлов, описывающих мероприятия и исполнителей, а затем производит оптимизацию временных параметров КМ с учетом метода критического пути и коэффициентов оперативности исполнителей.

### Функциональность программы

1. **Ввод данных:**
- **БазаДанных1 (Excel файл):** Содержит информацию о мероприятиях, их длительности, предшествующих и последующих мероприятиях, закрепленных исполнителях.
- **БазаДанных2 (Excel файл):** Содержит информацию об исполнителях, включая их коэффициенты оперативности и компетентности в предметных областях.

2. **Оптимизация:**
- Рассчитываются временные параметры сетевого графа для каждого мероприятия.
- Формируется матрица инцидентности для ТЗ, учитывающая работы критического пути и доступные ресурсы исполнителей.
- Проводится оптимизация времен КМ путем переназначения исполнителей на работы критического пути с учетом их коэффициентов оперативности.

3. **Вывод результатов:**

Вывод результатов осуществляется в Excel файл со следующими листами:

- **Оптимизация (Лист1):**
Информация о новых путях, полученных после проведения оптимизации.

**Столбцы**:

- № п/п
- № работы
- Длительность работы (мин)
- Предшествующая работа
- Следующая работа
- Исполнитель
- **Пример строки**: `1, 1.1.1, 15, 1.3.3, 1.2.5, 71`

- **До оптимизации (Лист2):** Параметры работ до проведения оптимизации.

**Столбцы**:

- № работы
- Ранний старт
- Раннее окончание
- Поздний старт
- Позднее окончание
- Свободный резерв
- Полный резерв
- Коэффициент напряженности
- **Пример строки**: `1.1.1, 0, 15, 2210, 2225, 2210, 2210, 0.00678733`

- **После оптимизации (Лист3):** Параметры работ после проведения оптимизации.

**Столбцы**:

- № работы
- Ранний старт
- Раннее окончание
- Поздний старт
- Позднее окончание
- Свободный резерв
- Полный резерв
- Коэффициент напряженности
- **Пример строки**: `1.1.1, 160, 175, 710, 725, 550, 550, 0.027272727`

- **Критические пути (Лист4):** Статистика о количестве занятых исполнителей в разные периоды времени.

**Столбцы**:

- Критический путь до оптимизации, время
- Критический путь до оптимизации
- Критический путь после оптимизации, время
- Критический путь после оптимизации
- **Пример строки**: `3175, 0, 1840, 0`

- **Статистика (Лист5):** Статистика о количестве занятых исполнителей в разные периоды времени(по часам).

**Столбцы**:
- Который час
- Сколько воркеров занято
- **Пример строки**: `0, 6`

- **Время воркеров по темам (Лист6):** Статистические данные о продолжительности критического пути до и после оптимизации, информация о времени работы исполнителей и их совместной деятельности.

**Столбцы**:
- Исполнитель
- Тема 1
- Тема 2
- ...
- n
- **Пример строки**: `Эксперт 11, 0, 0, 0, 1440, 0, 0, 0, 115, 135, 150`

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

## Инструкция по запуску программы

### Вариант 1 (простая установка)

---

1. Скачайте исполняемый файл `greedy.exe`
2. Запустите исполняемый файл

### Вариант 2 (продвинутый пользователь)

---

1. Убедитесь, что на вашем компьютере установлен интерпретатор Python версии 3.12 (в версиях ниже/выше работоспособность не гарантируется).
2. Скачайте репозиторий с программой.
3. Установите необходимые зависимости с помощью команды `pip install -r requirements.txt`.
4. Запустите программу, открыв её в вашей IDE или через командную строку.

### Вариант 3

---

1. Убедитесь, что на вашем компьютере установлен интерпретатор Python версии 3.12 (в версиях ниже/выше работоспособность не гарантируется).
2. Скачайте репозиторий с программой.
3. Установите необходимые зависимости с помощью команды `pip install -r requirements.txt`.
4. Запустите в корневой папке репозитория терминал и введите команду `pyinstaller --noconsole --onefile --paths=.\src\greedy_algo .\src\greedy_algo\greedy.py`
5. В папке проекта появится папка dist, в которой лежит EXE файл. Запустите его!

### Пример использования

1. Запустите программу и выберите опцию "Ввод данных".
2. Укажите путь к файлу БазаДанных1.
3. Укажите путь к файлу БазаДанных2.
4. После загрузки данных, выберите опцию "Оптимизация" для начала процесса оптимизации КМ.
5. После завершения оптимизации, программа автоматически сгенерирует файл Excel с результатами и изображения диаграммы Ганта и графа.

### Примеры входных данных

Пример входных данных находится на репозитории под называниями [`БД1.xlsx`](.examples/БД1.xlsx) (examples/БД1.xlsx) и [`БД2.xlsx`](.examples/БД2.xlsx) (examples/БД2.xlsx)

### Примеры выходных данных

Пример входных данных находится на репозитории под называниями:

1. [`Оптимизация.xlsx`](.examples/Оптимизация.xlsx) (examples/Оптимизация.xlsx)
2. [`Диаграмма Ганта с критическим путем до оптимизации.svg`](/examples/Диаграмма%20Ганта%20с%20критическим%20путем%20до%20оптимизации.svg) (examples/Диаграмма Ганта с критическим путем до оптимизации.svg)
3. [`Диаграмма Ганта с критическим путем после оптимизации.svg`](/examples/Диаграмма%20Ганта%20с%20критическим%20путем%20после%20оптимизации.svg) (examples/Диаграмма Ганта с критическим путем после оптимизации.svg)
4. [`Граф оптимизация.svg`](/examples/Граф%20оптимизация.svg) (examples/Граф оптимизация.svg)

### Тестирование (продвинутый пользователь)

В данном проекте реализована возможность тестирования алгоритма.
Для проверки работоспособности тестов достаточно выполнить в терминале команды:
`python -m pytest tests/` и `python tests/create_excel_random.py`
Затем необходимо ввести требуемое количество экспертов и тем их работы.
После этого в проекте появятся файлы БД1_тест и БД2_теств в xlsx и csv форматах.
Эти файлы полностью соответствуют требованиям для входных данных алгоритма и могут использоваться для демонстрации его работы.
Если в проекте уже есть файлы с такими названиями, то при повторноми вызове команд их содержимое автоматически перезапишется.

Также, при желании, с помощью команды `python tests/create_excel_main.py` вы можете воссоздать примеры входных данных БД1 и БД2 в xlsx и csv форматах.

### Дополнительная информация

- [Описание алгоритма `greedy-algo.md`](./docs/greedy-algo.md)
- [Необходимые определения `definitions.docx`](./docs/definitions.docx)
- Алгоритм оптимизации критического пути путем последовательных оптимизаций распределения исполнителей по задачам **(не завершен)** [`chain-algo.md`](./docs/chain-algo.md)
- Алгоритм решения задачи используя траснпортную задачу **(не завершен)** [`transport-solver-algo.md`](./docs/transport-solver-algo.md)

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