Page 25 - 6416
P. 25

За допомогою вбудованої функції quadprog у системі MatLab можна розв’язати задачу
               квадратичного програмування.
                   Синтаксис
               [x,fval]= quadprog(H,f,A,b,Aeq,beq,lb,ub),
               де f= a ;  H - матриця розміром  n n , яка повинна бути додатно означена, що гарантує
               існування  єдиного  розв’язку  задачі  квадратичного  програмування.  Інші  аргументи  мають
               такий же зміст, як і відповідні аргументи у вбудованій функції  linprog.
                                                                             *
                   Вбудована  функція  quadprog  повертає  вектор  x   і  значення  цільової  функції
                           при виконанні лінійних обмежень типу нерівностей і рівностей та за умови, що
                fval   R x *
               змінна  x  не виходить за задані межі.
                   У нашому випадку
                            14     4   1                        0               8   2
                                                        
                f   a       ,  D        ,  A   1 2 , b  , lb      . Отже,  H       .
                                                              9
                                                                      0
                          54       1  6                                         2 16 
                   Тепер можемо написати програму для розв’язання задачі квадратичного програмування.
               %===============================
               %Квадратичне програмування
               %===============================
               %Вхід
               %f-вектор коефіцієнтів цільової
               %функції при змінних xj
               %А-матриця коефіцієнтів при
               %змінних xj у лівих частинах
               %обмежень-нерівностей
               %b-вектор, компоненти якого
               %праві частини обмежень-нерівностей
               %Aq-матриця коефіцієнтів при
               %змінних xj у лівих частинах
               %обмежень-рівностей
               %bq-вектор, компоненти якого
               %праві частини обмежень-рівностей
               %Вихід
               %x-вектор оптимальних змінних xj
               %fval-оптимальне значення цільової функції
               %-----------------------------------------
               H=[8 -2;-2 12];
               f=[-14;-54];
               A=[1 2];
               b=9;
               lb=zeros(2,1);
               opts = optimset('Algorithm','active-set');
               [x,fval]=quadprog(H,f,A,b,[],[],lb,[],[],opts);

                   Обчислення за наведеною програмою дали такі результати:
               x =
                     23/13
                     47/13
               >> fval
               fval =

                  -1844/13
                   Отриманий  результат  повністю  співпадає  з  розв’язком  задачі  квадратичного
               програмування отриманий нами раніше.




                                                              22
   20   21   22   23   24   25