Дипломная (вкр): Решение задач оптимизации с применением пакетов прикладных программ

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Объединение графиков. Для объединения графиков предназначена команда hold on, которую можно задать перед построением следующего графика.

М-файлы. Файлы, которые содержат коды языка MATLAB, называются М-файлами. Процедура создания М-файла включает две операции:

· создание М-файла с использованием текстового редактора

· вызов М-файла из командной строки или из другого М-файла

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

Типы М-файлов. Существует два типа М-файлов: М-сценарии и М-функции со следующими характеристиками (Таблица 1):

Таблица 1. Характеристики М-сценария и М-функции

М-сценарий

М-функция

Не допускает входных и выходных аргументов

Допускает водные и выходные аргументы

Оперирует с данными из рабочей области

По умолчанию внутренние переменные являются локальными по отношению к функции

Предназначен для автоматизации последовательности шагов, которые нужно выполнять много раз

Предназначена для расширения возможностей языка MATLAB (библиотеки функции, пакеты прикладных программ)


Структура М-файла. М-файл, оформленный в виде функции, состоит из следующих компонентов:

· строки определения функции

· первой строки комментария

· комментария

· тела функции

Структура этой функции содержит компоненты, которые являются общими для любых функций системы MATLAB:

· строку определения функции - задает имя, количество и порядок следования водных и выходных аргументов;

· первую строку комментария - определяет назначение функции.

Она выводится на экран с помощью команд lookfor или help<имя каталога>;

· комментарий - выводится на экран вместе с первой строкой при использовании команды help<имя функции>;

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

Типы переменных. Локальные и глобальные переменные. Использование переменных в М-файле ничем не отличается от использования переменных в командной строке, а именно:

· переменные не требуют объявления; прежде чем переменной присвоить значение, необходимо убедиться, что всем переменным в правой части присвоены значения;

· любая операция присваивания создает переменную, если это необходимо, или изменяет значение существующей переменной;

· имена переменных начинаются с буквы, за которой следует любое количество букв, цифр и подчеркиваний.

Обычно каждая М-функция, задаваемая в виде М-файла, имеет собственные локальные переменные, которые отличны от переменных других функций и переменных рабочей области. Если несколько функций и рабочая область объявляют некоторую переменную глобальной, то все они используют единственную копию этой переменной. Любое присваивание этой переменной распространяется на все функции, где она объявлена глобальной.

Для того чтобы переменная рабочей области была глобальной, необходимо объявить ее как глобальную из командной строки; в каждой функции использовать команду global перед первым появлением переменной, рекомендуется указывать команду global в начале М-файла [15].

Создание М-файлов. М-файлы являются обычными текстовыми файлами, которые создаются с помощью текстового редактора. Для операционной среды персонального компьютера система MATLAB поддерживает специальный встроенный редактор/отладчик, хотя можно использовать и любой другой текстовый редактор с ASCII-кодами [18].

Открыть редактор можно двумя способами:

· из меню File выбрать опцию New, а затем M-File;

· использовать команду редактирования edit<имя файла>.

М-сценарии. Сценарии являются самым простым типом М-файла - у них нет входных и выходных аргументов. Они полезны для выполнения автоматизации последовательности MATLAB-команд вычисления, которые должны были бы многократно вводиться из командной строки.

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

М-функции. Функции являются М-файлами, которые допускают наличие входных и выходных данных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB.

Структура М-функции. М-функция включает следующие компоненты:

· строки определения функции;

· первой строки комментария;

· собственно комментария;

· тела функции;

· строчных комментариев.

Имена М-функций. Имя файла, содержащего М-функцию, составляется из имени функции и расширения ''.m''.

Если имя файла и имя функции в строке определения функции разные, то используется имя файла, а внутреннее имя игнорируется. Настоятельно рекомендуется использовать одинаковые имена.

Выполнение М-функций. М-функцию можно вызвать из командной строки системы MATLAB или из других М-файлов, обязательно указав все необходимые атрибуты - входные аргументы в круглых скобках, выходные аргументы в квадратных скобках.

Для вывода сообщений об ошибках используется оператор error(‘Message’).

Средства программирования в MATLAB. Многие математические системы создавались исходя из предположения, что пользователь будет решать свои задачи, практически не занимаясь программированием. Однако с самого начала было ясно, что подобный путь имеет недостатки и, вообще говоря, порочен. Ведь многие задачи нуждаются в развитых средствах программирования, которые упрощают запись алгоритмов задач и порой открывают новые методы создания алгоритмов. С одной стороны, MATLAB содержит огромное число операторов и функций, которые решают множество практических задач, для чего ранее приходилось готовить достаточно сложные программы. К примеру, это функции обращения или транспонирования матриц, вычисления значений производной или интеграла и т. д. Число таких функций с учетом пакетов расширения системы уже достигает многих тысяч и непрерывно увеличивается. Но, с другой стороны, система MATLAB с момента своего создания создавалась как мощный математико-ориентированный язык программирования высокого уровня. И многие рассматривали это как важное достоинство системы, свидетельствующее о возможности ее применения для решения новых, наиболее сложных математических задач [19].

Система MATLAB имеет входной язык, напоминающий Бейсик (с примесью Фортрана и Паскаля). Запись программ в системе традиционна и потому привычна для большинства пользователей компьютеров. К тому же система дает возможность редактировать программы с помощью любого привычного для пользователя текстового редактора. Имеет она и собственный редактор с отладчиком. Язык системы MATLAB в части программирования математических вычислений намного богаче любого универсального языка программирования высокого уровня. Он реализует почти все известные средства программирования, в том числе объектно-ориентированное и (средствами Simulink) визуальное программирование. Это дает опытным программистам необъятные возможности для самовыражения.

Управление потоками. MATLAB имеет пять видов структур управления потоками [20]:

· оператор if

· оператор switch

· циклы for

· циклы while

· оператор break

Операторы цикла for, while. Самое простое использование for осуществляется следующим образом:

for count = start:step:final

команды MATLAB

end

Использование оператора for.

for i=1:m

for j=1:n(i, j) = 1/(i+j-1);

end

end

H

По данному набору команд создается и выводится на экран матрица Гилберта размерности m×n. Точка с запятой, которая завешает внутренний оператор, предотвращает вывод на экран ненужных промежуточных результатов, в то время как последний оператор H выводит на экран окончательный результат.

Цикл While. В общем виде цикл while записывается в виде

<условие>

<операторы>

<операторы> будут повторяться до тех пор, пока <условие> будет оставаться истинным. Например, для заданного числа  приведенная далее последовательность операторов вычислит и выведет на дисплей наименьшее неотрицательное число , удовлетворяющее заданному условию.

Использование оператора while

n=0;

while 2^n<a

n=n+1;

end

n

Условный оператор if. В общем виде простой оператор if используется следующим образом:

<условие>

<операторы>

<операторы> будут выполняться, только если <условие> истинно. Возможно также множественное ветвление, что демонстрируется приведенным далее примером.

Использование оператора if

If n<0

parity=0;mod(n, 2)==0=2;

parity=1;

end

parity

Оператор переключения switch…case. При необходимости построить конструкцию ветвления с более чем двумя логическими условиями удобнее использовать не вложенные операторы if, а оператор переключения switch…case. Этот оператор имеет следующую структуру:

switch <выражение>

case <значение 1>

операторы

case <значение 2>

операторы

…

otherwise

операторы

end

Условия (операторы отношения). В MATLAB используются следующие операторы отношения:

< меньше чем

> больше чем

<= меньше или равно

>= больше или равно

== равно

~= не равно

Отметим, что знак = используется в операторах присваивания, в то время как знак == используется в операторах отношения.

Когда эти операторы применяются к скалярам, то результатом является тоже скаляр 1 или 0 в зависимости от того, является ли результат истиной или ложью. Когда операторы отношения применяются к матрицам одинакового размера, результатом является матрица того же размера, у которой в качестве элементов стоят 0 или 1, в зависимости от соотношения между соответствующими элементами исходных матриц. Операторы while и if интерпретирует отношение между матрицами как истинное в том случае, если результирующая матрица не имеет нулевых элементов [16].

2. Решение задач оптимизации с применением пакетов прикладных программ

.1 Решение задач оптимизации с применением MS Excel

Целью производства является получение максимальной прибыли. На практике производство и сбыт продукции имеют много ограничений, учет которых влияет на планирование ассортимента и количественные показатели. В математической модели производства можно учесть лишь некоторые из этих показателей. В данном параграфе рассмотрены следующие задачи: составление оптимального производственного плана, оптимизация составления смесей.

Структура производственных моделей. Производственная математическая модель предназначена для формирования оптимального производственного плана или технологических операций при ограниченных временных, материальных, трудовых и производственных ресурсах [21]. Критерием оптимальности является получение максимума прибыли или минимума издержек. Само планирование состоит обычно в определении количества выпускаемой продукции или составляющих в пределах заданного ассортимента. Чтобы создать математическую модель производственной фирмы, надо определить следующие параметры:

• константы нормативных затрат материалов, труда и финансов;

• переменные решения;

• целевую функцию;

• запас ресурсов или продукции;

• параметры спроса на продукцию.

Оптимизация модели производственного плана состоит в поиске максимума (для прибыли) или минимума (для затрат) целевой функции при ограничении на спрос и ресурсы [22]. При оптимизации раскроя листовых материалов возникают важные для технологов вопросы минимизации отходов. При составлении смесей часто требуется выполнить ограничение сверху и снизу концентрации составляющих компонент.

Математическое программирование занимается исследованием детерминированных и одноцелевых задач. Слово "программирование" в данном случае означает "планирование". К математическому программированию относится [23]:

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

. Нелинейное программирование: целевая функция и ограничения могут быть нелинейными функциями.

. Целочисленное программирование: особый случай в задачах линейного и нелинейного программирования, когда на оптимальные решения накладывается условие целочисленности искомых параметров.

. Динамическое программирование: для отыскания оптимального решения планируемая операция разбивается на ряд шагов (этапов) и планирование осуществляется последовательно от этапа к этапу. Однако выбор метода решения на каждом этапе производится с учетом интересов операции в целом.

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

Математическая модель любой задачи линейного программирования включает в себя:

- набор констант, характеризующих, например, наличие ресурсов, величину спроса, производственную мощность предприятия и другие производственные факторы;

- искомые переменные величины, например, количество запланированной к выпуску продукции по всему ассортименту;

- максимум или минимум целевой функции, например, запланированной прибыли;

- систему ограничений в форме линейных уравнений и неравенств, например, условие того, что расход материала не должен превышать его запас;

- требование неотрицательности переменных (если не предусмотрено иное).

Решение практической задачи всегда связано с исследованием, с преобразованием некоторого объекта (материального или информационного) или с управлением им (рисунок 13).

Рисунок 13. Схема моделирования

При решении "стандартной" задачи в линейном программировании нужно определить максимум линейной целевой функции


при условиях


Здесь целевая функция формируется как скалярное произведение двух векторов. Один из них - вектор искомых переменных . Компонентами другого вектора являются целевые коэффициенты . Условия задачи можно сформулировать так: "Расход  не должен превышать имеющиеся ресурсы ". Вектор расхода  есть сумма произведений матрицы нормированных коэффициентов  на вектор искомых переменных .

Основной аналитический метод решения задач линейного программирования - это симплексный метод. Он сводится к вычислительной процедуре, основанной на принципе последовательного улучшения решений - перехода от одной базисной точки к другой, для которой значение целевой функции больше. Доказано, что если оптимальное решение существует, то оно обязательно будет найдено через конечное число шагов. Геометрическая интерпретация метода состоит в последовательном движении по вершинам симплекса (n-мерного тетраэдра). Симплекс-метод послужил исходным пунктом для разработки целого семейства алгоритмов решения как линейных, так и нелинейных выпуклых задач оптимизации.

Источник: https://www.bibliofond.ru/detail.aspx?id=869912