Известно, что для выпуклого квадратичного программирования с рамочными ограничениями, если существует локальный минимум, то это глобальный минимум.Однако, когда я проверяю это в Matlab с помощью quadprog (), он не дает глобального минимума.Как я знаю это: Когда я использую свой собственный алгоритм для той же задачи, он дает другой и лучший результат.Как это понять?
>> P
P =
6.2468 0.9349 -3.4358 -1.5025 0.8950
0.9349 5.8463 1.8075 -2.6750 -1.9500
-3.4358 1.8075 3.9450 0.1500 -1.7000
-1.5025 -2.6750 0.1500 2.5000 1.0000
0.8950 -1.9500 -1.7000 1.0000 2.0000
>> f
f =
76.9601
11.5177
-42.3284
-18.5108
11.0264
>> aux = quadprog(P,f,[],[],[],[],-5*ones(5,1), 5*ones(5,1))
Minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the optimality tolerance,
and constraints are satisfied to within the default value of the constraint tolerance.
<stopping criteria details>
aux =
-5.0000
-2.4391
5.0000
2.5638
-2.6857
>> 0.5*aux'*P*aux+aux'*f
ans =
-413.0378
>> aux = mpc_op(P,-f,-5,5)
aux =
-12.3202
0.0004
-0.0007
0.0005
-0.0004
>> 0.5*aux'*P*aux+aux'*f
ans =
-474.0713
Спасибо