Применение принципов линейного программирования для оптимизации бизнес-процессов

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

О том как связаны линии, программирование и оптимизация бизнес-процессов, расскажем далее.

Что такое линейное программирование?

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

А теперь простыми словами:

Решение будет нелинейным. Его можно описать сложным графиком, отражающим зависимость между разными уравнениями.

Слово «программирование» здесь не потому, что эта какая-то особая методика написания программ, а потому, что система уравнений может решаться разными способами, и нужно спланировать свой алгоритм решения. Алгоритм решения – это и есть «программа».

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

Метод, который предложил Данциг, называется симплекс-метод. Почерпнуть максимум технической информации по этому вопросу можно из Википедии – Симплекс-метод.

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

Как линейное программирование связано с оптимизацией производств, управленческих процессов, проектов и т.п.?

И вот тут мы приходим к самому главному.

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

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

Как это в принципе возможно?

Одной из самых сложных задач при планировании любого производства является расчёт нагрузки на производственную линию. Подобные задачи могут быть в любых других сферах: экономика (расчёт бюджетов и вложений), маркетинг (загрузка специалистов различного профиля при обслуживании разных каналов продаж), IT-проекты и программирование (максимальная производительность команды), логистика (оптимизация товарных запасов, расчёт нагрузки на отдельные направления), инвестирование и прочее.

Например, с помощью линейного программирования можно рассчитать свои потребности в персонале. Ранее мы писали про планирование штата, но без математических моделей.

Примерные расчёты можно сделать и на основе собственного опыта, но все же это будет не то. Хорошо, когда на помощь приходит математика, в частности, линейное и нелинейное программирование.

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

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

Рассмотрим применение линейного программирования на практике.

Оптимизация производительности IT-команды с помощью принципов линейного программирования

Представим, что в команде есть три отдельных сотрудника (С1, С2 и С3), каждый из которых отвечает за определённые виды работ.

Команда разрабатывает для рынка два основных продукта: A и B.

Время работы над своей частью продукта у каждого сотрудника разное. Условно сотрудники тратят единицы своего времени так:

  • При работе над продуктом А сотруднику С1 нужно 12 единиц, сотруднику С2 – 4 единицы, сотруднику С3 – 3 единицы.
  • При работе над продуктом В сотруднику С1 нужно 4 единицы, сотруднику С2 – 4 единицы, сотруднику С3 – 12 единиц.

Прибыльность у продуктов разная: для продукта А – 30 условных единиц, для В – 40.

Рабочее время сотрудника С1 на заданный период – 300 единиц, сотрудника С2 – 120, а С3 – 252 единицы.

При каких условиях работы прибыль проекта будет максимально высокой?

Составляем систему уравнений:

  • 12×1 + 4×2 ≤ 300
  • 4×1 + 4×2 ≤ 120
  • 3×1 + 12×2 ≤ 252

Где x1 – это количество продуктов типа А, а x2 – количество продукта В. Все переменные должны быть больше нуля.

Цель – найти максимум, который может принимать функция F(x) = 30×1 + 40×2

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

  • 12×1 + 4×2 + x3 = 300
  • 4×1 + 4×2 + x4 = 120
  • 3×1 + 12×2 + x5 = 252

Далее составляется симплекс-таблица (в соответствии с симплекс-методом это будет несколько итераций с разными ведущими строками).

Итоговая таблица без отрицательных значений будет иметь вид:

Целевая функция приобретает следующий вид:

F = 1080 — 20/3 x4 — 10/9×5

Прибыль проекта будет максимальной, если команда будет выпускать 12 продуктов типа А и 18 продуктов типа В. Она составит 1080 условных единиц.

При этом сотрудники С1 и С2 будут загружены на 100%, а сотрудник С3 будет иметь резерв в 84 единицы времени.

Выводы и рекомендации

Математику неслучайно называют царицей наук. И применение линейного программирования лишний раз доказывает это. Метод вполне может применяться на практике – для оптимизации любых бизнес-процессов, которые возможно описать простыми линейными функциями (зависимостями).

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

Чтобы человеческий фактор был минимальным, необходимо использовать правильные методы управления и контроля, мотивации, планирования и коммуникации. Большую часть рутины можно перенести в BPM-систему Projecto.