Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные методы решения ЗЛП_Методичка.doc
Скачиваний:
169
Добавлен:
19.05.2015
Размер:
3.26 Mб
Скачать

II. Нахождение оптимального плана и оптимального значения целевой функции.

  1. Для нахождения максимума целевой функции используйте функцию maximize, формат которой следующий maximize(<функция>, <система ограничений>, <опции>);

При этом условие неотрицательности переменных удобно указать опцией NONNEGATIVE.

> optimum:=maximize(f,syst_ogr,NONNEGATIVE);

  1. Используйте команду subs, которая позволяет подставить значения переменных x1 и x2 в функцию f.

> fmax:=subs(x1=83/17,x2=19/17,f);

  1. Примените функцию evalf для представления ответа в форме действительного числа с 4 значащими цифрами.

> fmax:=evalf(fmax,4);

Ознакомиться с вариантом решения задачи ЛП без пояснений можно в приложении.

Решение оптимизационных задач в специализированном пакете SimplexWin. Http://www.Simplexwin.Narod.Ru/

Данная программа предназначена для решения задач линейного программирования симплекс методом.

Задача. Найти значения переменных x1 и x2, при которых

при ограничениях

Порядок выполнения работы:

I. Оформление исходных данных.

  1. Запустите программу SimplexWin и установите требуемый размер матрицы ограничений, выбрав в меню команду Настройки – Размер матрицы (рис. 13).

Рис. 13. Определение размера матрицы.

  1. Введите данные (рис. 14). Если задача вводится не в канонической форме, то дополнительные переменные и искусственные базисы (а также соответствующие им коэффициенты целевой функции) добавляются автоматически.

Рис.14. Ввод данных.

II. Нахождение оптимального плана и оптимального значения целевой функции.

  1. Нажмите кнопку Вычислить и получите форму Результаты (рис. 15).

Рис. 15. Форма Результаты.

  1. В форме Результаты нажмите кнопку Результат, которая позволяет произвести решение задачи в автоматическом режиме и отобразить на экране последнюю симплексную таблицу и результат (рис. 16).

Рис. 16. Решение задачи.

Решение оптимизационных задач в Excel [1]

Рассмотрим пример нахождения для следующей задачи линейного программирования.

Задача. Найти значения переменных x1 и x2, при которых

при ограничениях

Порядок выполнения работы:

I. Оформление исходных данных.

  1. Создайте экранную форму для ввода условий задачи (переменных, целевой функции, ограничений) и введите в нее исходные данные (коэффициенты целевой функции, коэффициенты при переменных в ограничениях, правые части ограничений) (рис. 17).

Рис. 17. Экранная форма задачи (курсор в ячейке D6).

Замечание: В экранной форме на рис. 17 каждой переменной и каждому коэффициенту задачи поставлена в соответствие конкретная ячейка в Excel. Так, например, переменным задачи соответствуют ячейки B3 (), C3 (),коэффициентам целевой функции соответствуют ячейки B6 (), C6 (), правым частям ограничений соответствуют ячейки F10 (), F11 (),F12 ()и т.д.

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

Согласно условию задачи значение целевой функции определяется выражением . Используя обозначения соответствующих ячеек вExcel, формулу для расчета целевой функции можно записать как сумму произведений каждой из ячеек, отведенных для значений переменных задачи (B3, C3), на соответствующие ячейки, отведенные для коэффициентов целевой функции (B6, C6).

Для того чтобы задать формулу зависимости для целевой функции проделайте следующее:

– поставьте курсор в ячейку D6;

– вызовите окно Мастер функций – шаг 1 из 2, нажав кнопку на стандартной панели инструментов;

– выберите в окне Категория категорию Математические;

– в окне Функция выберите функцию СУММПРОИЗВ;

– в появившемся окне СУММПРОИЗВ в строку Массив 1 введите выражение B$3:C$3, а в строку Массив 2 – выражение B6:С6;

– нажмите кнопку OK.

Рис. 18. Ввод формулы для расчета ЦФ в окне Мастер функций.

После ввода ячеек в строки Массив 1 и Массив 2 в окне СУММПРОИЗВ появятся числовые значения введенных массивов (рис. 18), а в экранной форме появится текущее значение, вычисленное по введенной формуле, то есть 0 (так как в момент ввода формулы значения переменных задачи нулевые) (рис. 19).

Замечание: Символ $ перед номером строки означает, что при копировании этой формулы в другие места листа Excel номер строки 3 не изменится. Символ : означает, что в формуле использованы все ячейки, расположенные между ячейками, указанными слева и справа от двоеточия.

Левые части ограничений задачи представляют собой сумму произведений каждой из ячеек, отведенных для значений переменных задачи (B3, C3), на соответствующую ячейку, отведенную для коэффициентов конкретного ограничения (B10, C10 – 1 ограничение; B11, C11 – 2 ограничение; B12, C12 – 3 ограничение).

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

Для расчета значений левых частей ограничений выполните следующее:

– поставьте курсор в ячейку D6 и скопируйте в буфер содержимое ячейки (клавишами Ctrl+C);

– поставьте курсор поочередно в поля левой части каждого из ограничений, то есть D10, D11, D12, и вставляйте в эти поля содержимое буфера (клавишами Ctrl+V) (при этом номер ячеек во втором массиве формулы будет меняться на номер той строки, в которую была произведена вставка из буфера).

После ввода на экране в полях D10, D11, D12 появится 0 (нулевое значение) (рис. 19).

Рис. 19. Экранная форма задачи после вода

всех необходимых формул.

  1. Проверьте правильность введения формул.

Для этого:

– произведите поочередно двойное нажатие левой клавиши мыши на ячейки с формулами, при этом на экране рамкой будут выделяться ячейки, используемые в формуле (рис. 20 и рис. 21).

Рис. 20. Проверка правильности введения

формулы в целевую ячейку D6.

Рис. 20. Проверка правильности введения

формулы в ячейку D10 для левой части ограничений.

  1. Задайте целевую функцию и введите ограничения в окне Поиск решения (рис. 21).

Для этого:

– поставьте курсор в ячейку D6;

– вызовите окно Поиск решения, выбрав на панели инструментов Данные – Поиск решения;

– поставьте курсор в поле Установить целевую ячейку;

– введите адрес целевой ячейки $D$6 или сделайте одно нажатие левой клавишей мыши на целевую ячейку в экранной форме, что будет равносильно вводу адреса с клавиатуры;

– укажите направление оптимизации целевой функции, щелкнув один раз левой клавишей мыши по селекторной кнопке максимальному значению;

– в окне Поиск решений в поле Изменяя ячейки введите ячейки со значениями переменных $B$3:$C$3, выделив их в экранной форме, удерживая левую кнопку мыши;

Рис. 21. Окно Поиск решения.

– нажмите кнопку Добавить;

– в поле Ссылка на ячейку введите адрес ячейки левой части конкретного ограничения, например, $D$10;

– в соответствии с условием задачи выберите в поле знака необходимый знак, например, для 1 ограничения это знак ;

– в поле Ограничение введите адрес ячейки правой части, рассматриваемого ограничения, например $F$10;

– аналогичным образом установите соотношения между правыми и левыми частями других ограничений ($D$11$F$11, $D$12$F$12);

– подтвердите ввод всех перечисленных условий нажатием кнопки OK (рис. 22 и рис. 23).

Рис. 22. Добавления условия.

Замечание: Если при вводе условия задачи возникает необходимость в изменении или удалении внесенных ограничений, то это можно сделать на жав на кнопки Изменить или Удалить.