https://github.com/gilbert00/transportnet
Constraction all independent linear constraints for transport net on bipartite graph
https://github.com/gilbert00/transportnet
graph-algorithms java-17 python python-3 transport-network
Last synced: 3 months ago
JSON representation
Constraction all independent linear constraints for transport net on bipartite graph
- Host: GitHub
- URL: https://github.com/gilbert00/transportnet
- Owner: Gilbert00
- Created: 2024-07-23T12:24:55.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-01-19T14:30:26.000Z (5 months ago)
- Last Synced: 2025-02-03T21:47:33.016Z (5 months ago)
- Topics: graph-algorithms, java-17, python, python-3, transport-network
- Language: Java
- Homepage:
- Size: 507 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme-ru.md
Awesome Lists containing this project
README
# BuildConstrains.py #
# BuildConstrains.java ### Программа построения всех независимых ограничений для значений потоков в входящих и выходящих вершинах, при которых существовует решение распределительной задачи на двудольном графе.##
Данные исходного графа вводятся в текстовом файле формата csv без заголовков.
Результаты выводятся в виде набора неравенств между значениями в вершинах для основного или двойственного графа.### Параметры ##
1. Имя входного файла с графом
2. Режим работы (необязателен)### Описание параметров ###
1. Входной файл с графом имеет формат csv без заголовков с разделителем полей символом ',' и описывает двудольный граф (X,Y).
В каждой строке
1-е поле: имя вершины из X,
остальные поля: набор имен вершин из Y, связанных ребром с вершиной поля 1.
2. =0: ограничения строятся для основного и двойственного графов - применяется по умолчанию;
=1: ограничения строятся только для основного графа;
=2: ограничения строятся только для двойственного графа;### Имеются 3 версии программы.
- Первая версия на процедурах Python3 в ветке **main**.
- Вторая версия на классах Python3 в ветке **oop**.
- Третья версия на Java-17 в ветке **java-full**.Текущая версия на Python3 не выводит список ограничений в виде неравенств.
# FullNet.java#
## Программа статистического анализа числа всех независимых ограничений для потоков в сети, при которых существует решение распределительной задачи на двудольном графе. Исследуются все сети фиксированного размера ##
### Параметры ###
1. Размер X компоненты сети
2. Размер Y компоненты сети### Результат ###
Математическое ожидание и среднее отклонение размера сети.
Используется SQLite база TransportNet.s3db.# RandomNets.java #
## Программа статистического анализа числа всех независимых ограничений для потоков в сети, при которых существует решение распределительной задачи на двудольном графе. Исследуются случайные сети фиксированного размера ##
### Параметры ###
1. Размер X компоненты сети
2. Размер Y компоненты сети
3. К-во генерируемых сетей
4. Режим работы (необязателен) =12: расчет добавляется к предыдущему### Результат ###
Математическое ожидание и среднее отклонение размера сети.
Используется SQLite база TransportNet.s3db.# CheckResource.java #
## Процедура рассчета всех ограничений для конкретного набора ресурсов ##
### Параметры ###
1. Имя входного файла с графом
2. Имя входного файла с набором ресурсов
3. Режим работы (необязателен)### Описание параметров ###
1. Структура такая же, как и в BuildConstrains
2.
* Входной файл с набором ресурсов имеет формат csv без заголовков с разделителем полей символом ',' и состоит из 2 строк. 1 строка - величина входящего ресурса по каждому источнику, 2 строка - величина выходящего ресурса по каждому потребителю. Порядок величин в каждой строке соответствует порядку вершин в графе. В каждом ресурсе для разделения целой и дробной части используется символ '.'.
* Входной файл с набором ресурсов имеет формат json. Ключ "X" описывает источники, ключ "Y" описывает потребителей в исходном графе. Эти объеты имеют одинаковую структуру списка объектов "node" и "value". Объект "node" - массив имен вершин, объект "value" - соответствующий числовой массив значений ресурсов.
* Пример:
{"X":{"node":["1", "2", "3"],"value":[1.0, 2.0, 3.0]},"Y":{"node":["0", "1", "2", "3"],"value":[1.0, 2.0, 3.0, 4.0]}}
3. Значения те же, что и в BuildConstrains### Результат ###
Набор результатов вычисления каждого ограничения после подстановки в него значений ресурсов + символический вид каждого ограничения.
Используется SQLite база, имя которой формируется из имени входного файла с графом добавлением суффикса .s3db.# Запуск программ #
## Python программа ##
Python программа запускалась в среде PyCharm 2024.1.4 (Community Edition) с использованием python 3.12.
Требуемые модули:
* numpy
* pip-23.2.1.virtualenv## Java программы ##
Java программы запускались в среде Apache NetBeans 22 с использованием Java 17.
Требуемые модули:
* gson-2.10.1.jar
* gson-parent-2.10.1.pom
* slf4j-api-1.7.36.jar
* slf4j-nop-1.7.36.jar
* sqlite.jdbc-3.46.0.1.jar### Примеры запусков ###
* Main class: buildconstrains.BuildConstrains
* Arguments: graph304.csv 1 0
* Working Directory: D:\Develop0\TestTeX\TransportNet
Или
* bc.cmd
---
* Main class: buildconstrains.FullNet
* Arguments: 3 4
* Working Directory: D:\Develop0\TestTeX\TransportNet
---
* Main class: buildconstrains.RandomNets
* Arguments: 4 10
* Working Directory: D:\Develop0\TestTeX\TransportNet
---
* Main class: buildconstrains.CheckResource
* Arguments: graph300.csv rsrc00.json 0
* Working Directory: D:\Develop0\TestTeX\TransportNet