![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Программное обеспечение САПР
В качестве примера программного обеспечения САПР рассмотрим решение задач линейного и нелинейного программирования средствами программы Optimization Toolbox, входящей в программный комплекс Matlab. Основной задачей линейного программирования является минимизация (или максимизация) линейной формы от нескольких аргументов Одной из наиболее известных задач линейного программирования является задача о пищевом рационе. Сущность задачи рассмотрим на примере. Имеется четыре вида продуктов питания
Требуется составить пищевой рацион, обеспечивающий наличие заданных элементов (белки, углеводы, жиры), и обладающий минимальной стоимостью. Пусть L = Суммарное содержание элементов в рационе определяется неравенствами (ограничениями):
C учётом неотрицательности переменных x добавляются 4 неравенства (ограничения слева)
Задача линейного программирования: требуется найти значения переменных x, удовлетворяющие системе перечисленных ограничений, при которых функция цели L минимальна. Стандартная задача, решаемая программой Optimization Toolbox, состоит в нахождении минимума целевой функции L при ограничениях типа Пример 1. Пусть задана целевая функция L =
3
4 5 После приведения задачи к стандартному (для программы Optimization Toolbox) виду путём умножения функции цели и четвёртого ограничения на минус единицу, получим L =
3
4 -5 Для решения задачи используем функцию [x, L] = linprog(c, A, b, [A1, b1, lx, rx]), где c – функция цели, представленная вектором коэффициентов; A, b - система ограничений, заданная в матричном виде A*x A1, b1 – параметры, которые используются, если система ограничений задана в виде равенств A*x lx, rx – параметры, обусловленные наличием ограничений слева справа x – вектор решения, содержащий значения переменных, удовлетворяющие ограничениям и приводящие функцию цели к минимуму; L – минимум функции цели; Для рассматриваемого примера в рабочем окне программы Matlab выполняем действия, приведенные ниже (поскольку в данной задаче ограничения-равенства и ограничения справа отсутствуют, их место указано пустыми массивами []).
Пример 2. Фирмы “Лидер” и “Пионер” (далее называем их фирма 1 и фирма 2) производят стулья различных типов из общего запаса деталей. Удельная прибыль от продажи единицы продукции составляет 56$ для фирмы 1 и 40$ для фирмы 2. Для сборки стула нужны детали пяти типов: длинные винты, короткие винты, прочные сиденья, облегчённые сиденья, ножки. Запасы длинных и коротких винтов на неделю составляют 1280 и 1600 соответственно. Для производства 1 стула фирмой 1 требуется 8 длинных и 4 коротких винта, 1 прочное сиденье, 4 ножки; фирмой 2 - 4 длинных и 12 коротких винта, 1 облегчённое сиденье, 4 ножки. Запас прочных сидений на неделю составляет 140 штук, облегчённых сидений – 120 штук. Для каждого стула требуется 4 ножки. Общий запас ножек на неделю – 760 штук Требуется определить, сколько стульев в неделю должна выпускать каждая фирма для того, чтобы их суммарная прибыль была максимальной при условии, что общий объём производства обеих фирм должен быть не менее 100 единиц в неделю. Представим исходные данные (расход каждого вида комплектующих на единицу продукции и запас каждого вида комплектующих на складе) в виде трёх таблиц: Винты
Сиденья
Ножки
Обозначив через математическое описание задачи 56 8 4
4
После приведения математической модели к стандартному (для программы) виду, получаем систему -56 8 4 - 4
В рабочем окне программы Matlab выполняем действия, приведенные ниже
фирма 1 должна производить 130 стульев в неделю; фирма 2 – 60 стульев в неделю. Максимальная прибыль 9680$ в неделю. В ответе для x получились целые числа, но дробные числа в ответе тоже были бы приемлемы, поскольку ответ содержит математическое ожидание (среднее арифметическое) недельной производительности обеих фирм.
|