Пензенский государственный университет Факультет вычислительной техники Кафедра "Информационно-вычислительные системы"
...
14 downloads
294 Views
463KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Пензенский государственный университет Факультет вычислительной техники Кафедра "Информационно-вычислительные системы"
А.В.Еременко Использование OpenOffice.org Calc для решения экстремальных задач в экономике
Методические указания
Пенза 2010
УДК 336
Использование OpenOffice.org Calc для решения экстремальных задач в экономике Рассмотрены практические вопросы, связанные с принятием рациональных решений в экономике, с использованием OpenOffice.org Calc версии 3.0 и выше. Излагаются приемы построения математических моделей и целевых функций задач принятия решений. При этом формирование элементов математических моделей и целевых функций сводится, в основном, к разметке и выделению блоков ячеек листа Calc и использованию операции "автосуммирование". Пособие предназначено для студентов специальности 080801 "Прикладная информатика в экономике".
3
Оглавление Введение.......................................................................................................................4 1.Основные определения............................................................................................4 2.Примеры экстремальных задач...............................................................................5 2.1.Задача определения наиболее прибыльного объема выпуска продукции....6 2.2.Транспортная задача..........................................................................................8 3.Основные приемы работы в CALC.........................................................................9 3.1.Выделение ячейки...........................................................................................10 3.2.Выделение блока ячеек...................................................................................11 3.3.Ввод данных в ячейки.....................................................................................11 3.4.Копирование формул.......................................................................................11 3.5.Определение границ ячеек и блоков ячеек....................................................12 3.6.Присвоение имен ячейкам и блокам ячеек...................................................13 3.7.Изменение ширины столбца...........................................................................13 3.8.Изменение цвета ячейки и блоков ячеек.......................................................14 4.Решение транспортной задачи...............................................................................14 4.1.Ввод исходных данных...................................................................................15 4.2.Разметка блоков ячеек листа CALC...............................................................16 4.3.Формирование элементов математической модели......................................17 4.4.Формирование целевой функции...................................................................18 4.5.Настройка программы "Поиск решения"......................................................19 5. Решение задачи определения наиболее прибыльного объема выпуска продукции...................................................................................................................22 5.1.Ввод исходных данных...................................................................................23 5.2.Разметка блоков ячеек листа CALC...............................................................24 5.3.Формирование элементов математической модели......................................25 5.4.Формирование целевой функции...................................................................26 5.5.Настройка программы "Поиск решения"......................................................27 6.Контрольные вопросы............................................................................................32
4
Введение В различных областях своей деятельности человек практически ежедневно сталкивается с проблемой принятия решений для достижения тех или иных целей. В экономике целями могут быть увеличение прибыли, снижение затрат, повышение производительности труда, рациональное использование оборудования, повышение эффективности инвестиций и многие другие. Задача достижения экономических целей приводит к проблеме рационального использования ограниченных ресурсов (материальных, сырьевых, энергетических, финансовых, трудовых и других). Для решения этих проблем человеку необходимо принимать определенные решения. Естественно, что в процессе принятия решений человек стремится выбрать наилучшее для него решение. В методическом пособии рассматриваются практические вопросы, связанные с принятием рациональных решений в экономике на основе использования OpenOffice.org Calc версии 3.0 и выше.
1.
Основные определения
Наилучшее решение, с точки зрения принимающего это решение человека, называется оптимальным. Для принятия оптимальных решений в современных условиях к опыту и интуиции человека добавляется возможность использования ЭВМ. ЭВМ позволяет в короткие сроки обработать большой объем данных, необходимых для принятия решения, выработать рекомендации по принятию оптимального решения, оценить последствия от принимаемого решения, которые могут произойти в будущем. Такого рода расчеты ЭВМ может выполнять только с использованием специальных компьютерных программ. Представителем таких программ является OpenOffice.org Calc, реализующая функции электронной таблицы. Среди функций Calc имеются математические функции, предназначенные для решения экстремальных задач. Экстремальная задача — это задача по поиску наилучшего (оптимального) решения из множества (набора) допустимых решений. Теория и методы решения экстремальных задач изучаются в дисциплине, получившей название математическое программирование. Для решения экстремальной задачи на ЭВМ необходимо средствами математической символики описать заданную цель (например, получение максимальной прибыли), а также запас имеющихся ресурсов и условия их использования для достижения цели. При таком описании выделяют следующие два понятия: • Математическую модель; • Целевую функцию.
5 Математическая модель — это приближенное описание какого-либо класса явлений средствами математической символики. Анализ математической модели дает возможность проникнуть в сущность изучаемых явлений. Математическая модель экстремальной задачи задает множество допустимых решений X. Это множество определяется имеющимися запасами ресурсов и условиями их использования для достижения цели. Целевая функция представляет собой числовую характеристику, большему или меньшему значению которой соответствует лучшее решение, с точки зрения принимающего это решение человека. Будем обозначать целевую функцию через f(x), где x T = x 1, ⋯, x j ,⋯ , x n .
Вектор x ∈ X , где x T = x 1, ⋯, x j ,⋯ , x n , а X — множество допустимых решений будем называть решением экстремальной задачи.
2.
Примеры экстремальных задач
Одним из примеров экстремальной задачи может служить задача максимизации прибыли предприятия в условиях ограниченных ресурсов. Пусть некоторое предприятие, применяя имеющуюся технологию, может выпускать n видов продукции, используя m видов ресурсов. Целью предприятия является получение максимальной прибыли. Построим математическую модель и целевую функцию для решения задачи определения наиболее прибыльного объема выпуска продукции, то есть такого объема, который может обеспечить предприятию получение максимальной прибыли. Для построения математической модели введем следующие обозначения. Обозначим через x j , j=1 , n количество выпускаемой продукции j-го вида. Тогда объем всей выпускаемой продукции можно обозначить с помощью вектора x T = x 1, ⋯, x j ,⋯ , x n . Обозначим через bi i=1 , m - запас i-го вида ресурса, имеющийся на предприятии, а через g i x , i=1 , m - количество i-го ресурса, необходимого для выпуска продукции, определяемой вектором X. Заметим, что функции предприятии технологией.
g i x , как правило, определяются используемой на
Очевидно, что выпуск продукции будет ограничен имеющимися запасами ресурсов. Математически эти ограничения можно записать в следующем виде: g i x≤b i , i=1 , m
(2.1)
Обозначим через h j , j=1 , n верхние ограничения, обусловленные спросом на продукцию j-го вида, а через l j , j=1 , n нижние ограничения, обусловленные спросом на ту же продукцию. Очевидно, что выпуск продукции должен удовлетворять условиям спроса. Математически эти условия можно записать следующим образом: l j≤ x j≤h j , j=1 , n
(2.2)
6 Естественно также, что выпуск продукции ям неотрицательности, а именно
x j , j =1, n удовлетворяет услови-
x j ≥0 , j=1 , n
(2.3)
Обозначим через f(x) прибыль, получаемую предприятием от реализации продукции. Тогда задача определения объема выпуска продукции, обеспечивающего предприятию максимальную прибыль, может быть записана следующим образом: Найти max f x
(2.4)
при условиях (2.1), (2.2), (2.3). При этом функция f(x) называется целевой функцией, вектор x — вектором переменных, система неравенств (2.1), (2.2), (2.3) представляет собой математическую модель задачи. Иногда систему неравенств вида (2.1), (2.2), (2.3) называют ограничениями задачи. Экстремальную задачу (2.4), (2.1), (2.2), (2.3) называют также задачей математического программирования или задачей оптимизации. Дадим интерпретацию экстремальной задачи (2.4), (2.1), (2.2), (2.3) как задачи x j , j=1 , n моделируют принятия решения. Компоненты вектора переменных принятие конкретного решения. Целевая функция f(x) моделирует эффективность принимаемого решения. Ограничения (2.1), (2.2), (2.3) задачи моделируют связи, накладываемые на компоненты вектора переменных x j , j=1, n способами использования ресурсов. В общем случае экстремальную задачу можно определить, например, следующим образом. Дано множество X и функция f(x), определенная на множестве X. Требуется найти (если они существуют) точки максимума или минимума функции f(x) на множестве X. Условимся записывать задачу максимизации функции f(x) на множестве X следующим образом: max f x x ∈ X
(2.5)
При этом функцию f(x) будем по-прежнему называть целевой функцией, вектор x — вектором переменных, множество X будем называть множеством допустимых решений. Множество X определяется неравенствами (2.1), (2.2), (2.3). Конкретизируем рассмотренную выше задачу. 2.1.
Задача определения наиболее прибыльного объема выпуска продукции
Предприятие может выпускать n видов продукции, используя для этого m видов ресурсов. Пусть для производства одной единицы продукции j-го вида используется a ij единиц ресурса i-го вида. Прибыль от реализации одной единицы про-
7 дукции j-го вида обозначим через p j , j=1 , n рублей. Требуется определить такой объем выпуска продукции, который обеспечивает предприятию наибольшую прибыль. Обозначим через x j , j=1, n объем продукции j-го вида, выпускаемой в соответствии с некоторым планом. Тогда математическую модель задачи можно записать в следующем виде n
∑ aij⋅x j ≤bi
i=1 , m
(2.6)
j=1
Эта модель определяется ограничениями на выпуск продукции, обусловленными имеющимися запасами ресурсов. Целевую функцию задачи можно записать следующим образом n
W =∑ p j⋅x j
(2.7)
j=1
После построения математической модели и записи целевой функции задача определения объема выпуска продукции, обеспечивающего предприятию наибольшую прибыль, может быть сформулирована как задача Найти n
max W =∑ p j⋅x j
(2.8)
j=1
при условии n
∑ aij⋅x j ≤bi
i=1 , m
x j ≥0
j=1
j=1 , n
(2.9)
Условие в (2.9), указывающее на неотрицательность выпуска продукции, необходимо задавать для решения задачи на компьютере при использовании Calc. В задаче (2.8), (2.9) отсутствуют ограничения на спрос продукции, которым в рыночной экономике принадлежит важная роль. Введем эти ограничения в задачу следующим образом. Обозначим через h j , j=1 , n верхнее ограничение по спросу на продукцию jго вида, а через l j нижнее ограничение по спросу на продукцию j-го вида. Тогда задача (2.8), (2.9) примет следующий вид Найти n
max W =∑ p j⋅x j
(2.10)
j=1
при условии n
∑ aij⋅x j≤b i j=1
l j≤x j ≤h j
x j≥0
j=1 , n
(2.11)
8 2.2.
Транспортная задача
Имеется m пунктов производства и n пунктов потребления. Количество продукта в i-м пункте производства обозначим через a i , i =1, m . Потребность в продукте в j-м пункте потребления обозначим через b j , j =1 , n .
Стоимость перевозки одной единицы продукта из i-го пункта производства в j-й пункт потребления обозначим через c ij i=1 , m j =1, n рублей. Требуется составить такой план перевозки однородного продукта так, чтобы общая стоимость перевозок была минимальной. Обозначим через пункт.
x ij количество продукта, перевозимого из i-го пункта в j-й
В принятых обозначениях n
∑ xij
- количество продукта, вывозимого из i-го пункта
j=1 m
∑ x ij
- количество продукта, доставляемого в j-й пункт
i=1 m
n
∑ ∑ c j⋅x ij
- суммарные транспортные расходы.
i=1 j =1
Математическая модель транспортной задачи будет иметь следующий вид: n
∑ xij≤a i
i=1 , m
(2.12)
j=1 , n
(2.13)
j=1
m
∑ x ij≥b j i=1
x ij ≥0
i=1 , m
j=1 , n
(2.14)
Целевая функция может быть записана следующим образом m
n
V =∑ ∑ c ij⋅x ij
(2.15)
i=1 j=1
Минимизация транспортных расходов требует решения следующей задачи. Найти m
n
min V =∑ ∑ cij⋅xij
(2.16)
i=1 j =1
при условиях n
∑ xij≤a i j=1
i=1 , m
(2.17)
9 m
∑ x ij≥b j
j=1 , n
(2.18)
i=1
x ij ≥0
3.
i=1 , m
j=1 , n
(2.19)
Основные приемы работы в CALC
CALC — это универсальное программное средство, предназначенное для электронной обработки данных. Данные в CALC хранятся в электронных таблицах. Электронная таблица — это универсальный аналог картотеки. Подобно карточкам картотеки, электронная таблица включает в себя отдельные листы. В зависимости от назначения листы электронной таблицы могут быть различных типов. Например, для ввода данных в электронную таблицу с целью их хранения и дальнейшей обработки используются листы. Лист — это электронный аналог таблицы, у которой можно выделить отдельные столбцы и строки, на пересечении которых образуются клетки. Столбцы листа именуются буквами, а строки — цифрами (Рис. 1). Пересечение столбца и строки листа образует ячейку. Например столбец А и строка 1 образуют ячейку с адресом А1 (Рис. 1). Замечание. Русские буквы в обозначении столбцов использовать нельзя. Ячейка — это электронный аналог одной таблицы. В каждую ячейку может быть записано число, текст или формула. Запись формулы должна начинаться со знака =. Программные средства CALC позволяют обрабатывать содержимое не только отдельных ячеек, но также и диапазонов (блоков) ячеек. Блоком ячеек называется совокупность смежных ячеек, образующих прямоугольную область. Адрес блока ячеек состоит из адреса верхней левой ячейки блока и адреса правой нижней ячейки блока, разделенных знаком : На Рис. 1 показан блок ячеек с адресом B2:D4.
10
Рис. 1: Блок ячеек Перед выполнением многих операций с данными электронных таблиц необходимо выделять ячейки, содержащие эти данные. 3.1.
Выделение ячейки
Выделение ячейки — это выбор ячейки, с которой будут работать пользователь или программные средства CALC. Для выделения ячейки необходимо: 1. Установить курсор на требуемую ячейку; 2. Щелкнуть левой кнопкой мыши. Визуально выделение ячейки сопровождается появлением рамки вокруг выделенной ячейки, в нижнем правом углу которой расположен маленький квадрат — маркер заполнения (см. Рис. 2, ячейка А1). Главное меню
Стандартная панель
Область листа
Маркер заполнения
Панель форматирования
Строка ввода
Рис. 2: Выделение ячейки на листе программы CALC
11 3.2.
Выделение блока ячеек
Выделение блока ячеек — это выбор блока ячеек, с которым будут работать пользователь или программные средства CALC. Для выделения блока ячеек необходимо: 1. Установить курсор на левую верхнюю ячейку выделяемого блока; 2. Нажать левую клавишу мыши; 3. Удерживая левую клавишу мыши нажатой, переместить курсор на правую нижнюю ячейку выделяемого блока. Визуально выделение блока ячеек сопровождается изменением цвета всех ячеек блока и появлением рамки вокруг ячейки, расположенной в нижнем правом углу блока. Кроме того, в нижней правой ячейке блока находится маркер заполнения. Выделенный блок ячеек показан на Рис. 3.
Рис. 3: Выделение блока ячеек
3.3.
Ввод данных в ячейки
Для ввода в ячейку числа, текста или формулы необходимо: 1. Выделить ячейку; 2. Набрать вводимые данные с помощью клавиатуры; 3. Нажать клавишу ENTER. Напомним, что ввод формулы в ячейку должен начинаться с набора знака =. Вводимая формула отображается в строке формул. 3.4.
Копирование формул
Копирование формул является мощным средством автоматизации вычислений в CALC. Оно позволяет распространить влияние формулы из первой ячейки некоторого блока ячеек на остальные ячейки этого блока.
12 При этом автоматически происходит корректировка адресов ячеек, содержащих аргументы копируемых формул. Для копирования формулы необходимо: 1. Выделить первую ячейку блока, содержащую формулу; 2. Установить указатель мыши на маркер заполнения (маленький квадрат в правом нижнем углу выделенной ячейки). При этом указатель должен принять вид перекрестия, т.е. + . 3. Нажать левую кнопку мыши и, удерживая ее нажатой, протащить указатель вниз или вправо по ячейкам, в которые нужно скопировать формулу. При копировании формул массива (содержащих математические операции над массивами ячеек) необходимо при перетаскивании указателя мыши нажать и удерживать нажатой клавишу Ctrl. Если при копировании формулы требуется фиксация адресов некоторых ячеек или составляющих частей этих адресов, то для этой цели используется знак $, например, $C6 – фиксируется столбец С; С$6 – фиксируется строка 6; $C$6 – фиксируется ячейка C6. Фиксация адреса ячейки происходит также при присвоении ячейке имени (см. п. 3.6.). 3.5.
Определение границ ячеек и блоков ячеек
Для повышения наглядности процесса обработки данных целесообразно окружать ячейки и блоки ячеек границами (рамками). Для определения границ вокруг ячеек или блоков ячеек необходимо: 1. Выделить ячейку или блок ячеек; 2. Навести курсор на стрелку правее кнопки Обрамление , расположенной на панели форматирования, и щелкнуть левой кнопкой мыши; 3. Выбрать курсором из списка возможных видов границ обрамление по всем внешним границам ячейки и щелкнуть левой кнопкой мыши. Блок ячеек, окруженный рамками, показан на Рис. 4. 4. Навести курсор на стрелку правее кнопки Стиль линии , расположенной на панели форматирования, и щелкнуть левой кнопкой мыши; 5. Выбрать курсором из выпадающего списка стилей обрамления подходящий стиль и толщину линий обрамления, а затем щелкнуть левой кнопкой мыши.
13
Рис. 4: Определение обрамления ячеек
3.6.
Присвоение имен ячейкам и блокам ячеек
Для автоматизации вычислений часто бывает необходимо присвоить имена отдельным ячейкам и блокам ячеек средствами CALC. Для присвоения имени ячейке или блоку ячеек необходимо: 1. Выделить ячейку или блок ячеек; 2. Навести курсор на стрелку справа от окна имени и щелкнуть левой кнопкой мыши; 3. Набрать на клавиатуре имя, например _X; 4. Нажать клавишу Enter. Для присвоения имен блоку ячеек можно также: 1. Выделить блок ячеек, затем выполнить команду главного меню Вставка Названия - Определить. Появится диалоговое окно "Определить название". 2. Набрать на клавиатуре имя выделенной области в поле Название и щелкнуть левой кнопкой мыши по кнопке Добавить. Новое имя появится в списке ниже. Затем надо щелкнуть левой кнопкой мыши по кнопке OK, чтобы закрыть диалоговое окно. При задании имени следует учитывать следующие правила: 1. Имя должно начинаться с буквы или знака подчеркивания. В качестве остальных символов могут использоваться буквы, цифры и знак подчеркивания; 2. Имя не должно совпадать с адресами ячеек и блоков, например A5; B5:C6. 3.7.
Изменение ширины столбца
При вводе в ячейку текстовых данных иногда возникает необходимость изменения ширины столбца. Для изменения ширины столбца необходимо:
14 1. Установить курсор на правую границу заголовка столбца. При этом курсор примет вид перекрестия со стрелками. 2. Нажать левую кнопку мыши и, удерживая ее нажатой, перемещать курсор вправо (для увеличения) или влево (для уменьшения) ширины столбца. Кроме того, возможна настройка оптимальной ширины столбца, для чего необходимо: 1. Установить курсор на заголовок столбца и щелкнуть левой кнопкой мыши. В результате столбец будет выделен. 2. Выполнить команду главного меню Формат → Столбец → Оптимальная ширина. Откроется диалоговое окно Оптимальная ширина столбца (Рис. 5), в котором надо щелкнуть по кнопке ОК.
Рис. 5: Окно установки оптимальной ширины столбца При необходимости можно изменить значение в поле Добавить, которое определяет расстояние от границы столбца до текста ячейки. 3.8.
Изменение цвета ячейки и блоков ячеек
Кроме установки границ ячеек (блоков ячеек), повышения наглядности представляемых на листе данных можно достичь изменением цвета ячеек (блоков ячеек). Для этого необходимо: 1. Выделить ячейку (блок ячеек); 2. Установить курсор на стрелку правее кнопки Цвет фона левой кнопкой мыши;
и щелкнуть
3. В выпадающем меню "Цвет заливки" выбрать курсором желаемый цвет, например — изумрудный, и щелкнуть левой кнопкой мыши. Для отмены заданного цвета необходимо в меню "Цвет заливки" установить курсор на кнопку "Нет заливки" и щелкнуть левой кнопкой мыши.
4.
Решение транспортной задачи
Рассмотрим следующую транспортную задачу. Для строительства четырех объектов используется кирпич, изготавливаемый на трех заводах. Ежедневно каждый из заводов может изготовить 100, 150 и 50 условных единиц кирпича (предло-
15 жение поставщиков). Потребности в кирпиче на каждом из строящихся объектов ежедневно составляют 75, 80, 60 и 85 условных единиц (спрос потребителей). Тарифы перевозок одной условной единицы кирпича с каждого из заводов к каждому из строящихся объектов задаются матрицей транспортных расходов С.
[
6 7 3 5 C= 1 2 5 6 8 10 20 1
]
Требуется составить такой план перевозок кирпича к строящимся объектам, при котором общая стоимость перевозок будет минимальной. Для решения транспортной задачи на персональном компьютере с использованием CALC необходимо: 4. Ввести исходные данные в ячейки листа CALC; 5. Разместить блоки ячеек на листе CALC, необходимые для моделирования объемов перевозок, а также для формирования элементов математической модели и целевой функции; 6. Сформировать на листе CALC элементы математической модели и целевую функцию; 7. Настроить программу "Поиск решения" и выполнить ее. 4.1.
Ввод исходных данных
Исходными данными для решения транспортной задачи являются: – матрица транспортных расходов; – предложение поставщиков; – спрос потребителей. Напомним, что для ввода данных в ячейку листа CALC необходимо: 1. Выбрать ячейку; 2. Набрать вводимые данные на клавиатуре; 3. Нажать клавишу Enter. Для наглядности блоки ячеек с введенными данными желательно обвести рамками (см. п. 3.5.). Лист CALC с введенными исходными данными для решения транспортной задачи показан на Рис. 6.
16
Рис. 6: Исходные данные для решения транспортной задачи. 4.2.
Разметка блоков ячеек листа CALC
Кроме исходных данных на листе CALC для решения транспортной задачи необходимо предусмотреть: 1. Блок ячеек "Матрица перевозок", в котором будут моделироваться объемы перевозок; 2. Блок ячеек "Фактически реализовано", в котором будет моделироваться фактическая реализация продукции. 3. Блок ячеек "Фактически получено", в котором будет моделироваться фактическое удовлетворение спроса; 4. Блок ячеек "Транспортные расходы по потребителям", в котором будут подсчитываться транспортные расходы по каждому потребителю; 5. Ячейку "Итого расходы", в которой будут моделироваться итоговые транспортные расходы по всем потребителям (целевая ячейка). Для наглядности указанные блоки ячеек целесообразно обвести рамками. Выполните эту операцию, называемую разметкой блоков ячеек, в соответствии с п. 3.5. Лист CALC с размеченными блоками ячеек показан на Рис. 7. Теперь в этих блоках ячеек можно формировать элементы математической модели и целевую функцию.
17
Рис. 7: Размеченные блоки ячеек 4.3.
Формирование элементов математической модели
Элементами математической модели транспортной задачи являются следующие суммы: n
∑ X ij
- фактически реализовано i-ым поставщиком, i=1 , m ;
j−1 m
∑ X ij
- фактически получено j-ым потребителем,
j=1 , n .
i=1
Для нашей задачи m=3, n=4. Рассмотрим процесс формирования этих сумм на рабочем листе CALC. 4
Вначале сформируем
∑ X ij
, i=1 , 3 в блоке "Фактически реализовано".
j=1
1. Заполните ячейки блока "Матрица перевозок" (C14:F16) числом 0,01. 2. Выделите первую ячейку блока "Фактически реализовано" (ячейка H14); 3. Наведите курсор на кнопку кой мыши;
- автосуммирование и щелкните левой кноп-
4. Нажмите клавишу Delete; 5. Поместите курсор в первую ячейку первой строки блока "Матрица перевозок" (ячейка C14), щелкните левой кнопкой мыши и, удерживая ее нажатой переместите курсор в последнюю ячейку первой строки (ячейка F14); 6. Нажмите клавишу Enter;
18 7. Скопируйте формулу =SUM(C14:F14) из первой ячейки блока "Фактически реализовано" на все остальные ячейки этого блока. 3
Сформируем теперь
∑ X ij
,
j=1 , 4 - в блоке "Фактически получено".
i=1
Для этого выполните следующие действия: 1. Выделите первую ячейку блока "Фактически получено" (ячейка C18); 2. Наведите курсор на кнопку кой мыши;
- автосуммирование и щелкните левой кноп-
3. Нажмите клавишу Delete; 4. Поместите курсор в первую ячейку первого столбца блока "Матрица перевозок" (столбец C14), щелкните левой кнопкой мыши и, удерживая ее нажатой, переместите курсор в последнюю ячейку первого столбца (ячейка C16); 5. Нажмите клавишу Enter; 6. Скопируйте формулу =SUM(C14:C16) из первой ячейки блока "Фактически получено" на остальные ячейки этого блока. 4.4.
Формирование целевой функции
Для формирования целевой функции введем вначале формулы, отражающие транспортные расходы по каждому потребителю, т.е. Формулы: 3
∑ cij⋅x ij
,
j =1 , 4 в ячейки блока "Транспортные расходы по потребителям"
i=1
Для ввода этих формул выполните следующие действия: 1. Выделите первую ячейку блока "Транспортные расходы по потребителям" (ячейка C21); 2. Наведите курсор на кнопку кой мыши;
- автосуммирование и щелкните левой кноп-
3. Нажмите клавишу Delete; 4. Выделите первый столбец блока "Матрица транспортных расходов" (столбец C6:C8); 5. Нажмите клавиши Shift + *; 6. Выделите первый столбец блока "Матрица перевозок" (столбец C14:C16); 7. Активируйте строку формул, наведя на нее курсор и щелкнув затем левой кнопкой мыши; 8. Нажмите одновременно три клавиши CTRL + SHIFT + ENTER; 9. Скопируйте формулу {=SUM(C6:C8*C14:C16)} из первой ячейки блока "Транспортные расходы по потребителям" на остальные ячейки этого блока. При копировании формулы удерживайте нажатой клавишу Ctrl.
19
Сформируем теперь целевую функцию транспортной задачи, выражаемую 4
формулой
3
∑ ∑ cij⋅xij
, в ячейке "Итого расходы". Для этого:
j=1 i=1
1. Выделите ячейку "Итого расходы" (ячейка H21); 2. Наведите курсор на кнопку кой мыши;
- автосуммирование и щелкните левой кноп-
3. Нажмите клавишу Delete; 4. Выделите блок ячеек "Транспортные расходы по потребителям" (ячейки C21:F21); 5. Нажмите клавишу Enter. После формирования элементов математической модели и целевой функции транспортной задачи лист CALC примет вид, показанный на Рис. 8. Теперь можно приступить к настройке программы "Поиск решения".
4.5.
Настройка программы "Поиск решения"
Для настройки программы "Поиск решения" на решение транспортной задачи выполните следующие действия: 1. Выделите целевую ячейку "Итого расходы" (ячейка H21); 2. Установите курсор в строке главного меню на пункте "Сервис" и щелкните левой кнопкой мыши; 3. Установите курсор на пункт "Поиск решения" в выпадающем меню "Сервис", щелкните левой кнопкой мыши и убедитесь, что в поле "Установить целевую ячейку" диалогового окна программы "Решатель" указана ячейка $H$21 (см. Рис. 9). 4. В списке "Оптимизация результата" установите курсор на переключатель "Минимум" и щелкните левой кнопкой мыши; 5. Установите курсор в поле ввода "Путем изменения ячеек" и щелкните левой кнопкой мыши; 6. Выделите блок ячеек "Матрица перевозок" (блок C14:F16); 7. Установите курсор в поле ввода "Ссылка на ячейку" и щелкните левой кнопкой мыши; 8. Выделите блок ячеек "Фактически реализовано" (блок H14:H16)$
20
Рис. 8: Формирование элементов математической модели 9. Убедитесь, что оператор сравнения <= уже выбран; 10. Установите курсор в поле ввода "Значение" и щелкните левой кнопкой мыши; 11. Выделите блок ячеек "Предложение поставщиков" (блок H6:H8); 12. Установите курсор в следующее поле "Ссылка на ячейку" и щелкните левой кнопкой мыши; 13. Выделите блок ячеек "Фактически получено" (блок C18:F18); 14. Выберите из выпадающего меню "Операция" оператор >= и щелкните левой кнопкой мыши; 15. Установите курсор в поле ввода "Значение" и щелкните левой кнопкой мыши; 16. Выделите блок ячеек "Спрос потребителей" (блок C10:F10); 17. Установите курсор в следующее поле "Ссылка на ячейку" и щелкните левой кнопкой мыши; 18. Выделите блок ячеек "Матрица перевозок" (блок C14:F16); 19. Выберите из выпадающего меню "Операция" оператор >= и щелкните левой кнопкой мыши; 20. Установите курсор в поле ввода "Значение" и щелкните левой кнопкой мыши; 21. Наберите на клавиатуре цифру 0; 22. Убедитесь, что диалоговое окно программы "Решатель" имеет вид, показанный на Рис. 9.
21
Рис. 9: Окно настроенной программы "Поиск решения" 23. Установите курсор на кнопку "Параметры" и щелкните левой кнопкой мыши; 24. В появившемся диалоговом окне "Параметры" (см. Рис. 10) убедитесь, что в окне ввода "Механизм решателя" установлено значение "OpenOffice.org линейный поиск решения" и щелкните левой кнопкой мыши; 25. Установите курсор на кнопку ОК и щелкните левой кнопкой мыши; 26. В появившемся диалоговом окне "Решатель" установите курсор на кнопку "Решить" и щелкните левой кнопкой мыши. 27. Убедитесь, что на CALC в блоке "Матрица перевозок" появилось решение транспортной задачи, показанное на Рис. 11. В появившемся диалоговом окне "Результаты решения" установите курсор на переключатель "Сохранить результаты" и щелкните левой кнопкой мыши. Для завершения расчетов щелкните на кнопке ОК.
22
Рис. 10: Диалоговое окно "Параметры"
Рис. 11: Результат решения транспортной задачи
5.
Решение задачи определения наиболее прибыльного объема выпуска продукции
Рассмотрим следующую задачу. На машиностроительном предприятии для изготовления четырех видов продукции используется токарное, фрезерное, сверлильное, расточное и шлифовальное оборудование, а также комплектующие изделия. Кроме того, для сборки готовой продукции требуется выполнение определенных сборочно-наладочных работ. Нормы расхода ресурсов на изготовление одного
23 изделия каждого вида приведены в таблице 5.1. В этой же таблице указаны: имеющиеся в наличии ресурсы, ограничения, обусловленные спросом на выпуск продукции второго и третьего видов, и прибыль от реализации одного изделия. Требуется определить такой объем выпуска продукции, который обеспечивает предприятию наибольшую прибыль. Таблица 5.1 Нормы расхода ресурсов на одно изделие Наличие Изделия: Изделие 1 Изделие 2 Изделие 3 Изделие 4 ресурсов Ресурсы: Оборудование (человеко-часов) токарное
550
фрезерное
40
30
20
20
4800
сверлильное
86
110
150
52
22360
расточное
160
92
158
128
26240
158
30
50
7900
3
4
3
3
520
4,5
4,5
4,5
4,5
720
шлифовальное Комплектующие детали (шт) Сборочно-наладочные работы (чел-час) Выпуск (шт): минимальный
620
64270
40
максимальный
120
Прибыль от реализации одного изделия
315
278
537
370
Для решения задачи на персональном компьютере с использованием CALC необходимо: 1. Ввести исходные данные в ячейки листа CALC; 2. Разметить блоки ячеек, необходимые для моделирования объема выпуска продукции, а также для формирования элементов математической модели и целевой функции; 3. Сформировать на листе CALC элементы математической модели и целевую функцию; 4. Настроить программу "Поиск решения" и выполнить ее. 5.1.
Ввод исходных данных
Исходными данными для решения задачи определения наиболее прибыльного объема выпуска продукции являются: – имеющиеся в наличии ресурсы; – нормы расхода ресурсов на выпуск одного изделия; – максимальная и минимальная величина спроса на изделия;
24 – прибыль от реализации одного изделия. Напомним, что для ввода данных в ячейку листа CALC необходимо: 1. Выделить ячейку; 2. Набрать вводимое число на клавиатуре; 3. Нажать клавишу Enter. Лист CALC с введенными исходными данными для решения задачи показан на Рис. 12.
Рис. 12: Исходные данные для решения задачи
5.2.
Разметка блоков ячеек листа CALC
Кроме исходных данных, на листе CALC для решения задачи определения наиболее прибыльного объема выпуска продукции необходимо предусмотреть: 1. Блок ячеек "Оптимальный выпуск", в котором будет моделироваться объем выпуска продукции; 2. Блок ячеек "Фактически использовано", в котором будет моделироваться фактическое использование ресурсов; 3. Блок ячеек "Прибыль по изделиям", в котором будет моделироваться получение прибыли от реализации каждого вида продукции; 4. Ячейку "Итоговая прибыль", в которой будет моделироваться получение прибыли от реализации всей продукции. Для наглядности указанные блоки ячеек целесообразно обвести рамками. Выполните эту операцию, называемую разметкой блоков, ячеек, в соответствии с п. 3.5. Лист CALC с размеченными блоками ячеек показан на Рис. 13. Теперь в этих блоках ячеек можно формировать элементы математической модели и целевую функцию.
25
Рис. 13: Размеченные блоки ячеек 5.3.
Формирование элементов математической модели
Элементами математической модели задачи определения наиболее прибыльного объема выпуска продукции являются следующие суммы: m
∑ aij⋅x j
- фактическое использование i-го ресурса, i=1 , m .
j=1
Для нашей задачи n=4, m=7. Перед формированием этих сумм на листе CALC целесообразно блоку ячеек "Оптимальный выпуск", в котором будет моделироваться выпуск готовой продукции, присвоить имя, например, Опт_выпуск. Напомним, что в соответствии с п. 3.6. имя блоку ячеек можно присвоить, например, следующим образом: 1. Выделить блок ячеек "Оптимальный выпуск" (блок B18:E18); 2. Навести курсор на стрелку справа от окна "Область листа" (см. Рис. 2) и щелкнуть левой кнопкой мыши; 3. Набрать на клавиатуре Опт_выпуск; 4. Нажать клавишу Enter. 4
Для формирования
∑ aij⋅x j
, i=1 , 7 выполните следующие действия:
j=1
1. Заполните ячейки блока "Оптимальный выпуск" (блок B18:E18) числами 0,01; 2. Выделите первую ячейку блока "Фактически использовано" (ячейка G5);
26 3. Наведите курсор на кнопку кой мыши;
- автосуммирование и щелкните левой кноп-
4. Нажмите клавишу Delete; 5. Введите с клавиатуры имя блока ячеек B18:E18 (символы Опт_выпуск); 6. Нажмите клавиши Shift + *; 7. Выделите первую цифровую строку блока "Нормы расхода ресурсов на одно изделие" (блок B5:E5); 8. Активируйте строку формул, наведя на нее курсор, и щелкните левой кнопкой мыши; 9. Нажмите одновременно три клавиши Ctrl + Shift + Enter; 10. Скопируйте из ячейки G5 формулу {=SUM(Опт_выпуск*B5:E5)} в остальные ячейки блока "Фактически использовано" (блок G5:G11). При копировании формулы удерживайте нажатой клавишу Ctrl. 5.4.
Формирование целевой функции
Напомним, что целевая функция для задачи определения наиболее прибыльного объема выпуска продукции имеет следующий вид: n
P 1=∑ P j⋅X j=1
j
Учитывая особенности компьютерных вычислений, запишем целевую функцию следующим образом: n
W 1=∑ p j⋅max x j ,0 j=1
Для формирования целевой функции выполните следующие действия: 1. Выделите первую ячейку блока "Прибыль по изделиям" (ячейка B20); 2. Введите с клавиатуры формулу =B14*MAX(B18;0); 3. Нажмите клавишу Enter; 4. Скопируйте формулу из ячейки B20 на все остальные ячейки блока "Прибыль по изделиям" (блок B20:E20); 5. Выделите ячейку "Итоговая прибыль" (ячейка G22); 6. Наведите курсор на кнопку кой мыши;
- автосуммирование и щелкните левой кноп-
7. Нажмите клавишу Delete; 8. Выделите блок "Прибыль по изделиям" (блок B20:E20); 9. Нажмите клавишу Enter.
27 После формирования элементов математической модели и целевой функции задачи определения наиболее прибыльного объема выпуска продукции лист CALC примет вид, показанный на Рис. 14.
Рис. 14: Формирование элементов математической модели и целевой функции задачи Теперь можно приступить к настройке программы "Поиск решения".
5.5.
Настройка программы "Поиск решения"
Для настройки программы "Поиск решения" на решение задачи определения наиболее прибыльного объема выпуска продукции выполните следующие действия: 1. Выделите целевую ячейку "Итоговая прибыль" (ячейка G22); 2. Установите курсор на пункт главного меню "Сервис" и щелкните левой кнопкой мыши; 3. Установите курсор на пункте выпадающего меню "Поиск решения" и щелкните левой кнопкой мыши; 4. Убедитесь, что в поле "Целевая ячейка" диалогового окна "Решатель" указана ячейка $G$22 (см. Рис. 15); 5. Убедитесь, что установлен переключатель "Оптимизация результата — Максимум";
28
Рис. 15: Диалоговое окно "Решатель" 6. Установите курсор в поле "Путем изменения ячеек" и щелкните левой кнопкой мыши; 7. Выделите блок ячеек "Оптимальный выпуск" (блок B18:E18); 8. Установите курсор в первой строке раздела "Ограничительные условия", в поле ввода "Ссылка на ячейку" и щелкните левой кнопкой мыши; 9. Выделите блок ячеек "Фактически использовано" (блок G5:G11); 10. Убедитесь, что в поле "Операция" оператор сравнения <= уже выбран; 11. Установите курсор на поле "Значение" и щелкните левой кнопкой мыши; 12. Выделите блок ячеек "Наличие ресурсов" (блок F5:F11) и убедитесь, что первая строка раздела "Ограничительные условия" диалогового окна "Решатель" имеет вид, показанный на Рис. 16; 13. Установите курсор на поле ввода "Ссылка на ячейку" во второй строке раздела "Ограничительные условия" и щелкните левой кнопкой мыши; 14. Выделите блок ячеек "Оптимальный выпуск" (блок B18:E18); 15. Установите в поле ввода "Операция" оператор сравнения >=;
29
Рис. 16: Первая строка раздела "Ограничительные условия" 16. Установите курсор на поле ввода "Значение" и щелкните левой кнопкой мыши; 17. Наберите на клавиатуре цифру 0 и убедитесь, что раздел "Ограничительные условия" имеет вид, показанный на Рис. 17;
Рис. 17: Вторая строка раздела "Ограничительные условия" 18. Установите курсор на поле ввода "Ссылка на ячейку" в третьей строке раздела "Ограничительные условия" и щелкните левой кнопкой мыши; 19. Выделите ячейку C18; 20. Установите в поле ввода "Операция" оператор сравнения >=; 21. Установите курсор на поле ввода "Значение" и щелкните левой кнопкой мыши;
Рис. 18: Раздел "Ограничительные условия" 22. Выделите ячейку C12 и убедитесь, что раздел "Ограничительные условия" имеет вид, показанный на Рис. 18;
30 23. Установите курсор на поле ввода "Ссылка на ячейку" в четвертой строке раздела "Ограничительные условия" и щелкните левой кнопкой мыши; 24. Выделите ячейку D18; 25. Установите в поле ввода "Операция" оператор сравнения <=; 26. Установите курсор на поле ввода "Значение" и щелкните левой кнопкой мыши; 27. Выделите ячейку D13 и убедитесь, что раздел "Ограничительные условия" имеет вид, показанный на Рис. 19;
Рис. 19: Вид раздела "Ограничительные условия" 28. Убедитесь, что диалоговое окно "Решатель" имеет вид, показанный на Рис. 20;
Рис. 20: Диалоговое окно "Решатель" 29. Установите курсор на кнопку Решить и щелкните левой кнопкой мыши; 30. Убедитесь, что на листе CALC в блоке "Оптимальный выпуск" появляется решение задачи определения наиболее прибыльного объема выпуска продукции, показанное на Рис. 21;
31 31. В появившемся диалоговом окне "Результат" установите курсор на кнопку "Восстановить предыдущие значения" и щелкните левой кнопкой мыши (см. Рис. 22). 32. Для завершения расчетов щелкните в диалоговом окне "Решатель" на кнопке Закрыть.
Рис. 21: Результат решения задачи
Рис. 22: Окно "Результат"
32
6.
Контрольные вопросы
1. Что такое оптимальное решение? 2. Дайте определение экстремальной задачи. 3. Приведите примеры экстремальных задач. 4. Дайте определение математической модели. 5. Что представляют собой ограничения экстремальной задачи? 6. Как связаны между собой ограничения задачи и математическая модель задачи? 7. Дайте определение целевой функции задачи. 8. Что называется решением экстремальной задачи? 9. Приведите примеры математических моделей экстремальных задач. 10. Приведите примеры целевых функций экстремальных задач.