Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/korolev2512/compliance-audit
- Owner: KoroLev2512
- Created: 2024-08-31T21:50:17.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2024-08-31T23:09:07.000Z (4 months ago)
- Last Synced: 2024-09-12T05:18:00.398Z (4 months ago)
- Topics: copy, matplotlib, networkx, numpy, openpyxl, os, pandas, python3, tkinter
- Language: Python
- Homepage:
- Size: 932 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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) и его применении в управлении проектами, рекомендуется изучить соответствующую литературу или ресурсы, такие как видеоуроки или статьи.