MATLAB Coder Error - optimset Unrecognized parameter name: 'GradObj'

조회 수: 14 (최근 30일)
Hi,
I'm trying to generate C code of a function using MATLAB Coder but I am getting the following error when generating MEX:
Unrecognized parameter name: 'GradObj'
Full instruction is:
optionsNLP = optimset('GradObj', 'off', 'GradConstr', 'off', ...
'DerivativeCheck', 'off', 'Display', 'iter', 'TolX', 1e-9, ...
'TolFun', 1e-9, 'TolCon', 1e-9, 'MaxFunEval', 300, 'DiffMinChange', 1e-5);
It is working when I run the MATLAB script directly.
I am thinking that maybe it can not be generated because a Toolbox is required to use the GradObj parameter?
Does anyone knows a workaround if any?
Thanks.
Vadim

채택된 답변

Steve Grikschat
Steve Grikschat 2021년 6월 9일
편집: Steve Grikschat 2021년 6월 10일
Hi Vadim,
For generating C code for fmincon (or lsqnonlin, etc.) via MATLAB Coder, we require that you use the optimoptions function to set options. See the requirements in this documentation page.
Also, an important note is that only the SQP algorithm of fmincon is supported for C code generation.
The equivalent code for your example is as follows
optionsNLP = optimoptions('fmincon','Algorithm','sqp','SpecifyObjectiveGradient', false, ...
'CheckGradients', false, 'Display', 'iter', 'StepTolerance', 1e-9, 'FunctionTolerance', 1e-9, ...
'ConstraintTolerance', 1e-9, 'MaxFunctionEvaluations', 300, 'DiffMinChange', 1e-5);
  댓글 수: 3
Vadim Bertrand
Vadim Bertrand 2021년 6월 10일
I just noticed a small typo in the code sample you provided:
optionsNLP = optimoptions('fmiuncon',...)
Should be:
optionsNLP = optimoptions('fmincon'
Steve Grikschat
Steve Grikschat 2021년 6월 10일
Good catch! Thanks for pointing that out.
I guess I should have tried the new "Run" button on my answer. :)

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by