Static optimization using fmincon and quadprog

Can anyone tell me which one os the optimization methods is faster between "fmincon" and "quadprog"? And why is it faster or slower?
Thanks in advance,
Raj Patel

 채택된 답변

Ameer Hamza
Ameer Hamza 2020년 11월 17일
편집: Ameer Hamza 2020년 11월 17일

0 개 추천

quadprog() is used for a very specific type of optimization problem and, therefore, can be optimized way more than fmincon(). However, note that there is no direct comparison since fmincon() can solve problems which quadprog() cannot. But for a similar problem, quadprog() will be faster. For example
H = [1 -1; -1 2];
f = [-2; -6];
A = [1 1; -1 2; 2 1];
b = [2; 2; 3];
opts1 = optimoptions('quadprog', 'Display', 'off');
opts2 = optimoptions('fmincon', 'Display', 'off');
t1 = timeit(@() quadprog(H, f, A, b, [], [], [], [], [], opts1))
t2 = timeit (@() fmincon(@(x) 1/2*x.'*H*x+f.'*x, rand(2,1), A, b, [], [], [], [], [], opts2))
Result
>> t1
t1 =
8.3352e-04
>> t2
t2 =
0.0081
>> t2/t1
ans =
9.6923
quadprog() is about 10 times faster. You can also check that both fmincon() and quadprog() give same solutions.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Surrogate Optimization에 대해 자세히 알아보기

태그

질문:

2020년 11월 17일

댓글:

2020년 11월 17일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by