Главная страница

лб1 [ИО 2019-2020]. Решение задач оптимизации 1 Лабораторная работа 1 Тема Решение задач линейного программирования с использованием OpenOffice Calc. Цель


Скачать 419.65 Kb.
НазваниеРешение задач оптимизации 1 Лабораторная работа 1 Тема Решение задач линейного программирования с использованием OpenOffice Calc. Цель
Дата22.09.2022
Размер419.65 Kb.
Формат файлаpdf
Имя файлалб1 [ИО 2019-2020].pdf
ТипРешение
#690304

Решение задач оптимизации
1
Лабораторная
работа 1
Тема
:
Решение задач линейного программирования с использованием
OpenOffice Calc.
Цель
лабораторной работы: Приобретение навыков решения задач линейного программирования (ЛП).
Задачи
:
1)
решить все описанные ниже задачи;
2)
согласно индивидуальному заданию решить задачу ЛП.
Инструкция
по использованию OpenOffice Calc для решения задач линейного
программирования
Для того чтобы решить задачу ЛП в табличном редакторе OpenOffice Calc, необходимо выполнить следующие действия.
1. Ввести условие задачи: a) создать экранную форму для ввода условия задачи:

переменных,

целевой функции (ЦФ),

ограничений,

граничных условий; b) ввести исходные данные в экранную форму:

коэффициенты ЦФ,

коэффициенты при переменных в ограничениях,

правые части ограничений; c) ввести зависимости из математической модели в экранную форму:

формулу для расчета ЦФ,

формулы для расчета значений левых частей ограничений; d) задать ЦФ (в окне «Решатель»):

целевую ячейку,

направление оптимизации ЦФ; e) ввести ограничения и граничные условия (в окне «Решатель»):

ячейки со значениями переменных,

граничные условия для допустимых значений переменных,

соотношения между правыми и левыми частями ограничений.
2. Решить задачу (в окне «Решатель»): a) установить параметры решения задач; b) запустить задачу на решение; c) выбрать формат вывода решения
1.1 Одноиндексные задачи ЛП
Рассмотрим пример нахождения решения для следующей одноиндексной задачи ЛП:
( )
max;
8
,
87 56 20 5
,
130 4
3 2
1

+
+
+
=
x
x
x
x
X
L

Решение задач оптимизации
2







=


+
+



+
+

=

+
+

4
,
1
;
0 89 13 4
,
10 5
,
1 4
450 4
2 6
756 4
2 8
,
1 4
3 2
1 4
3 2
1 4
3 2
1
j
x
x
x
x
x
x
x
x
x
x
x
x
x
j
(1.1)
1.1.1. Ввод исходных данных
Создание экранной формы и ввод в нее условия задачи
Экранная форма для ввода условий задачи (1.1) вместе с введенными в нее исходными данными представлена на Рисунок 1.
Рисунок 1. Экранная форма задачи (1.1) (курсор в ячейке F6)
В экранной форме на Рисунок 1 каждой переменной и каждому коэффициенту задачи поставлена в соответствие конкретная ячейка в OpenOffice Calc. Имя ячейки состоит из буквы, обозначающей столбец, и цифры, обозначающей строку, на пересечении которых находится объект задачи ЛП. Так, например, переменным задачи (1.1) соответствуют ячейки
B3 (
1
x
), C3 (
2
x
), D3 (
3
x
), E3 (
4
x
), коэффициентам ЦФ соответствуют ячейки B6
(
5
,
130 1
=
c
), C6 (
20 2
=
c
), D6 (
56 3
=
c
), E6 (
8
,
87 4
=
c
), правым частям ограничений соответствуют ячейки H10 (
756 1
=
b
), H11 (
450 2
=
b
), H12 (
89 3
=
b
) и т.д.
Ввод зависимостей из математической модели в экранную форму
В ячейку F6, в которой будет отображаться значение ЦФ, необходимо ввести
формулу
, по которой это значение будет рассчитано. Согласно (1.1) значение ЦФ определяется выражением
4 3
2 1
8
,
87 56 20 5
,
130
x
x
x
x
+
+
+
(1.2)
Используя обозначения соответствующих ячеек в OpenOffice Calc (см. Рисунок 1), формулу для расчета ЦФ (1.2) можно записать как сумму произведений каждой из ячеек, отведенных для значений переменных задачи (B3, C3, D3, E3), на соответствующую ячейку, отведенную для коэффициентов ЦФ (B6, C6, D6, E6), то есть
3 6
3 6
3 6
3 6
E
E
D
D
C
C
B
B

+

+

+

(1.3)

Решение задач оптимизации
3
Чтобы задать формулу (1.3) необходимо в ячейку F6 ввести следующее выражение и нажать клавишу «Enter»
=SUMPRODUCT(B$3:E$3;B6:E6),
(1.4) где символ $ перед номером строки 3 означает, что при копировании этой формулы в другие места листа OpenOffice Calc номер строки 3 не изменится; символ : означает, что в формуле будут использованы все ячейки, расположенные между ячейками, указанными слева и справа от двоеточия (например, запись B6:E6 указывает на ячейки B6, C6, D6 и E6). После этого в целевой ячейке появится 0 (нулевое значение) (см. Рисунок 2).
Рисунок 2. Экранная форма задачи (1.1) после ввода всех необходимых формул
(курсор в ячейке F6)
Примечание
. Существует другой способ задания функций в OpenOffice Calc с помощью режима «Вставка функций», который можно вызвать при нажатии кнопки «
x
f
»
на стандартной панели инструментов. Так, например, формулу (1.4) можно задать следующим образом:

курсор в поле F6;

нажав кнопку «
x
f
»,вызовите окно «Мастер функций»;

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

в окне «Функция» выберитефункцию SUMPRODUCT;

в появившемся окне SUMPRODUCT в строку «Массив 1» введите выражение
B$3:E$3, а в строку «Массив 2» – выражение B6:E6 (см. Рисунок 3);

после ввода ячеек в строки «Массив 1» и «Массив 2» в окне SUMPRODUCT появятся числовые значения введенных массивов (см. Рисунок 3), а в экранной форме в ячейке F6 появится текущее значение, вычисленное по введенной формуле, то есть 0 (так как в момент ввода формулы значения переменных задачи нулевые).

Решение задач оптимизации
4
Рисунок 3. Ввод формулы для расчета ЦФ в окно «Мастер функций»
Левые части ограничений задачи (1.1) представляют собой сумму произведений каждой из ячеек, отведенных для значений переменных задачи (B3, C3, D3, E3), на соответствующую ячейку, отведенную для коэффициентов конкретного ограничения (B10,
C10, D10, E10 – 1-е ограничение; B11, C11, D11, E11 – 2-е ограничение и B12, C12, D12, E12
3-е ограничение). Формулы, соответствующие левым частям ограничений, представлены в
Таблица 1.
Таблица 1. Формулы, описывающие ограничения модели (1.1)
Левая
часть ограничения
Формула
Excel
4 3
2 1
4 2
8
,
1
x
x
x
x

+
+

или
3 10 3
10 3
10 3
10
E
E
D
D
C
C
B
B

+

+

+

= SUMPRODUCT (B$3:E$3;B10:E10)
4 3
2 1
4 2
6
x
x
x
x

+
+

или
3 11 3
11 3
11 3
11
E
E
D
D
C
C
B
B

+

+

+

= SUMPRODUCT (B$3:E$3;B11:E11)
4 3
2 1
13 4
,
10 5
,
1 4
x
x
x
x
+
+

или
3 12 3
12 3
12 3
12
E
E
D
D
C
C
B
B

+

+

+

= SUMPRODUCT (B$3:E$3;B12:E12)
Как видно из Таблица 1, формулы, задающие левые части ограничений задачи (1.1), отличаются друг от друга и от формулы (1.4) в целевой ячейке F6 только номером строки во втором массиве. Этот номер определяется той строкой, в которой ограничение записано в экранной форме. Поэтому для задания зависимостей для левых частей ограничений достаточно скопировать формулу из целевой ячейки в ячейки левых частей ограничений.

Решение задач оптимизации
5
Проверка правильности введения формул
Для проверки правильности введенных формул производите поочередно двойное нажатие левой клавиши мыши на ячейки с формулами. При этом на экране рамкой будут выделяться ячейки, используемые в формуле (см. Рисунок 4).
Рисунок 4. Проверка правильности введения формулы в ячейку F12 для левой части ограничения 3
Задание ЦФ
Дальнейшие действия производятся в окне «Решатель», которое вызывается из меню «Сервис» (см. Рисунок 5):

поставьте курсор в поле «Целевая ячейка»;

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

введите направление оптимизации ЦФ, установив значение «Максимум».
Рисунок 5. Окно «Решатель» задачи (1.1)
Ввод ограничений и граничных условий

Решение задач оптимизации
6
В окно «Решатель» в поле «Изменяя ячейки» впишите адреса $B$3:$E$3.
Необходимые адреса можно вносить в поле «Изменяя ячейки» и автоматически путем выделения мышью соответствующих ячеек переменных непосредственно в экранной форме.
В нашем случае на значения переменных накладывается граничное условие неотрицательности, то есть их нижняя граница должна быть равна нулю (см. Рисунок 1).
Также добавьте оставшиеся ограничения:

В поле «Ссылка на ячейку» введите адрес ячейки левой части конкретного ограничения, например $F$10. Это можно сделать как с клавиатуры, так и путем выделения мышью нужной ячейки непосредственно в экранной форме.

В соответствии с условием задачи (1.1) выбрать в поле знака необходимый знак, например =.

В поле «Значение» введите адрес ячейки правой части рассматриваемого ограничения, например $H$10.

Аналогично введите ограничения: $F$11>=$H$11, $F$12<=$H$12.
Окно «Решатель» после ввода всех необходимых данных задачи (1.1) представлено на Рисунок 5.
1.1.2. Решение задачи
Установка параметров решения задачи
Задача запускается на решение в окне «Решатель». Но предварительно для установления конкретных параметров решения задач оптимизации определенного класса необходимо нажать кнопку «Параметры» и заполнить некоторые поля окна «Параметры»
(см. Рисунок 6).
Рисунок 6. Параметры поиска решения, подходящие для большинства задач ЛП

Решение задач оптимизации
7
Запуск задачи на решение
Запуск задачи на решение производится из окна »Решатель» путем нажатия кнопки
«Решить».
После запуска на решение задачи ЛП на экране появляется окно «Результат» (см.
Рисунок
7) или сообщения онесовместной системе ограничений задачи либо неограниченности ЦФ в требуемом направлении.
Рисунок 7. Сообщение об успешном решении задачи
Иногда сообщения свидетельствуют не о характере оптимального решения задачи, а о том, что при вводе условий задачи в OpenOffice Calc были допущены ошибки, не позволяющие OpenOffice Calc найти оптимальное решение, которое в действительности существует.
Для получения ответа (значений переменных, ЦФ и левых частей ограничений) прямо в экранной форме просто нажмите кнопку «OK». После этого в экранной форме появляется оптимальное решение задачи (см. Рисунок 8).
Рисунок 8. Экранная форма задачи (1.1) после получения решения
1.2. Целочисленное программирование
Допустим, что к условию задачи (1.1) добавилось требование целочисленности значений всех переменных. В этом случае описанный выше процесс ввода условия задачи необходимо дополнить следующим шагом: в окне «Решатель» (меню «Сервис»




«Решатель») добавьте ограничение целостности (см. Рисунок 9):

Решение задач оптимизации
8
Рисунок 9. Ввод условия целочисленности переменных задачи (1.1)
На Рисунок 10 представлено решение задачи (1.1), к ограничениям которой добавлено условие целочисленности значений ее переменных.
Рисунок 10. Решение задачи (1.1) при условии целочисленности ее переменных
1.3. Двухиндексные задачи ЛП
Двухиндексные задачи ЛП вводятся и решаются в OpenOffice Calc аналогично одноиндексным задачам. Специфика ввода условия двухиндексной задачи ЛП состоит лишь в удобстве матричного задания переменных задачи и коэффициентов ЦФ.

Решение задач оптимизации
9
Рассмотрим решение двухиндексной задачи, суть которой заключается в оптимальной организации транспортных перевозок штучного товара со складов в магазины
(см. Таблица 2).
Таблица 2. Исходные данные транспортной задачи
Тарифы, руб./шт.
1-й магазин
2-й магазин
3-й магазин
Запасы, шт.
1-й склад
2 9
7 25 2-й склад
1 0
5 50 3-й склад
5 4
100 35 4-й склад
2 3
6 75
Потребности, шт.
45 90 50
Целевая функция и ограничения данной задачи имеют вид
,
целые
,
0 50 90 45 75 35 50 25 33 23 13 32 22 12 31 21 11 43 42 41 33 32 31 23 22 21 13 12 11
















=
+
+
=
+
+
=
+
+
=
+
+
=
+
+
=
+
+
=
+
+
ij
ij
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
(1.5)
Экранные формы, задание переменных, целевой функции, ограничений и граничных условий двухиндексной задачи (1.5) и ее решение представлены на Рисунок 11, Рисунок 12,
Рисунок 13 и в Таблица 3.
Рисунок 11. Экранная форма двухиндексной задачи (1.5)
(курсор в целевой ячейке F15)

Решение задач оптимизации
10
Таблица 3. Формулы экранной формы задачи (1.5)
Объект
математической модели
Выражение
в OpenOffice Calc
Переменные задачи
C3:E6
Формула в целевой ячейке F15
= SUMPRODUCT (C3:E6;C12:E15)
Ограничения по строкам в ячейках F3, F4, F5, F6
=СУММ(C3:E3)
=СУММ(C4:E4)
=СУММ(C5:E5)
=СУММ(C6:E6)
Ограничения по столбцам в ячейках С7, D7, E7
=СУММ(C3:C6)
=СУММ(D3:D6)
=СУММ(E3:E6)
Суммарные запасы и потребности в ячейках H8, G9
=СУММ(H3:H6)
=СУММ(C9:E9)
Рисунок 12. Ограничения и граничные условия задачи (1.5)

Решение задач оптимизации
11
Рисунок 13. Экранная форма после получения решения задачи (1.5)
(курсор в целевой ячейке F15)
1.4. Задачи с булевыми переменными
Рисунок 14. Исходная задача
Частным случаем задач с целочисленными переменными являются задачи, в результате решения которых искомые переменные могут принимать только одно из двух значений: 0 или 1. Такие переменные в честь предложившего их английского математика
Джорджа Буля называют булевыми. На Рисунок 15 представлена экранная форма с решением некоторой двухиндексной задачи с булевыми переменными.

Решение задач оптимизации
12
Рисунок 15. Решение двухиндексной задачи с булевыми переменными
Помимо задания требования целочисленности при вводе условия задач с булевыми переменными необходимо в окне «Решатель» добавить граничные условия, имеющие смысл ограничения значений переменных по их единичной верхней границе (см. Рисунок 16).
Рисунок 16. Добавление условия единичной верхней границы значений переменных двухиндексной задачи с булевыми переменными
Вид окна «Решатель»для задачи с булевыми переменными, представленной на
Рисунок 16, приведен на Рисунок 17.

Решение задач оптимизации
13
Рисунок 17. Окно «Решатель»для задачи с булевыми переменными
Содержание
работы
1.
Ознакомиться с теоретическими вопросами решения оптимизационных задач
ЛП.
2.
Решить все описанные задачи.
3.
Согласно индивидуальному варианту найти оптимальное решение задач линейного программирования.
4.
Подготовить печатный отчет.
Требования
к отчету
Отчет по лабораторной работе оформляется в печатном виде. Защита работы включает в себя проверку знания студентом теоретического материала, а также практической части лабораторной работы.
Отчет должен включать: индивидуальный вариант и полученное решение.

Решение задач оптимизации
14
Варианты
для индивидуального выполнения
1.
Задача
линейного программирования
Вариант 1
Вид сырья
Нормы расхода сырья на одно изделие
Общее количество сырья, кг
А
В
I
10 15 120
II
10 5
170
III
5 10 250
Прибыль от реализации одного изделия, руб.
35 45
Вариант 2
Вид сырья
Нормы расхода сырья на одно изделие
Общее количество сырья, кг
А
В
I
5 10 90
II
5 5
120
III
10 20 300
Прибыль от реализации одного изделия, руб.
35 45
Вариант 3
Вид сырья
Нормы расхода сырья на одно изделие
Общее количество сырья, кг
А
В
I
20 10 280
II
5 20 420
III
10 10 300
Прибыль от реализации одного изделия, руб.
35 45
Вариант 4
Вид сырья
Нормы расхода сырья на одно изделие
Общее количество сырья, кг
А
В
I
10 5
500
II
5 10 620
III
5 20 480
Прибыль от реализации одного изделия, руб.
35 45
Вариант 5
Вид сырья
Нормы расхода сырья на одно изделие
Общее количество сырья, кг
А
В
I
5 10 300
II
14 5
140
III
20 10 350
Прибыль от реализации одного изделия, руб.
35 45

Решение задач оптимизации
15
Вариант 6
Вид сырья
Нормы расхода сырья на одно изделие
Общее количество сырья, кг
А
В
I
10 5
400
II
10 20 120
III
5 10 250
Прибыль от реализации одного изделия, руб.
35 45
Вариант 7
Вид сырья
Нормы расхода сырья на одно изделие
Общее количество сырья, кг
А
В
I
10 50 500
II
20 30 350
III
30 10 400
Прибыль от реализации одного изделия, руб.
35 45
Вариант 8
Вид сырья
Нормы расхода сырья на одно изделие
Общее количество сырья, кг
А
В
I
5 10 300
II
40 5
400
III
20 10 250
Прибыль от реализации одного изделия, руб.
35 45
Вариант 9
Вид сырья
Нормы расхода сырья на одно изделие
Общее количество сырья, кг
А
В
I
20 40 600
II
10 30 400
III
5 10 300
Прибыль от реализации одного изделия, руб.
35 45
Вариант 10
Вид сырья
Нормы расхода сырья на одно изделие
Общее количество сырья, кг
А
В
I
10 20 500
II
5 30 420
III
20 5
360
Прибыль от реализации одного изделия, руб.
35 45

Решение задач оптимизации
16
2.
Задача
целочисленного программирования
1 вариант
Z = x
1
+ 4x
2
→ max,
2x
1
+ 4x
2
≤ 17,
10x
1
+ 3x
2
≤ 15, x
1
≥0, x
2
≥0, x
1
, x
2
– целые
6 вариант
Z = 2x
1
+ 3x
2
→ min, x
1
+ 2x
2
≤ 16,
2x
1
+ x
2
≤ 16, x
1
≥0, x
2
≥0 x
1
, x
2
– целые
2 вариант
Z = 2x
1
+ x
2
→ max,
-x
1
+ 2x
2
≤ 14,
7x
1
+ 4x
2
≤ 28,
4x
1
- 3x
2
≤ 12,
5x
1
+ 2x
2
≥ 10,
10x
1
- 8x
2
≥ 2, x
1
≥0, x
2
≥0, x
1
, x
2
– целые.
7 вариант
Z = x
1
+ x
2
→ max, x
1
+ 2x
2
≤ 10,
2x
1
+ x
2
≤ 10, x
1
+ 2x
2
≥ 2, x
1
≥0, x
2
≥0, x
1
, x
2
– целые.
3 вариант
Z = x
1
+ 2x
2
→ min,
-3x
1
+ 4x
2
≤ 12, x
1
+ 2x
2
≥ 4,
3x
1
+ 3x
2
≤ 15, x
1
≥0, x
2
≥0, x
1
, x
2
– целые.
8 вариант
Z = 2x
1
- x
2
→ max,
2x
1
+ x
2
≤ 8, x
1
+ 3x
2
≥ 10,
3x
1
+ x
2
≥ 3, x
1
≥0, x
2
≥0, x
1
, x
2
– целые.
4 вариант
Z = 3x
1
+ 4x
2
→ max,
3x
1
+ 2x
2
≤ 7, x
1
+ 4x
2
≤ 15, x
1
≥0, x
2
≥0, x
1
, x
2
– целые.
9 вариант
Z = 4x
1
+ 3x
2
→ max,
3x
1
+ 2x
2
≤ 8, x
1
+ 4x
2
≤ 10, x
1
≥0, x
2
≥0, x
1
, x
2
– целые
5 вариант
Z = 2x
1
+ x
2
→ max, x
1
+ 2x
2
≤ 16,
2x
1
+ x
2
≤ 16, x
1
+ 2x
2
≥ 2, x
1
≥0, x
2
≥0, x
1
, x
2
– целые.
10 вариант
Z = 2x
1
+ 5x
2
→ min, x
1
+ 3x
2
≤ 15,
8x
1
+ 4x
2
≤ 32,
4x
1
+ 3x
2
≤ 12,
5x
1
+ 2x
2
≥ 10, x
1
≥0, x
2
≥0, x
1
, x
2
– целые.


написать администратору сайта