Лабораторная работа №6. Задача об использовании ресурсов как задача линейного программирования
Цель работы:
Целью лабораторной работы является получение навыков самостоятельной алгоритмической и программной реализации на компьютерной технике решения в MatLab задачи об использовании ресурсов как задачи линейного программирования.
Требования к содержанию, оформлению и порядку выполнения
Номер варианта индивидуального задания определяется последней цифрой в зачетной книжке студента (цифра 0 соответствует варианту № 10) или порядковым номером компьютера в компьютерном классе, за которым работает студент.
Лабораторные работы заключаются в изучении и программной реализации методов, рассмотренных в теоретическом курсе дисциплины.
Перед работой непосредственно на компьютере студенты обязаны внимательно изучить соответствующий теоретический материал, разобрать примеры, представленные на лекциях.
Программирование методов, указанных в заданиях лабораторных работ, следует выполнять самостоятельно, используя команды языка программирования пакета Matlab.
После завершения создания m-файлов в пакете Matlab, реализующих указанные методы, следует выполнить вычисления на основании данных своего варианта. Обязательно следует выполнить проверку полученных на компьютере результатов вычислений.
Отчет оформляется в соответствии с приведенным образцом.
Отчет о выполнении задания лабораторной работы должен содержать следующие разделы:
1. Формулировка задания на программирование.
2. Краткое описание исследуемого метода - фрагмент лекционного материала.
3. Текст программы в виде m-файла - является основным результатом выполнения работы.
4. Исходные данные, номер варианта.
5. Результаты вычислений, включая промежуточные результаты - копии текстовых файлов или копии экранных форм, графики.
6. Результаты проверки полученных данных
Общая постановка задачи
В результате выполнения заданий лабораторной работы студенты должны уметь создавать программно-алгоритмическую поддержку для компьютерной реализации решения задачи об использовании ресурсов как задачи линейного программирования в MatLab.
Лабораторные занятия проводятся в компьютерных классах.
Теоретическая часть
Общая задача линейного программирования может быть сформулирована следующим образом.
Найти
такие значения действительных переменных
,
для которых целевая функция
принимает минимальное значение на множестве точек, координаты которых удовлетворяют системе ограничений
Как
известно, упорядоченная совокупность
значений n переменных
,
,
…
представляется точкой n-мерного
пространства
.
В дальнейшем эту точку будем обозначать
Х=(
,
,
…
).
В матричном виде задачу линейного программирования можно сформулировать так:
,
где
,
A – матрица
размера
,
,
В MatLab задача линейного программирования решается с помощью функции Linprog:
Синтаксис:
Различные варианты записи правой части вызова функции Linprog:
x = linprog(f,A,b,Aeq,beq)
x = linprog(f,A,b,Aeq,beq,lb,ub)
[x,fval] = linprog(...)
[x,fval,exitflag] = linprog(...)
[x,fval,exitflag,output] = linprog(...)
Различные варианты записи левой части вызова функции Linprog:
x = linprog(f,A,b) находит min f'*x при условии, что A*x <= b.
x = linprog(f,A,b,Aeq,beq) решает указанные выше задачу при условии дополнительного выполнения ограничений в виде равенств Aeq*x = beq. Если нет неравенств, то устанавливается A=[] и b=[].
x = linprog(f,A,b,Aeq,beq,lb,ub) определяет набор нижних и верхних границ для проектируемых переменных х, так что решение всегда находится в диапазоне lb <= x <= ub. Если нет неравенств, то устанавливается Aeq=[] и beq=[].
[x,fval] = linprog(...) возвращает значение целевой функции fun как решение от х: fval = f'*x.
[x,lambda,exitflag,output] = linprog(...) возвращает структурный выход с информацией об оптимизации
[x,fval,exitflag,output,lambda] = linprog(...) Возвращает структурную lambda, чьи поля включают в себя множители Лагранжа как решение от х.
