Автор работы: Пользователь скрыл имя, 14 Октября 2013 в 14:49, курсовая работа
Библиотека «simplex» - предназначена для оптимизации линейных систем с использованием симплексного алгоритма. Особенность ее в том, что имеется возможность выполнять оценки промежуточных этапов симплексного алгоритма, например, определять базисные переменные и т.п.
§1. Библиотека «simplex» пакета Maple
§2. Постановка задача линейного программирования для N переменных
§3. Постановка Транспортной задачи (ТЗ) для n переменных
§4. Пример решения задача линейного программирования
§5. Пример решения Транспортной задачи
Список литературы
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
ПСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ
Решение задач линейного программирования в среде Maple
Курсовая работа
Студента 4 курса
физико-математического
факультета отделение «математика»
Гоняна Аршака Арзумановича
Научный руководитель
Матвеев Владимир Александрович
Псков
2008
Содержание
§1. Библиотека «simplex» пакета Maple
§2. Постановка задача линейного программирования для N переменных
§3. Постановка Транспортной задачи (ТЗ) для n переменных
§4. Пример решения задача линейного программирования
§5. Пример решения Транспортной задачи
Список литературы
§1. Библиотека «simplex» пакета Maple
Библиотека «simplex» - предназначена для оптимизации линейных систем с использованием симплексного алгоритма. Особенность ее в том, что имеется возможность выполнять оценки промежуточных этапов симплексного алгоритма, например, определять базисные переменные и т.п.
После подключения библиотеки командой with(simplex) пользователю становится доступны функции и опции, указанные в следующей таблице.
basis |
Находит базисные переменые |
cterm |
Выводит список элементов вектора ресурсов |
display |
Представляет систему в матричной форме |
dual |
Преобразует данную задачу в двойственную задачу линейного программирования |
feasible |
Возвращает true – если решение существует, и false – если нет |
maximize |
Находит максимум целевой функции |
minimize |
Находит минимум целевой функции |
NONNEGATIVE |
Опция: указание на условие не отрицательности всех переменных |
setup |
Приводит систему ограничений к стандартной форме |
standardize |
Превращает систему |
§2. Постановка задача линейного программирования для N переменных
Рассмотрим задачу формирования плана производства: некоторое предприятие может выпускать определённый набор продукции. Нормы затрат известны. Требуется построить производственный план, учитывающий ограниченность ресурсов в котором необходимо определить нормы выпуска каждого вида продукции, чтобы прибыль от её реализации была максимальной.
Построение экономико-
n - число различных видов продукции.
m - число различных ресурсов.
aij - объём i-того ресурса, который расходуется на производство одной единици j-того вида продукции i=1..m, j=1..n.
Xj - объем (количество единиц) j-того вида продукции в производственном плане предприятия (j от 1 до n).
Прибыль обозначим F, тогда F=c1X1+c2X2+...+cnXn->=
Составим ограничения для первого ресурса:
а11 - объем первого ресурса, который расходуется на производство одной единицы первого вида продукции;
а11Х1 - объём первого ресурса, который требуется на изготовление Х1 единиц первого вида продукции;
а12Х2 - объём первого ресурса, который требуется на изготовление Х2 единиц второго вида продукции;
а1nХn - объём первого ресурса, который требуется на изготовление Хn единиц n-ого вида продукции;
а11Х1+a12X2+...+a1nXn - объём первого ресурса, который требуется на изготовление продукции, следовательно, мы имеем следующее ограничение:
а11Х1+а12+...+а1nXn<= b1
Аналогично для остальных ресурсов:
а21Х1+а22+...+а2nXn<=b2
а31Х1+а32+...+а3nXn<=b3
..............................
аm1Х1+аm2+...+amnXn<=bm
Кроме того, количество выпущенной продукции не может быть отрицательной, следовательно, Х1>= 0, X2>=0, ...,Xn>=0.
§3. Постановка Транспортной задачи (ТЗ) для n переменных
Пусть имеется несколько поставщиков однородной продукции (каждый с определенным запасом) и несколько потребителей этой продукции (с известными потребностями у каждого). Задана также сеть коммуникаций (дорог, рек, воздушных линий и т.д.) связывающая каждого поставщика с каждым потребителем. На каждой коммуникации задана цена перевозки – стоимость перевозки единицы продукции. Если какая – либо коммуникация отсутствует, то считаем, что она есть, но цену перевозки на ней устанавливаем равной бесконечности (+∞). Это соглашение сделает невыгодным перевозку по ней и автоматически исключит данную коммуникацию из плана перевозок.
Таким образом, требуется составить план перевозок продукции от поставщиков к потребителям так, чтобы потребности потребителей были бы удовлетворены за счет вывоза запаса от поставщиков. Цель – минимизация суммарной стоимости всех перевозок.
Транспортные задачи бывают:
1) открытые m ≠ n (суммарный
запас продукции, имеющейся у
поставщиков, не совпадает с
суммарной потребностью в
2) закрытые m = n (суммарный
запас продукции, имеющейся у
поставщиков, совпадает с
Метод потенциалов «работает» только для закрытых ТЗ, причем, закрытая ТЗ всегда разрешима.
Открытую ТЗ сводят к закрытой
ТЗ путем прибавления к суммарному
запасу продукции или суммарной
потребности продукции
Закрытая транспортная задача формулируется как Задача Линейного Программирования (ЗЛП) следующего вида:
, где
- запас i – го поставщика
- потребность j – го потребителя
- цена перевозки единицы
продукции по коммуникациям (i,
(от i – го поставщика к j – му потребителю)
- объем перевозки продукции
(неизвестный) по
Для вывода критерии оптимальности транспортной задачи построим двойственную задачу.
Структура матрицы ограничений транспортной задачи такова, что столбец, соответствующей переменной содержит ровно два ненулевых элемента: единицу в строке с номером i и единицу в строке m + i.
Вектор двойственных переменных Y = (,…,,,…,) имеет m + n компонент (по числе ограничений ТЗ), которые называются потенциалами: переменные ,,…, - потенциалы поставщиков; переменные ,…,- потенциалы потребителей.
Используя схему для построения двойственной задачи к ЗЛП в стандартной форме, имеем:
В полученной двойственной задаче n·m ограничений, соответствующих каждой переменной ТЗ. Вспоминая, что невязка между левой и правой частью в ограничений двойственной задачи есть оценка для соответствующей переменной исходной задачи , запишем условия оптимальности текущего плана перевозок в ТЗ:
.
Неизвестные потенциалы и (их общее количество равно m + n) могут быть найдены (и именно так отыскиваются) из условия равенства нулю оценок для базисных переменных (заполненных клеток таблицы) ТЗ (таких равенств (m+n - 1), что следует из замечания ниже).
,
для заполненных клеток (i,j) таблицы ТЗ.
Решение полученной системы (содержащей неизвестных на единицу больше, чем число уравнений) ищется, когда одно из неизвестных (вообще говоря, любое) полагается равным некоторому числу (тоже, вообще говоря, любому). После этого оставшаяся система имеет единственное решение.
§4. Пример решения задача линейного программирования
Решим задачу линейного программирования симплекс – методом :
f(x) = 2x1 + 3x2 + 4x3→ max
3x1 + x2 + 3x3<=5
5x1 + 4x2 + 4x3<=12
2x1 + x2 + 2x3<=8
x1>=0; x2>=0; x3>=0;
Данные задачи заносим в симплекс таблицу.
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
значения |
базис |
оценка |
3 |
1 |
3 |
1 |
0 |
0 |
5 |
x4 |
5/3 |
5 |
4 |
4 |
0 |
1 |
0 |
12 |
x5 |
3 |
2 |
1 |
2 |
0 |
0 |
1 |
8 |
x6 |
4 |
2 |
3 |
4 |
0 |
0 |
0 |
0 |
- f |
В этой таблице первая, вторая и третья строки соответствуют ограничениям задачи, последняя строка – функция цели. Это оценочная строка. Значение функции цели берём 0. Выделяем базисные переменные. Эта переменная находиться в столбце, для которой имеется одна единица, остальные нули. В столбце «базис» отмечаем одноимённые переменные в той строке, где расположена эта единственная единица. Остальные переменные называются свободными.
По заполненной симплекс таблице определяем решение, соответствующее этой (нулевой) итерации. Свободные переменные равны 0. Базисные переменные и значение функции находим из таблицы. Они представлены в столбце «значение». Отметим, что значение функции цели берём с противоположенным знаком. Итак, x° = (0,0,0,5,12,8) f° = 0.
В оценочной строке имеются положительные числа. Значит, решение можно улучшить. Выбираем наибольшее из положительных чисел. Если таких чисел несколько – берём любое из них. Соответствующий столбец называют ведущим. По ведущему столбу и столбцу «значения» определяем оценку для каждой строки. Число из столбца «значение» делим на строку. По условию задачи это положительное число. Объявляем ведущей строку ту, оценка у которой наименьшее положительное число.
В первой таблице ведущая строка и столбец выделен цветом. На их пересечении находится ведущий элемент. В нашем случае это 3.
Переходим к первой итерации. Её суть состоит в том, чтобы свободную x3 сделать базисной, а базисную переменную x4 - свободной. В таблице выполняем преобразования аналогичные элементарным строчным преобразования аналогичные элементарным строчным преобразованиям в методе Гаусса при решении системы линейных уравнений. В результате преобразований получим:
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
значения |
базис |
оценка |
1 |
1/3 |
1 |
1/3 |
0 |
0 |
5/3 |
x3 |
5 |
1 |
8/3 |
0 |
-4/3 |
1 |
0 |
16/3 |
x5 |
2 |
0 |
1/3 |
0 |
-2/3 |
0 |
1 |
14/3 |
x6 |
14 |
-2 |
5/3 |
0 |
-4/3 |
0 |
0 |
-20/3 |
- f |
Из таблицы находим базисные переменные и значение функции x¹= (0,0,5/3,0,16/3,14/3) f¹ = 20/3. Этот результат можно проверить. Полученные результаты должны удовлетворять функции цели в канонической (стандартной) задаче линейного програмирования. В оценочной строке имеются положительные числа. Значит, решение можно улучшить. Аналогично строим следующую таблицу:
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
значения |
базис |
оценка |
5/8 |
0 |
1 |
1/2 |
-1/8 |
0 |
1 |
x3 |
- |
3/8 |
1 |
0 |
-1/2 |
3/8 |
0 |
2 |
x2 |
- |
-1/8 |
0 |
0 |
-1/2 |
-1/8 |
1 |
4 |
x6 |
- |
-21/8 |
0 |
0 |
-1/2 |
-5/8 |
0 |
-10 |
- f |
В оценочной строке данной
таблицы все элементы не
f* = 10 x* = (0,2,1)
§5. Пример решения Транспортной задачи
Метод потенциалов представляет
из себя модификацию симплекс-метода,
учитывающую специфику
ШАГ 1. Построение начального плана перевозок.
ШАГ 2. Проверка текущего плана на оптимальность.
Если план оптимален, то алгоритм завершен.
ШАГ 3. Улучшение плана перевозок. Переход к шагу 1.
Опишем алгоритм по шагам, иллюстрируя каждый шаг
ШАГ 1. Построение начального плана перевозок.
Построение начального решения (как и последующие расчеты) проводят в таблице, имеющей следующий вид:
Клетка ( i , j ) таблицы соответствует коммуникации, связывающей i-го поставщика сj-м потребителем.
Построить начальный план перевозок означает - назначить объемы перевозок в клетки таблицы таким образом, чтобы:
а)число заполненных клеток было (m+n-1). (Тогда план перевозок будет отвечать базисному решению ЗЛП);
б)сумма перевозок в любой строке должна быть равна запасу соответствующего поставщика, а сумма перевозок в каждом столбце равна потребности потребителя. (Условие выполнения ограничений ТЗ). Существует несколько способов нахождения начального решения, которые отличаются только выбором клетки, в которую назначается очередная перевозка. Так, в способе северо-западного угла (СЗУ) для очередного назначения перевозки выбирается левая верхняя клетка таблицы (при этом никак не учитываются цены перевозок). Наоборот, в способе минимальной стоимости (МС) для заполнения выбирается клетка текущей таблицы с минимальной ценой перевозки, что в большинстве случаев (но не всегда) приводит к более дешевому (а значит и более близкому к оптимальному) начальному плану перевозок.
Информация о работе Решение задач линейного программирования в среде Maple