Основы математического моделирования
Заполненная в результате ввода ограничений форма поиска решений представлена на рис. 5. Решение задачи производится сразу же после ввода данных, когда на экране находится диалоговое окно Поиска решения. Перед началом решения необходимо установить параметры решения, для чего в окне поиска решения выбираем команду параметры. Диалоговое окно параметров поиска решения представлено на рис. 7. Решение… Читать ещё >
Основы математического моделирования (реферат, курсовая, диплом, контрольная)
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
(ФГБОУ ВПО ВГТУ) Факультет заочного обучения Кафедра технологии машиностроения КУРСОВАЯ РАБОТА
«Основы математического моделирования»
Выполнил студент ТМ-102 Д. Ю. Усманова Шифр 310 034
Проверила доцент кафедры ТМ Перова А. В.
Воронеж 2012
Задание 1
Методы линейного программирования в математическом моделировании технологических процессов Предприятие может выпустить три вида продукции: П1, П2, П3. Для выпуска продукции требуются ресурсы трех видов: трудовые, станочное оборудование и полуфабрикаты. Объемы и нормы расхода ресурсов приведены таблице 1
Таблица 1.
Наименование ресурса | Вид продукции | Объем ресурса | |||
П1 | П2 | П3 | |||
Расход ресурса на единицу продукции | |||||
Трудовые ресурсы, чел-ч | |||||
Станочное оборудование, станкосмены | |||||
Полуфабрикаты, кг | |||||
Прибыль с единицы продукции, руб | max | ||||
Выпуск, шт | X1 | X2 | X3 | ||
Требуется найти, сколько и какого вида продукции необходимо выпускать, чтобы план был оптимальным по критерию прибыли, т. е. таким, при котором получаемая прибыль была бы максимальной.
Данная задача относится к задаче планирования при ограничениях на ресурсы, распределительного типа.
Математическая модель для решения данной задачи будет иметь следующий вид:
F=12x1+18x2+16x3max;
2x1+5x2+6x3240;
3x1+7x2+7x3420;
4x1+4x2+2x3300;
xj 0, j=.
Рассмотрим последовательность работ при решении этой задачи средствами Excel.
Форма ввода условий данной задачи может иметь следующий вид:
Рисунок 1
Весь тескт на рисунке 1 (и в дальнейшем) является комментарием и на решение задачи не влияет. Далее вводим в сформированную форму исходные данные (коэффициенты в целевой функции и ограничениях, а также направление оптимизации целевой функции и знаки ограничений (рис. 2)
Рисунок 2
При этом ячейки B3: E3 являются неизменяемыми, и в них будут заноситься значения переменных.
Ввод функциональных зависимостей для целевой функции и ограничений осуществляется с использованием Мастера функций. Для этого необходимо активизировать требуемую ячейку (F6) и вызвать Мастер функций. В левой части появившегося диалогового окна выбираем категорию функцию Математическая, а в правом окне выделяем функцию СУММПРОИЗВ и нажимаем ОК. Затем на экране отобразится диалоговое окно второго шага (рис. 3), где введем как первый ($B$ 3:$D$ 3), так и второй массивы (B6:D6). При вводе первого массива используются абсолютные ссылки на ячейки, при вводе второго — относительные.
Рисунок 3
Окончательная таблица с исходными данными представлена на рис. 4 (для наглядности выбран режим предсталения формул).
Рисунок 4
линейный программирование целевой функция После окончания ввода исходных данных осуществим вызов программы Поиск решения. Для этого выбираем в меню пункт Данные, а в нём — Поиск решения, в результате чего на экране появляется окно поиска решения (рис. 5).
Рисунок 5
В окне Оптимизировать целевую ячейку вводим имя ячейки, в которую введена зависимость для целевой ячейки (в данном случае F6). В качестве направления оптимизации выбираем максимизация. В окне Изменяя ячейки вводим адреса ячеек, соответствующих варьируемыми переменными задачи (В3:Е3). Далее вводим ограничения. Для добавления ограничений выбираем пункт Добавить, после чего появляется окно добавления ограничений (рис. 6).
Рисунок 6
Также вводим граничные условия для переменных (П1-П3)?0: B3>=B4, C3>=C4, D3>=D4 (нулевые значения ячеек B4-D4 не устанавливаем).Ограничения вводи в виде B3>=0, C3>=0, D3>=0. Затем вводим ограничения на ресурсы: F10<=H10, F11<=H11, F12<=H12. Ограничения вводим последовательно. Сначала выбираем пункт Добавить, далее в появившихся диалоговых окнах вводим левую часть, знак и правая часть каждого ограничения. После ввода последнего ограничения и нажатия ОК происходит возврат в окно Поиск решения.
Заполненная в результате ввода ограничений форма поиска решений представлена на рис. 5. Решение задачи производится сразу же после ввода данных, когда на экране находится диалоговое окно Поиска решения. Перед началом решения необходимо установить параметры решения, для чего в окне поиска решения выбираем команду параметры. Диалоговое окно параметров поиска решения представлено на рис. 7.
Рисунок 7.
С помощью команд, находящихся в этом диалоговом окне, вводим условия для решения задач оптимизации всех классов. Рассмотрим наиболее важные команды, применяемые при решении конкретных задач. Команды, используемые по умолчанию, походят для решения большей части практических задач.
Для решения задачи линейного программирования необходимо установить флажок Линейная модель в окне Параметры поиска решения, что обеспечит использование симплексного метода. Далее после выбора ОК происходит возврат в окно Поиск решения. Запуск процесса решения задачи осуществляем командой Выполнить.
Решение задачи занимает несколько секунд, после чего на экране появляется диалоговое окно Результаты поиска решений. При решении рассматриваемой задачи производственного планирования в окне появляется сообщение о том, что решение найдено. В данном окне предоставляется возможность сохранить найденное решение во влияющих ячейках модели или восстановить исходные данные.
Результирующие значения всех переменных записываются в ячейки B3-D3 исходной задачи. Соответствующее значения целевой функции заносится в ячейку F6, а значения левых частей ограничений — в ячейки F10-F12. Таблица с результатами решения задачи представлена на рис. 8.
Рисунок 8
показывает, что в оптимальном решении Прод1=B3=45;
Прод2=C3=30;
Прод3=D3=0.
При этом максимальная прибыль будет составлять F6=1080, а количество использованных ресурсов равно:
Трудовых = F9 =240;
Сырья = F10 = 345;
Финансов = F11=300.
Кроме того, из окна Результаты поиска решений возможно создание отчётов трёх типов: по результатам, устойчивости и пределам, каждый из которых записывается на отдельном листе. Отчёты формируются при анализе полученного оптимального решения.
Отчет по результатам (рис. 9) состоит из трех таблиц.
В таблице 1 (целевая ячейка) приведены сведения о целевой функции, в столбце «Исходно» — указывается значение целевой функции до вычислений, «Результат» — указывается значение целевой функции после вычислений.
Таблица 2 (изменяемые ячейки) содержит сведения о значениях искомых переменных, до и после решения задачи.
Таблица 3 (ограничения) показывает результаты оптимального решения для ограничений и для граничных условий. Здесь в графе «Формула» приведены зависимости, которые были введены в диалоговом окне «Поиск решения»); в графе «Разница» показано количество неиспользованного ресурса. Если ресурс используется полностью, то в графе «Состояние» указывается связанное; при неполном использовании ресурса в этой графе указывается не связан.
Рисунок 9
Отчет по устойчивости (рис. 10) состоит из двух таблиц.
В таблице 1 (изменяемые ячейки) приводятся следующие значения для переменных:
— результат решения задачи;
— редуцированная стоимость, т. е. дополнительные двойственные переменные vj, которые показывают, насколько изменяется целевая функция при принудительном включении единицы этой продукции в оптимальное решение;
— коэффициенты целевой функции;
— предельные значения приращения коэффициентов cj целевой функции при которых сохраняется набор переменных, входящих в оптимальное решение.
В таблице 2 (ограничения) приводятся аналогичные значения для ограничений:
— величины использованных ресурсов;
— теневые цены, т. е. двойственные оценки yi, которые показывают, как изменится целевая функция при изменении ресурсов на единицу;
— значения приращения ресурсов bi, при которых сохраняется оптимальный набор переменных, входящих в оптимальное решение.
Рисунок 10
Отчет по пределам (рис.11) показывает, в каких пределах может изменяться выпуск продукции, вошедшей в оптимальное решение, при сохранении структуры оптимального решения:
— рассматриваются значения xj в оптимальном решении;
— рассматриваются нижние пределы изменения значений xj.
Кроме этого, в отчете указаны значения целевой функции при выпуске данного типа продукции на нижнем пределе. Далее приводятся верхние пределы изменения xj и значения целевой функции при выпуске продукции, вошедшей в оптимальное решение на верхних пределах.
Рисунок 11
Вывод: для максимальной прибыли необходима выпускать:
Продукта 1 = 45;
Продукта 2 = 30;
Продукта 3 = 0, т. е. его выпускать не выгодно.
При этом максимальная прибыль будет составлять 1080, а количество использованных ресурсов равно:
Трудовых = 240;
Сырьевых = 345;
Финансовых = 300.
не доиспользованных ресурсов:
Трудовых = 0, т. е. используются полностью;
Сырьевых = 75;
Финансовых = 0, т. е. используются полностью.
Задание 2
Этапы моделирования.
Необходимо спроектировать емкость заданного объема V0 оптимальных размеров: r — радиуса основания и h — высоты, имеющую форму прямого цилиндра с кромкой по периметру верхнего основания заданной высоты h0.
Дано:
h0 = 0.15
r1 = 0.5
r2 = 1.5
V0 = 10
Найти: Smin
Решение:
Поставим в формулу значения Sбок = r (h + h0) и Sосн = рr2:
Т.к. V0 = const, то выразим h = h® через формулу объёма цилиндра:
Следовательно:
Подставим в уравнение S полученную формулу:
Возьмем производную ф-ции:
Минимум и максимум ф-ции S = S ® достигается в точках экстремума, т. е. когда S'® = 0. Возможны несколько вариантов решения:
1. Ур-е S'® = 0 имеет действительные решения, принадлежащие интервалу (r1; r2). Это означает, что ф-ция S = S® имеет точку экстремума в исследуемом интервале. Необходимо проверить является ли данная точка точкой минимума, противном в случае минимальным значением ф-ции будет являться одна из граничных точек.
2. Ур-е S'® = 0 имеет действительные решения, не принадлежащие интервалу (r1; r2). Это означает, что ф-ция на исследуемом интервале не имеет точек экстремума, а значит, расчет ведем находя минимальное значение, взяв 10 равноудалённых точек.
3. Ур-е S'® = 0 не имеет действительных решений. Данный вариант аналогичен предыдущему, т.к. в данном случае ф-ция не имеет экстремумов не только на заданном промежутке, но и на всей области её определения.
Кроме того, точками экстремума являются точки, в которых производная ф-ции не существует. Для ф-ции S'® такой точкой является r = 0, однако данная точка не удовлетворяет условиям задания, и ф-ция S = S ® также не существует в данной точке.
Для нахождения точки экстремума будем использовать метод Ньютона:
где S'' - производная от S'.
Найдем S'':
Для выбора модели решения необходимо проверить выполнения условия R1< r 2. Это можно сделать с помощью леммы Больцмана-Коши, если:
В моем случае условие не выполняется. Значит используем имитационную модель.
При
R1 = 0.6 мм S1 = 35,77 мм2
R2 = 0.7 мм S2 = 31,86 мм2
R3 = 0.8 мм S3 = 29,26 мм2
R4 = 0.9 мм S4 = 27,58 мм2
R5 = 1 мм S5 = 26,58 мм2
R6 = 1.1 мм S6 = 26,11 мм2
R7 = 1.2 мм S7 = 26,07 мм2
R8 = 1.3 мм S8 = 26,39 мм2
R9 = 1.4 мм S9 = 27,01 мм2
R10 = 1.5 мм S10 = 27,91 мм2
При r = 1,2 мм, достигается минимальная площадь S = 26,07 мм2
Составим блок-схему программы:
program Find_minimum;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
V0: integer = 10;
h0: real = 0.15;
var
r_min, r_max, r, e, delta, S_min, r_mn: real;
str: string;
//Процедура вычисления значения S = S®
function S (r: real): real;
begin
Result := 2*V0/® + 2*pi*r*h0 + 2*pi*sqr®;
end;
//Процедура вычисления значения S' = S'®
function S1(r: real): real;
begin
Result := -2*V0/(sqr®) + 2*pi*h0 + 4*pi*r;
end;
//Процедура вычисления значения S'' = S''®
function S2(r: real): real;
begin
Result := 4*V0/(sqr®*r) + 4*pi;
end;
begin
//Ввод начальных значений.
Writeln ('Vvedite r_min:');
Readln (str);
r_min := StrToFloat (str);
Writeln ('Vvedite r_max:');
Readln (str);
r_max := StrToFloat (str);
Writeln ('Vvedite e:');
Readln (str);
e := StrToFloat (str);
//Проверка выполнения условия леммы Больцмана-Коши.
If (S1(r_min)<0) and (S1(r_max)>0) or (S1(r_min)>0) and (S1(r_max)<0)
then begin
//Условие выполняется, расчет методом Ньютона.
//Вычисляем середину отрезка, как начальное значение для первой итерации.
r := (r_min + r_max)/2;
Repeat
delta := S1®/S2®;
r := r — delta
until Abs (delta) < e;
S_min := S®;
//Выводим значения.
WriteLn ('Rachet metodom Nutona.');
WriteLn ('Minimum pri r = ' + FloatToStr® + '; S_min = ' + FloatToStr (S_min));
end
else begin
//Условие не выполнено, рассчитываем по точкам.
//Присваиваем начальные значения S_min и r.
S_min := S (r_min);
r := r_min;
//Рассчитываем интервалы.
delta := (r_max — r_min)/10;
//Находим минимальное значение.
//Повторяем цикл от начала до конца отрезка с шагом delta.
Repeat
//Вычисляем точку.
r := r + delta;
//Если значение в точке меньше S_min, то сохраняем значения.
If S_min < S®
then begin
S_min := S®;
r_mn := r;
end;
until r >= r_max;
//Выводим значения.
WriteLn ('Rachet metodom tochek.');
WriteLn ('Minimum pri r = ' + FloatToStr (r_mn) + '; S_min = ' + FloatToStr (S_min));
end;
Readln;
end.