- •Кафедра телекоммуникационных систем
- •Рекомендуемая литература:
- •Введение
- •1. Общая постановка задачи поиска оптимума функции нескольких
- •оптимизационных задач
- •2. Решение оптимизационных задач методами линейного программирования
- •Пример №1 (постановка задачи)
- •Пример №1 (решение)
- •Сетевой пример:
- •Пример:
- •Текст программы в окне
- •Результаты расчетов в окне команд "Comand Wіndow"
- •Результат решения
- •3. Решение задач булевого
- •Пример №2
- •4. Решение задач
- •Пример №3
- •5. Решение задач нелинейного программирования
- •Выводы
Текст программы в окне
редактирования М-fіle
Edіtor
Результаты расчетов в окне команд "Comand Wіndow"
Результат решения
задачи
2
|
x12 |
x25 |
5 |
1 |
|
x23 |
|
x13 |
|
x45 |
|
|
|
||
|
|
|
x34
3 |
4 |
x1,2x1,3
x2,3
x
x2,5
x3,4x4,5
|
|
1 |
|
|
|
0 |
|
|
|||
|
|
|
|
|
0 |
||
|
|||
|
1 |
||
|
|||
|
|
|
|
|
0 |
||
|
|||
|
0 |
||
|
|||
|
|
|
|
|
|
|
|
|
|
3. Решение задач булевого
программирования (MatLab v7)
Решение задачи булевого программирования вида
при условии
где f, b и beq являются векторами, A и Aeq - матрицы, а x есть булевый вектор решения, то есть его компоненты должны принимать значения 0 или 1.
x = bintprog(f, A, b, Aeq, beq, x0)
Пример №2
Необходимо минимизировать функцию при наличии ограничений
где x1, x2, x3 и x4 являются бинарными целыми.
Выполним следующие команды: f = [-9; -5; -6; -4];
A = [6 3 5 2; 0 0 1 1; -1 0 1 0; 0 -1 0 1];
b = [9; 1; 0; 0]; x = bintprog(f,A,b) x = 1 1 0 0
4. Решение задач
квадратичного
программирования
x = quadprog(H,f,A,b) возвращает вектор х, который минимизирует 1/2*x'*H*x + f'*x при условии A*x <= b.
x = quadprog(H,f,A,b,Aeq,beq) решает указанную выше задачу с дополнительным выполнением ограничений типа равенства Aeq*x = beq.
x = quadprog(H,f,A,b,Aeq,beq,lb,ub) определяет набор нижних и верхних границ для проектируемой переменной х, так что бы решение находилось в диапазоне lb <= x <= ub.
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) устанавливает стартовую точку как x0.
Пример №3
Найти значения х, которые минимизируют
при условии, что
Сперва отметим, что данная задача в матичной записи будет сформулирована как
где Введем эти коэффициенты матриц
Далее запустим программу квадратичного программирования.
Что генерирует решение
x =0.6667 1.3333 fval = -8.2222
5. Решение задач нелинейного
программирования
[x,fval]=fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon
);
1. Начинает с точки x0 и находит минимум от х для функции представленной как myfun при условии выполнения линейных неравенств A*x <= b, а так же Aeq*x = beq в диапазоне lb <= x <= ub.
2. Подчиняет минимизацию определенных в mycon fmincon нелинейных неравенств c(x) или равенств ceq(x) такому оптимуму, что c(x) <= 0 и ceq(x) = 0. 3. Устанавливается lb=[] и/илиr ub=[] в случае отсутствия ограничений. Устанавливается Aeq=[] and beq=[] в случае отсутствия равенств. Устанавливается A=[] и b=[] в случае отсутствия неравенств. x0 может быть скаляром, вектором или матрицей.
Выводы
Список функций Optimization Toolbox:
Нелинейная оптимизация функций
fminbnd – поиск функции одной переменной для фиксированного интервала
fmincon - поиск минимума нелинейной задачи с ограничениями
fminsearch или fminunc – поиск минимума функции нескольких переменных без ограничений
Минимизация матричных задач linprog – решение задачи линейного программирования
bintprog – решение задачи булевого целочисленного программирования
quadprog – решение квадратичной задачи математического программирования
