Разбор примера задачи нелинейной оптимизации
Решим и проанализируем описанную выше ситуацию принятия решения для директора лесозаготовительного комбината.
Анализ будем проводить только с учетом переменных расходов. Как следует из общей теории оптимизации, постоянное слагаемое не оказывает влияние на оптимальный план действий, изменяя только значение целевой функции.
Как видно из данных примера, весь анализ можно провести в терминах количества рабочих. Обозначим через число рабочих на предприятии. Так как мы не можем уволить более 30 человек из имеющихся 70, то переменная ограничена снизу: .
Выпуск продукции пропорционален численности и равен м3 в мес. Доход от продажи в месяц тогда равен:
Если возможную субсидию при учесть в доходной части, то общую функцию месячного дохода можно записать так:
(3)
Если не нанимать новых сотрудников, то будет выполняться условие , а месячные расходы равны:
.
Если нанять новых рабочих, то . Из этого количества рабочих 70 будут «старых», а – «новых». Тогда месячные расходы будут складываться из затрат на «старых» по 80 тыс. руб. на человека и затрат на новых по тыс. руб. на человека. Суммарные затраты составят:
.
В итоге общую функцию месячных затрат можно записать в виде:
(4)
Прибыль комбината (без учета постоянных расходов) равна разнице между доходами (3) и переменными расходами (4) и запишется в виде:
(5)
Таким образом, математически задача формулируется так: найти , при котором функция прибыли (5) имеет максимум.
Очевидно, функция (5) меняется непропорционально искомой переменной и задача является нелинейной.
Пройдем для этой задачи все пункты алгоритма поиска глобального экстремума.
1) Определим градиент функции. В данном случае функции одной переменной градиент совпадает с производной. Если функция задана разными выражениями на разных интервалах, то нужно просто взять производные для каждого интервала. Они будут справедливы при строгом выполнении ограничивающих интервалы неравенств:
(6)
Как видно из выражения (6), производные на втором и третьем интервалах совпадают, но между ними при производная не существует, так как функция терпит разрыв.
2) Определим точки, где производная равна нулю. Для этого определим все , удовлетворяющие равенствам:
Рассмотрим интервал . На нем имеем уравнение:
.
Решая уравнение, находим
.
Однако данное значение не попадает в интервал: . Значит на указанном интервале нулей производной нет.
Рассмотрим интервал . На нем имеем уравнение:
.
Решая уравнение, находим
.
Данное значение принадлежит рассматриваемому интервалу: . Таким образом, является корнем производной.
Рассмотрим интервал . На нем имеем уравнение:
.
Решая уравнение, находим
.
Это значение не принадлежит рассматриваемому интервалу: . Значит на указанном интервале нулей производной нет.
Итак, производная равна нулю только в точке . Определим значение функции в этой точке:
.
То есть наняв 100 рабочих получим прибыль, равную 11400 тыс. руб.
3) Определим точки, где производная не существует. Это все точки границ интервалов. Найдем в них значение функции.
В точке функция имеет излом, но остается непрерывной. Ее значения с обеих сторон совпадают и равны:
.
Если останутся прежние 70 рабочих, то прибыль будет 11133 тыс. руб.
В точке функция имеет скачек. Ее значения разные с двух сторон.
При предел будет равен:
.
При предел будет равен:
.
Таким образом, наняв 150 рабочих получим прибыль, равную 11195 тыс. руб.
Замечание 1. В данной задаче из условия целочисленности числа рабочих можно было не искать значения пределов, а проверить значение прибыли при 150 и 149 рабочих.
Замечание 2. Из экономического смысла задачи очевидно, что предел справа (когда субсидия будет выплачена) будет лучше, чем предел слева (без субсидии).
4) Единственной границей области в данном случае является . При этом значении:
.
То есть при 40 работниках прибыль будет равна 9449 тыс. руб.
5) Поведение функции на бесконечности можно не рассматривать, как в задачах экономики. Однако, если это сделать, то получим:
.
Как и ожидалось, нанимая неограниченное количество рабочих будем получать неограниченные убытки.
6) Из всех найденных значений целевой функции выберем самое большое. Собираем все значения вместе:
,
,
,
,
.
Как видно, наибольшее значение достигается при .
Таким образом, оптимальное управленческое решениебудет таким:
Ø Необходимо привлечь к работе всего 100 человек: 70 уже имеющихся и 30 новых. В этом случае мы получим наибольшую прибыль, равную 11 миллионов 400 тысяч рублей.
Ответить на вопросы, поставленные перед собой новым руководителем, можно так:
Ø Имеющееся количество рабочих не оптимально. Необходимо нанять еще 30 человек. Нанимать рабочих до 150 человек не выгодно, так как получаемая субсидия вместе с ростом доходов не компенсирует полученный рост расходов.
Сделаем еще несколько замечаний.
Ø Если мы сравним суммы прибыли при текущем количестве рабочих (11 млн. 133 тыс. руб.) и оптимальным (11 млн. 400 тыс. руб.), то видно, что прибыль меняется всего на 267 тыс. руб. или менее чем на 3%. Необходимо как следует проанализировать, стоит ли менять сложившийся вариант работы ради таких незначительных изменений. Для анализа необходимо уже будет учесть постоянные издержки. Если они велики, то прибыль с их учетом становится значительно меньше и дополнительные 267 тыс. руб. в месяц являются уже существенным выигрышем.
Ø Принятие на работу всего 150 человек приводит тоже к близкому финансовому результату. Этот случай может быть рассмотрен как вариант расширения предприятия, если есть перспектива поиска лучшего варианта сбыта продукции.
Графическая интерпретация решения.
Построим на одном графике все три функции, описываемые уравнениями (4), (5), (6) (см рис. 1).
Рис. 1. Графики зависимости экономических показателей
от количества рабочих
Из графика видно, что оптимум прибыли достигается примерно при 100 рабочих.
График прибыли ведет себя достаточно плавно в окрестности максимального значения, значит небольшие изменения числа около рабочих 100 человек не сильно влияют на финансовый результат.
Методика и специфика решения задач
нелинейной оптимизации в MS Excel
Задачу оптимизации нелинейной функции (6) можно было бы решить не путем анализа с использованием производной, и используя инструмент «Поиск решения» в MS Excel.
Если реализовать вычисления функции (6) по значению переменной в ячейке (см. рис. 2), то можно определить оптимально значение переменной в этой ячейке.
Рис. 2. Реализация вычисления функции прибыли в MS Excel
Для оптимизации используем инструмент «Поиск решения». Настраиваем параметры поиска решения (рис. 3) следующим образом:
Рис. 3. Настройка инструмента «Поиск решения»
· в поле «Оптимизировать целевую функцию» указываем ячейку, где реализована формула для прибыли;
· в поле «До» указываем «Максимум»;
· в поле «Изменяя ячейки переменных» указываем ячейку, предназначенную для значения переменной ;
· в поле «В соответствии с ограничениями» добавляем ограничение невозможности большого увольнения ;
· состояние поля «Сделать переменные без ограничений неотрицательными» в нашей задаче безразлично, так как единственная переменная ограничена;
· в поле «Выберите метод решения» выбираем «Поиск решения нелинейных задач методом ОПГ» (так как наша задача нелинейная).
Нажав кнопку «Найти решение» получаем форму «Результаты поиска решения» (рис. 4). Убедившись, что в этом окне написано «Решение найдено. Все ограничения и условия выполнены», выбираем «Сохранить найденное решение» и нажимаем кнопку «Ок».
Рис. 4. Форма «Результаты поиска решения»
В ячейке переменной получаем оптимальное решение (рис. 5).
Рис. 5. Значения переменных после оптимизации
Как видим, нам удалось найти правильное решение автоматически.
Замечание: небольшое отличие значения в ячейке для искомой переменной от точного (получилось вместо ) обусловлено численной реализацией метода поиска. Это значение можно смело округлить с заданной точностью.
Важно отметить такую специфику решения нелинейных задач в MS Excel. Поиск решения методом ОПГ ищет значения переменных от начального заданного, обеспечивая постоянное улучшение результата с текущего места. Такая реализация приводит к поиску локального, а не глобального экстремума. Так, «начав» поиск от 70 рабочих мы нашли оптимальное значение 100 человек. Начав же, например, со 160 человек, получим «оптимальное» количество 150 (рис. 6). Выбрав же вначале 200 человек можно снова прийти к оптимальному значению 100.
Рис. 6. Изменение решения при смене начального приближения
Описанное свойство является характерным для большинства алгоритмов численного поиска оптимумов в задачах нелинейной оптимизации. Для того, чтобы получить действительно глобальный максимум необходимо попробовать определить оптимальное решение для нескольких начальных приближений (в задачах экономики они, как правило, выбираются легко из смысла задачи). В задачах с одной и двумя переменными очень помогает построение графиков.