Автор: Пользователь скрыл имя, 23 Октября 2011 в 11:32, лабораторная работа
Цель работы: решить задачу линейного программирования
Министерство образования и науки Российской Федерации
федеральное государственное автономное образовательное
учреждение 
высшего профессионального 
«Уральский федеральный университет имени
первого Президента России Б.Н. Ельцина»
Кафедра 
вычислительной техники 
ОТЧЕТ
о лабораторной работе №3
ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ
Вариант 
3 
 
 
Преподаватель       Поротников 
А. В. 
Студенты Зубкова С.В.
Гр Фт-48062                   
 
 
 
 
 
 
Екатеринбург 2011
Цель работы: решить задачу линейного программирования
Работа 3а
1 Найти минимум функции sin(.r) в интервале (0, 2л:)
Минимум имеет место для
x = fminbnd(@sin,0,2*pi) 
x = 4.7124
Значение функции в точке минимума будет
y = sin(x) 
y =  
-1.0000 
Для того, что бы найти минимум функции на интервале (0, 5), сперва запишем М-файл
function f = myfun(x) 
f = (x-3).^2 - 1;
Далее вызовем программу оптимизации.
x = fminbnd(@myfun,0,5) 
что дает решение 
x = 
3 
Значение в точке минимума будет
y = f(x) 
y = 
-1 
2 Найти значение х, которые минимизируют , начиная с точки x = [10; 10; 10] и с учетом ограничений
Прежде всего, запишем М-файл, который возвращает скалярное значение f как функции от х.
function f = myfun(x) 
f = -x(1) * x(2) * x(3);
Далее перепишем ограничения в виде меньше или равно константе.
Поскольку оба ограничения являются линейными, то представим их как матричные неравенства , где
......
Далее зададим начальную точку и запустим программу оптимизации.
x0 = [10; 10; 10]; % начальное 
предположение о решении 
[x,fval] = fmincon(@myfun,x0,A,b)
После 66 расчетов функции решение будет
x = 
     24.0000 
     12.0000 
     12.0000
где значение функции будет
fval = 
     -3.4560e+03
и оценка ограничений в виде линейных неравенств <= 0 дает
A*x-b=  
     -72 
     0
Работа 3b
Рабочее задание:
; 
, 
, 
, 
 
 
 
Решение задачи в Matlab
Для решения этого задания использовали команду fmincon. Она обеспечивает поиск минимума нелинейной задачи с ограничениями, причем необязательно линейными, как в нашем случае.
c=[-x(1)*x(2)+1; x(1)^2+x(2)^2-9];
ceq=[];
     f 
= 7*(x(1)-6).^2 + 3*(x(2)-4).^2 
 
Начальная точка:
x0=[10; 10];
Линейные ограничения пустые множества:
A= [];
b= [];
Линейных неравенств нет, поэтому их задали в форме пустых множеств:
Aeq= [];
beq= [];
Верхняя и нижняя границы берутся из неравенств:
lb= [0 0];
ub= [10 10];
@mycon
ans =
@mycon
@myfun
ans =
    @myfun 
 x = fmincon(@myfun,x0,A,b,Aeq,beq,
Warning: Large-scale (trust region) method does not currently solve this type of problem,
switching to medium-scale (line search).
> In C:\MATLAB6p5\toolbox\optim\
f =
220
f =
220.0000
f =
220.0000
f =
351.6699
f =
351.6699
f =
351.6699
f =
82.3276
f =
82.3276
f =
82.3276
f =
96.5425
f =
96.5425
f =
96.5425
f =
97.2734
f =
97.2734
f =
97.2734
f =
97.1397
f =
97.1397
f =
97.1397
f =
97.3093
f =
97.3093
f =
97.3093
f =
97.3095
f =
97.3094
f =
97.3094
f =
97.3095
f =
97.3722
f =
97.3175
Optimization terminated successfully:
Search direction less than 2*options.TolX and
maximum constraint violation is less than options.TolCon
Active Constraints:
6
x =
2.7955
1.0885
Полученные ответы 
равны ответам, приведенным в задании.