Современные сложные технические системы — от магистральных сетей операторов связи до бортового оборудования самолётов, спутников и автомобилей — объединяет критическая зависимость от своевременной и гарантированной доставки данных. В телекоммуникациях инженер ищет ответ на вопрос: как направить взрывной трафик в час пиковой нагрузки, не допустив деградации голосовых и видеосервисов? В авионике, космических аппаратах и автомобильных системах управления вопрос стоит более строго: как гарантировать, что пакет с командой от электронного блока управления к актуатору пройдёт через коммутируемую бортовую сеть строго в заданный временной интервал, не создав недопустимой очереди?

На оба эти вызова — телекоммуникационный и бортовой, работает один и тот же математический аппарат, основанный на теории массового обслуживания. Когда нагрузка приближается к пропускной способности канала, будь то оптоволоконная линия между маршрутизаторами, виртуальный линк в авиационной сети AFDX или Ethernet-сегмент в автомобильной архитектуре, очередь растёт не линейно, а гиперболически. В телекоммуникациях это оборачивается экспоненциальным ростом джиттера и потерями пакетов. В бортовых системах такое поведение недопустимо категорически: недетерминированная задержка ставит под угрозу безопасность и сертификацию изделия по стандартам DO-178, ECSS или ISO 26262.

Данная публикация предлагает инженерный метод оптимизации, позволяющий перейти от эмпирического проектирования к строгому расчёту. Взяв за основу модель M/M/1, мы формируем целевую функцию, которая математически точно описывает приближение к пределу пропускной способности. Это позволяет найти такое распределение долей информационных потоков в сети, при котором минимизируется суммарная глубина очередей, а критические каналы гарантированно сохраняют запас по пропускной способности, необходимый для соблюдения жестких временных ограничений.

Данный подход универсален и масштабируется далеко за пределы двух обозначенных приоритетных областей. Та же математика работает в городских транспортных системах, где требуется рассредоточить автомобильные потоки по дублирующим магистралям, чтобы избежать паралича центральных улиц. Она применима в логистике и управлении цепочками поставок — для маршрутизации парка беспилотных погрузчиков на складе или оптимальной загрузки распределительных центров. В дата-центрах и облачных платформах метод решает задачу балансировки вычислительной нагрузки между гетерогенными серверами, предотвращая гиперболический рост очереди на самом медленном узле. Конвейерные производства с параллельными станками, гибридные человеко-машинные сервисы и даже больничные информационные системы, маршрутизирующие потоки пациентов и лабораторных образцов — все эти, казалось бы, разнородные инженерные и организационные задачи сводятся к единой математической модели, которую мы и рассмотрим в данной работе.

Системы массового обслуживания

Системы массового обслуживания (СМО) представляют собой класс математических моделей, состоящих из обслуживающих устройств (каналов, серверов, узлов) и потока заявок, которые эти устройства обрабатывают. В системах массового обслуживания поток — это последовательность событий во времени, поступающих в систему на обслуживание. Иными словами, поток заявок — это процесс, который описывает моменты поступления заявок в систему, а также интенсивность и закономерности этих поступлений. Фундаментальный интерес представляет система M/M/1 — фундаментальная модель, где входящий поток заявок имеет пуассоновский характер (случайные, независимые события, происходящие с постоянной средней интенсивностью), а время обслуживания подчиняется экспоненциальному распределению (характеризующемуся свойством "отсутствия памяти"). Эта простая, но глубокая модель раскрывает парадоксальную природу очередей.

> Парадоксальная природа очередей: при приближении нагрузки к 100% длина очереди растёт гиперболически, а не линейно, делая оптимизацию не просто желательной, а критически необходимой.

Сетевые СМО — следующий уровень сложности, где множество обслуживающих узлов соединены в сеть. Такая система естественно описывается направленным графом, где узлы представляют точки обработки, а ветви — каналы связи с ограниченной пропускной способностью. Для математического представления структуры сети используются матрица смежности (описывающая наличие связей между узлами) и матрица инцидентности (фиксирующая направления этих связей). Именно эти математические объекты становятся строительными блоками для постановки задачи оптимизации.

Но как найти оптимальное распределение потоков в сложной сети? Как направить информационные потоки или транспортные средства так, чтобы минимизировать среднее время ожидания в системе, не допуская при этом перегрузки отдельных каналов? Эта задача решается с помощью нелинейной оптимизации, где целевая функция — сумма средних чисел заявок во всех каналах (выведенная из формулы для M/M/1), а ограничения включают баланс потоков в узлах и физические ограничения пропускных способностей.

Сейчас мы расскажем, как рассчитываются такие системы.

Структура СМО

Структуру системы массового обслуживания можно представить в виде квадратной матрицы сети с нулевой диагональю размером n×n:

M = \begin{pmatrix} 0 & \mu_{1,2} & \mu_{1,3} & \cdots & \mu_{1,n} \\ \mu_{2,1} & 0 & \mu_{2,3} & \cdots & \mu_{2,n} \\ \mu_{3,1} & \mu_{3,2} & 0 & \cdots & \mu_{3,n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \mu_{n,1} & \mu_{n,2} & \mu_{n,3} & \cdots & 0 \end{pmatrix}

Где n – количество узлов в сети, μi,j  – суммарная пропускная способность каналов связи (ветвей графа), соединяющих узлы и направленных от узла с номером i к узлу с номером j, а нулевая главная диагональ подразумевает отсутствие потока от узла к нему же самому.

Направления потоков в системах массового обслуживания можно также представить в виде квадратной матрицы с нулевой диагональю размером n×n :

F = \begin{matrix} 0 & \varphi_{1,2} & \varphi_{1,3} & \cdots & \varphi_{1,n} \\ \varphi_{2,1} & 0 & \varphi_{2,3} & \cdots & \varphi_{2,n} \\ \varphi_{3,1} & \varphi_{3,2} & 0 & \cdots & \varphi_{3,n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \varphi_{n,1} & \varphi_{n,2} & \varphi_{n,3} & \cdots & 0 \end{matrix}

Где n – количество узлов в сети, φi,j – величина потока, направленного от узла с номером i к узлу с номером j. Нулевая диагональ в матрице подразумевает отсутствие потоков от узла, адресованных самому себе.

Потоки и пропускная способность (ёмкость) могут быть представлены в любых единицах измерения, например: Мбит/c, количество продукции в час; количество товаров, перевозимых в сутки; количество транспорта, проезжающего за час, количество заявок в сутки, и т.д.

Узлы и линии связи можно представить в виде графа. Для наилучшей наглядности рассмотрим систему из восьми узлов, двадцати четырёх линий связи и трёх потоков.

Рассмотрим систему в виде ненаправленного графа.

Определим направления и ёмкости линий связи и отобразим их на направленном графе.

Определим направления и интенсивности потоков. Отобразим их в виде стрелок.

Наша система имеет 8 узлов, 24 линии связи и 3 потока.

Система M/M/1

Рассмотрим систему M/M/1, в которой входящий поток заявок имеет пуассоновское распределение, а распределение времени обслуживания экспоненциальное. Тогда среднее число заявок, находящихся в системе определяется формулой:

L = \frac{\frac{\lambda}{\mu}}{1 - \frac{\lambda}{\mu}}

Где λ – интенсивность поступления заявок, μ – пропускная способность линий связи. Когда система работает близко к пределу своей мощности (нагрузка приближается к 100%), даже небольшие случайные задержки начинают накапливаться, вызывая гиперболический, а не линейный, рост очереди. Математически это является следствием геометрического распределения количества заявок в системе, среднее значение для которого и определяется данным выражением.

Зачем нам нужно знать эту зависимость? В дальнейшем на основании данной формулы будет формироваться целевая функция для оптимизации.

Уравнения и неравенства ограничений

В процессе оптимизации для обхода загруженных линий связи, потоки могут разделиться на доли. Структуру долей потоков можно представить в виде системы матриц в количестве m размера n×n :

\begin{aligned} &\begin{pmatrix} 0 & \lambda_{1,2,1} & \lambda_{1,3,1} & \cdots & \lambda_{1,n,1} \\ \lambda_{2,1,1} & 0 & \lambda_{2,3,1} & \cdots & \lambda_{2,n,1} \\ \lambda_{3,1,1} & \lambda_{3,2,1} & 0 & \cdots & \lambda_{3,n,1} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \lambda_{n,1,1} & \lambda_{n,2,1} & \lambda_{n,3,1} & \cdots & 0 \end{pmatrix} ; \\ &\begin{pmatrix} 0 & \lambda_{1,2,2} & \lambda_{1,3,2} & \cdots & \lambda_{1,n,2} \\ \lambda_{2,1,2} & 0 & \lambda_{2,3,2} & \cdots & \lambda_{2,n,2} \\ \lambda_{3,1,2} & \lambda_{3,2,2} & 0 & \cdots & \lambda_{3,n,2} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \lambda_{n,1,2} & \lambda_{n,2,2} & \lambda_{n,3,2} & \cdots & 0 \end{pmatrix} ; \\ &\quad \vdots \\ &\begin{pmatrix} 0 & \lambda_{1,2,m} & \lambda_{1,3,m} & \cdots & \lambda_{1,n,m} \\ \lambda_{2,1,m} & 0 & \lambda_{2,3,m} & \cdots & \lambda_{2,n,m} \\ \lambda_{3,1,m} & \lambda_{3,2,m} & 0 & \cdots & \lambda_{3,n,m} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \lambda_{n,1,m} & \lambda_{n,2,m} & \lambda_{n,3,m} & \cdots & 0 \end{pmatrix} \end{aligned}

Где n – количество узлов, m – количество потоков, λi,j,k ​– величина доли потока номер k, проходящая через линию, направленную от узла номер i к узлу номер j.

Рассмотрим, как формируется уравнение для узла 1, потока φ1,2. Представим доли потоков в виде матрицы:

\begin{pmatrix}  0 & \lambda_{1,2,1} & \lambda_{1,3,1} & \cdots & \lambda_{1,n,1} \\  \lambda_{2,1,1} & 0 & \lambda_{2,3,1} & \cdots & \lambda_{2,n,1} \\  \lambda_{3,1,1} & \lambda_{3,2,1} & 0 & \cdots & \lambda_{3,n,1} \\  \vdots & \vdots & \vdots & \ddots & \vdots \\  \lambda_{n,1,1} & \lambda_{n,2,1} & \lambda_{n,3,1} & \cdots & 0  \end{pmatrix}

Возьмём элемент матрицы с индексом 1, 1, который равен нулю. Элементы первой строки подставляются в уравнение со знаком минус, элементы первого столбца подставляются в уравнение со знаком плюс. Получаем уравнение:

-\lambda_{1,2,1} - \lambda_{1,3,1} - \cdots - \lambda_{1,n,1} + \lambda_{2,1,1} + \lambda_{3,1,1} + \cdots + \lambda_{n,1,1} = 0

Для следующих узлов, возьмём индексы 2, 2; 3, 3; … n, n и повторим составление уравнений. Данные уравнения вводят ограничения, которые обозначают то, что сумма входящих и исходящих потоков в промежуточных узлах равна нулю.

Для наглядности, составим систему уравнений ограничений оптимизации в общем виде на примере узлов: 1,2,3,…n и потока φn, n−1:

\begin{cases} -\lambda_{1, 2, m} - \lambda_{1, 3, m} - \cdots - \lambda_{1, n, m} + \lambda_{2, 1, m} + \lambda_{3, 1, m} + \cdots + \lambda_{n, 1, m} = 0 \\ -\lambda_{2, 1, m} - \lambda_{2, 3, m} - \dots - \lambda_{2, n, m} + \lambda_{1, 2, m} + \lambda_{3, 2, m} + \cdots + \lambda_{n, 2, m} = 0 \\ -\lambda_{3, 1, m} - \lambda_{3, 2, m} - \dots - \lambda_{3, n, m} + \lambda_{1, 3, m} + \lambda_{2, 3, m} + \cdots + \lambda_{n, 3, m} = 0 \\ \quad\vdots \\ -\lambda_{n, 1, m} - \lambda_{n, 2, m} - \lambda_{n, 3, m} - \dots - \lambda_{n, n-1, m} + \lambda_{1, n, m} + \lambda_{2, n, m} + \lambda_{3, n, m} + \cdots + \lambda_{n-1, n, m} = 0 \\ \lambda_{n, 1, m} + \lambda_{n, 2, m} + \lambda_{n, 3, m} + \cdots + \lambda_{n, n-1, m} = \varphi_{n, n-1} \\ \lambda_{1, n-1, m} + \lambda_{2, n-1, m} + \lambda_{3, n-1, m} + \dots + \lambda_{n, n-1, m} = \varphi_{n, n-1} \end{cases}

Где n – количество узлов, m – количество потоков.

Помимо этих систем, необходимым ограничением является максимальная интенсивность долей потоков в линиях связи, которая не должна превышать их пропускные способности. Для системы, состоящей из 8 узлов и 24 линий связи, данное ограничение будет представлено следующей системой неравенств:

\left\{ \begin{aligned} &\lambda_{1, 2, 1} + \lambda_{1, 2, 2} + \lambda_{1, 2, 3} \leq \mu_{1, 2}; \\ &\lambda_{1, 4, 1} + \lambda_{1, 4, 2} + \lambda_{1, 4, 3} \leq \mu_{1, 4}; \\ &\lambda_{1, 5, 1} + \lambda_{1, 5, 2} + \lambda_{1, 5, 3} \leq \mu_{1, 5}; \\ &\lambda_{2, 1, 1} + \lambda_{2, 1, 2} + \lambda_{2, 1, 3} \leq \mu_{2, 1}; \\ &\lambda_{2, 3, 1} + \lambda_{2, 3, 2} + \lambda_{2, 3, 3} \leq \mu_{2, 3}; \\ &\lambda_{2, 6, 1} + \lambda_{2, 6, 2} + \lambda_{2, 6, 3} \leq \mu_{2, 6}; \\ &\lambda_{3, 2, 1} + \lambda_{3, 2, 2} + \lambda_{3, 2, 3} \leq \mu_{3, 2}; \\ &\lambda_{3, 4, 1} + \lambda_{3, 4, 2} + \lambda_{3, 4, 3} \leq \mu_{3, 4}; \\ &\lambda_{3, 7, 1} + \lambda_{3, 7, 2} + \lambda_{3, 7, 3} \leq \mu_{3, 7}; \\ &\lambda_{4, 1, 1} + \lambda_{4, 1, 2} + \lambda_{4, 1, 3} \leq \mu_{4, 1}; \\ &\lambda_{4, 3, 1} + \lambda_{4, 3, 2} + \lambda_{4, 3, 3} \leq \mu_{4, 3}; \\ &\lambda_{4, 8, 1} + \lambda_{4, 8, 2} + \lambda_{4, 8, 3} \leq \mu_{4, 8}; \\ &\lambda_{5, 1, 1} + \lambda_{5, 1, 2} + \lambda_{5, 1, 3} \leq \mu_{5, 1}; \\ &\lambda_{5, 6, 1} + \lambda_{5, 6, 2} + \lambda_{5, 6, 3} \leq \mu_{5, 6}; \\ &\lambda_{5, 8, 1} + \lambda_{5, 8, 2} + \lambda_{5, 8, 3} \leq \mu_{5, 8}; \\ &\lambda_{6, 2, 1} + \lambda_{6, 2, 2} + \lambda_{6, 2, 3} \leq \mu_{6, 2}; \\ &\lambda_{6, 5, 1} + \lambda_{6, 5, 2} + \lambda_{6, 5, 3} \leq \mu_{6, 5}; \\ &\lambda_{6, 7, 1} + \lambda_{6, 7, 2} + \lambda_{6, 7, 3} \leq \mu_{6, 7}; \\ &\lambda_{7, 3, 1} + \lambda_{7, 3, 2} + \lambda_{7, 3, 3} \leq \mu_{7, 3}; \\ &\lambda_{7, 6, 1} + \lambda_{7, 6, 2} + \lambda_{7, 6, 3} \leq \mu_{7, 6}; \\ &\lambda_{7, 8, 1} + \lambda_{7, 8, 2} + \lambda_{7, 8, 3} \leq \mu_{7, 8}; \\ &\lambda_{8, 4, 1} + \lambda_{8, 4, 2} + \lambda_{8, 4, 3} \leq \mu_{8, 4}; \\ &\lambda_{8, 5, 1} + \lambda_{8, 5, 2} + \lambda_{8, 5, 3} \leq \mu_{8, 5}; \\ &\lambda_{8, 7, 1} + \lambda_{8, 7, 2} + \lambda_{8, 7, 3} \leq \mu_{8, 7}. \end{aligned} \right.

Целевая функция

На основании матрицы пропускных способностей и матрицы потоков, составим целевую функцию. В общем виде целевая функция будет иметь следующий вид:

L(\lambda_{i,j,k}) = \sum_{i=1}^n \frac{\frac{\sum_{j=1}^m \lambda_{i,j,k}}{\mu_{i,j}}}{1 - \frac{\sum_{j=1}^m \lambda_{i,j,k}}{\mu_{i,j}}}

где L(λi,j,k) – значение среднего количества заявок в системе массового обслуживания, n – количество линий связи m – количество потоков, μi,j – величина пропускной способности линии связи, направленной от узла i к узлу j, λi,j,k  – искомая оптимальная интенсивность доли потока направленного от узла i к узлу j, являющегося частью потока k.

Задача оптимизации сводится к следующей цели: найти такие значения λi,j,k, при которых L(λi,j,k) примет минимальное значение. Найденные значения λi,j,k являются оптимальными долями потоков, распределяющихся по системе.

Оптимальное распределение потоков

Выполнив задачу оптимизации, отобразим найденное оптимальное распределение долей потоков в виде графов.


Загруженность линий связи

Отобразим коэффициенты загрузки линий связи в виде графа. На основании данного графа можно проанализировать, требуется ли определённым линиям связи увеличение пропускной способности. В случае, если оптимизация невыполнима при данной пропускной способности линий связи, коэффициенты загрузки, превышающие единицу обозначают во сколько раз нужно увеличить данную линию связи для того, чтобы оптимизация стала возможной.

Как это работает в Engee

Практическая реализация данного метода выполнена в виде интерактивного проекта в Engee: Оптимизация СМО | Engee ‒ Сообщество.

Алгоритм разделён на основной управляющий скрипт и набор модулей, каждый из которых отвечает за отдельный этап вычислений: загрузку исходных данных, формирование математической модели, построение ограничений, выполнение оптимизации, обработку и визуализацию результатов. Такая модульная архитектура упрощает сопровождение программы, позволяет независимо развивать отдельные компоненты и обеспечивает простую адаптацию алгоритма к различным типам задач и структурам данных.

Работа начинается с загрузки пользователем структуры системы массового обслуживания из xlsx-файлов. В качестве исходных данных используются матрица пропускных способностей (ёмкостей) линий связи и матрица направлений и интенсивностей информационных потоков. На основании этих таблиц программа автоматически формирует внутреннее представление сети в виде ориентированного графа, определяет существующие линии связи и создаёт переменные оптимизации, соответствующие долям каждого потока, проходящим по каждой допустимой ветви графа.

Далее алгоритм автоматически строит математическую модель задачи. Для каждого потока формируется система уравнений сохранения потока, обеспечивающая баланс входящих и исходящих интенсивностей во всех промежуточных узлах сети. Одновременно создаются ограничения, запрещающие превышение суммарной интенсивностью потоков пропускной способности каждой линии связи. На основе этих ограничений и аналитического выражения для среднего числа заявок в системе M/M/1 генерируется нелинейная целевая функция, представляющая собой сумму средних длин очередей по всем линиям связи.

После построения полной математической модели, она передаётся специализированному пакету нелинейной оптимизации. Оптимизатор подбирает такие значения переменных, при которых выполняются все ограничения, а значение целевой функции становится минимальным. Благодаря автоматическому дифференцированию и современным численным методам решение находится без необходимости ручного вывода производных или разработки специализированных алгоритмов оптимизации.

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

Для повышения наглядности как исходные данные, так и результаты оптимизации автоматически визуализируются в виде направленных графов. На графах отображаются структура сети, направления и интенсивности потоков, пропускные способности линий связи, а также итоговое распределение потоков после оптимизации. Такое представление позволяет инженеру быстро оценить изменение маршрутов, выявить наиболее загруженные участки сети и проанализировать эффективность найденного решения без детального изучения числовых таблиц.

Все результаты вычислений автоматически сохраняются в xlsx-файлы, содержащие матрицы оптимальных направлений и интенсивностей потоков и коэффициенты загрузки линий связи. Благодаря этому результаты могут быть использованы для дальнейшего анализа, документирования, интеграции с другими программными комплексами или повторных расчётов без дополнительной обработки данных.

Архитектура проекта изначально ориентирована на расширяемость. При необходимости алгоритм может быть легко адаптирован к произвольным форматам входных данных, альтернативным моделям сетей и различным способам представления результатов. Вместо матриц, загружаемых из xlsx-файлов, могут использоваться базы данных, форматы JSON, XML, CSV или данные, поступающие непосредственно от информационных систем и средств мониторинга. Аналогично результаты оптимизации могут быть представлены в виде таблиц, графов, интерактивных панелей визуализации, отчётов или экспортированы в любые форматы, поддерживаемые используемой вычислительной средой. Такая гибкость позволяет применять разработанный алгоритм не только как самостоятельный инструмент исследования, но и как вычислительное ядро, интегрируемое в существующие инженерные и информационные системы.

Заключение

Настоящее исследование демонстрирует методологический переход от фундаментальной модели M/M/1 к практической задаче оптимизации потоков в сетях, где цена ошибки измеряется не только комфортом пользователя, но и функциональной безопасностью системы. Ключевая практическая ценность алгоритма применима в различных инженерных областях.

Проектирование и эксплуатация телекоммуникационных сетей. Алгоритм даёт инструмент централизованного или офлайн-расчёта многопутевой маршрутизации. Получаемая матрица оптимальных долей трафика — это инженерно обоснованная конфигурация для механизмов распределения потоков, позволяющая выровнять загрузку интерфейсов и предотвратить микро-заторы, минимизируя задержки для сервисов реального времени.

Проектирование бортовых систем авиационного, космического и автомобильного назначения. Подход становится незаменимым инструментом анализа уже на этапе эскизного проектирования. Это может быть как сеть авионики AFDX, бортовая шина космического аппарата SpaceWire, так и автомобильная архитектура с зональными контроллерами на высокоскоростном Ethernet — минимизация целевой функции даёт разработчику такую конфигурацию виртуальных линков и потоков данных, при которой загрузка критических физических линий остаётся строго ниже порога нелинейного роста очереди. Это позволяет количественно обосновать соблюдение требований по детерминированной задержке и запасам пропускной способности, что критически важно для успешной сертификации по отраслевым стандартам безопасности.

Помимо приоритетных направлений, предложенная методология легко адаптируется под широкий спектр других инженерных и организационных задач. В транспортном планировании она позволяет рассчитывать оптимальное распределение автомобильного движения по дублирующим маршрутам, сглаживая пиковые нагрузки на улично-дорожную сеть. В логистике и управлении запасами минимизирует очереди на погрузочных рампах и в складских проходах за счёт динамической маршрутизации погрузчиков и оптимального разделения товарных потоков. В дата-центрах метод формализует задачу балансировки нагрузки, математически точно определяя, какую долю запросов следует направить на каждый сервер с учётом его производительности, чтобы минимизировать время отклика. Конвейерные производства получают инструмент распределения заготовок продукции между параллельными станками, предотвращающий образование межоперационных задержек. В гибридных сервисных системах алгоритм находит оптимальный баланс между автоматическими обработчиками и живыми операторами, а в здравоохранении — помогает маршрутизировать потоки пациентов и лабораторных анализов так, чтобы минимизировать суммарное время ожидания при ограниченных ресурсах диагностического оборудования.

Таким образом, представленный алгоритм — это не абстрактная математическая конструкция, а вычислительное ядро, готовое к интеграции в реальные инженерные инструменты. Он может быть встроен в программные комплексы автоматизированного проектирования сетей, системы мониторинга и адаптивного управления трафиком, цифровые двойники производственных и логистических объектов, а также в модули верификации на этапе сертификации ответственных систем.

Предложенный метод снимает с инженера необходимость ручного подбора подходящих конфигураций. Поиск баланса между кратчайшим путём и наименее загруженным резервным маршрутом, а также оптимальное масштабирование долей потоков выполняются вычислительным алгоритмом автоматически. Оптимизация перестаёт быть искусством компромиссов и становится строгой, воспроизводимой инженерной дисциплиной — будь то сеть оператора связи, бортовая шина автомобиля или логистическая система крупного распределительного центра.

Следует отметить, что оптимизация сетевых структур более не является исключительной компетенцией специалистов с доступом к специализированному программному обеспечению. В настоящее время это становится стандартизированной процедурой, в которой сложные вычислительные алгоритмы реализованы в интуитивно понятном интерфейсе, а глубина аналитики органично сочетается с наглядностью представления.

Если хотите проследить, как работает алгоритм, сделанный по этим выкладкам, то модель из этой статьи можно скачать или выполнить по этому адресу: Оптимизация СМО | Engee ‒ Сообщество.

Может быть ваша работа или научное любопытство потребуют адаптации примера к каким-то реальным категориям — тогда добро пожаловать в комментарии, давайте вместе думать, как нам сделать наш мир оптимальным в имеющихся ограничениях.

Вперёд в прекрасное будущее! Где самые большие очереди будут выстраиваться за доступом к вашим математическим навыкам!

Комментарии (1)


  1. wataru
    14.07.2026 09:46

    Там где у вас формула для целевой функции L() у вас неточность в нотации. Сумма по переменной i, означающей ребро, а внутри u_ij, но вот это i внутри - это уже узел, а не ребро. Правильно было бы записать сумму по 1 <= i,j <=n, Где n - количество узлов. Но это мелочь, просто в глаза бросилось.

    А вопрос по делу: как работает оптимизация, что за решатель? У вас линейные ограничения, но целевая функция не линейная и даже не квадратичная. Как должно оно работает?

    Кажется, вашу задачу можно свести к задаче линейного программирования, если все потоки и ограничения сделать целыми. Вроде как пропускная способность бит/с и потоки тоже в неделимых битах/с считать. Тогда можно разбить каждое ребро с пропускной способностью C на кучу параллельных ребер с пропускными способностями 1 бит/c и назначить им цены: 0/C-1/(C-1), 2/(C-2) - 1/(C-1)... ,(C-1)/1- (C-2)/2. Фактически, цена ребра - это разность L(k)-L(k-1) - на сколько увеличится штраф по изначальному ребру, если по нему пустить дополнительную единицу потока, пока там уже было k-1 потока. Поскольку целевая функция выпуклая от полного потока по ребру, то приращения строго возрастают при увеличении потока, поэтому просто взяв k минимальных параллельных ребер вы получите точно целевую функцию при потоке k по изначальному ребру. И вот уже задача свелась к мульти-потоку в графе. Тут уже линейные решатели (при чем даже не целочисленные) все решат, возможно даже быстрее. А если поток всего один, то задача вообще за полиномиальное время решается.

    С другой стороны, это сильно увеличивает количество ребер в графе. Но тут можно балансировать точность и скорость. Если считать не в бит/c а кбит/c или 100кбит/c, то вы уменьшаете количество параллельных ребер и ускоряете решение.

    Гуглите в сторону выпуклых целевых функций для максимального потока в графе.