- •Задача распределения капиталовложений
- •Аннотация
- •Содержание
- •Введение
- •1.Постановка задачи.
- •2. Построение аналитической модели
- •3.Обзор численных методов решения задач лп
- •3.1.Алгоритм симплекс-метода для задачи на минимум
- •3.2.Двойственный симплекс-метод
- •Вычислительная схема двойственного симплекс – метода
- •3.3.Метод Гомори
- •4.Расчётная часть
- •5.Алгоритм программы
- •6.Описание программы
- •Список использованных источников
- •Приложение а.
1.Постановка задачи.
Распределение капиталовложений
Общую сумму
капиталовложений k
необходимо распределить между q
объектами, потребности которых
определяются суммами
,
а ожидаемые прибыли
.
При этом на каждый объект капиталовложения
либо выделяются в необходимой сумме,
либо совсем не выделяются.
Задача: найти распределение капиталовложений с максимальной прибылью.
2. Построение аналитической модели
Цель оптимизации получение максимальной прибыли при заданных издержках.
Составим аналитическую модель задачи. Для этого сначала введем переменные, которые требуется определить:
- булева переменная,
принимающая значение 1, если капиталовложения
выделяются и 0, если не выделяются.
Максимизировать нужно прибыль, а значит, сумму ожидаемых прибылей от объектов которым выделены средства. Целевая функция выглядит следующим образом:
![]()
Также необходимо учесть, что:
сумма выделенных средств должна быть меньше либо равна общей сумме имеющихся средств.
средства должны либо выделяться в необходимом объеме, либо совсем не выделяться.
Ограничения будут выглядеть следующим образом:
![]()
![]()
Задача относится к классу задач целочисленного линейного программирования. Поэтому нужно записать условие целочисленности:
![]()
Для поиска оптимального целочисленного решения воспользуемся методом Гомори.
3.Обзор численных методов решения задач лп
Рассмотрим задачу ЛП в канонической форме:
(1)
![]()
(2)
![]()
(3)
Будем предполагать,
что
,
уравнения системы (2) линейно независимы,
m<n
и система (2) -(3) совместна.
При сделанных предположениях можно выбрать m неизвестных, таких, чтобы определитель, составленный из коэффициентов при неизвестных, не обращался в ноль. Тогда задача (1)-(3) может быть приведена к виду, который называется специальной формой задачи ЛП:
![]()
(4)

Одно из допустимых
решений этой задачи можно найти, если
переменные
положить равными нулю. Такое решение
называетсядопустимым
базисным решением.
Оно имеет вид:
![]()
Этому решению
соответствует значение целевой функции
.
Переменные
называютбазисными,
а переменные
называютнебазисными
или свободными.
Число возможных базисов в задаче
размерности n
с m
ограничениями не превосходит величину
.
Известно, что каждому допустимому базисному решению соответствует вершина многоугольника допустимых решений, и оптимальное решение задачи достигается в одной из вершин многоугольника. Поэтому оптимальное решение задачи ЛП находится среди допустимых базисных решений. Существуют рациональные способы последовательного перебора допустимых базисных решений, которые позволяют рассматривать не все допустимые базисные решения, а их минимальное число. К таким методам относится симплекс-метод. [1].
3.1.Алгоритм симплекс-метода для задачи на минимум
Шаг 0. Приводим задачу ЛП к специальной форме (4).
Шаг 1. Составляем симплекс-таблицу, соответствующую специальной форме:
|
|
B |
|
… |
|
… |
|
|
L |
|
|
… |
|
… |
|
|
|
|
|
… |
|
… |
|
|
.. |
.. |
………… | ||||
|
|
|
|
… |
|
… |
|
|
.. |
.. |
………… | ||||
|
|
|
|
… |
|
… |
|
Заметим, что этой
таблице соответствует допустимое
базисное решение
задачи (4). Значение целевой функции на
этом решении
![]()
Шаг 2. Проверка на оптимальность.
Если среди элементов
индексной строки симплекс – таблицы
нет ни одного положительного элемента,
т. е.
,
оптимальное решение задачи ЛП найдено:
.Алгоритм
завершает работу.
Шаг 3. Проверка на неразрешимость.
Если среди
есть положительный элемент
,
а в соответствующем столбце
нет ни одного положительного элемента
,
то целевая функцияL
является неограниченной снизу на
допустимом множестве. В этом случае
оптимального решения не существует.
Алгоритм завершает работу.
Шаг 4. Выбор ведущего столбца q.
Среди элементов
выбираем максимальный положительный
элемент
.Этот
столбец объявляемведущим.
Шаг 5. Выбор ведущей строки p.
Среди положительных
элементов столбца
находим элемент
,
для которого выполняется равенство:
![]()
Строку p
объявляем ведущей.
Элемент
объявляем ведущим.
Шаг 6. Преобразование симплексной таблицы.
Составляем новую симплекс-таблицу, в которой:
а) вместо базисной
переменной
записываем
,
вместо небазисной переменной
записываем
;
б) ведущий элемент
заменяем на обратную величину
;
в) все элементы
ведущего столбца (кроме
)
умножаем на
;
г) все элементы
ведущей строки (кроме
)
умножаем на
;
д) оставшиеся элементы симплексной таблицы преобразуются по следующей схеме «прямоугольника».
Из элемента вычитается произведение трех сомножителей:
первый - соответствующий элемент ведущего столбца;
второй - соответствующий элемент ведущей строки;
третий - обратная
величина ведущего элемента
.
Преобразуемый элемент и соответствующие ему три сомножителя как раз и являются вершинами «прямоугольника».
Шаг 7. Переход к следующей итерации осуществляется возвратом к шагу 2. [2]
