Error using optimoptions (line 124)

I am getting the error message mentioned in the title while executing following line
opts = optimoptions('fmincon','Algorithm','interior-point');
I tried setting the default path through
restoredefaultpath
savepath
rehash toolboxcache
Still getting the same error. Can someone help?
Thanks

8 Comments

Error is causes inside the exception handler. Can you post the complete error message? Also, run the following line in command window
dbstop if caught error
and run your code again. The code will automatically halt when the error occurs and open a file. Please tell name of that file.
C:\Program Files\MATLAB\R2020a\toolbox\shared\optimlib\+optim\+options\Fmincon.m
This is the file name where the code halts.
Also the complete error message is as follows-
Error using optimoptions (line 124)
Empty keys are not allowed in this container.
Error in Main (line 47)
opts = optimoptions('fmincon','Algorithm','interior-point');
Do you have one set of options, and then you're calling another ones?
Is this the complete error message?
I have only one set of options. Infact since 'interior-point' is the default option for algorithm, I also tried the same command without any options as
opts = optimoptions('fmincon');
But still I get the same error.
Try this example, if you can't open it, here's link
openExample('optim/NondefaultOptionsfminconExample')
Does it report error, if it does, then there might be something wrong with your MATLAB files.
When I tried this example, I got following error-
Error using exampleUtils.componentExamplesDir (line 13)
Invalid argument "optim".
Error in findExample (line 18)
componentExamplesDir = exampleUtils.componentExamplesDir(component);
Error in openExample (line 30)
metadata = findExample(exampleId);
Does that mean I need to install MATLAB again on my computer?
Get the code from link and try it.
I tried following code as you suggested
options = optimoptions('fmincon','Display','iter','Algorithm','sqp');
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = @unitdisk;
x0 = [0,0];
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
with the unitdisk defined in other file with same name as
function [c,ceq] = unitdisk(x)
c = x(1)^2 + x(2)^2 - 1;
ceq = [];
Getting the following error
Error using optimoptions (line 124)
Empty keys are not allowed in this container.
Error in problem (line 1)
options = optimoptions('fmincon','Display','iter','Algorithm','sqp');
Can you figure out what must be going wrong?
Thanks for spending your time on my problem

Sign in to comment.

 Accepted Answer

VBBV
VBBV on 5 Nov 2020
Edited: VBBV on 5 Nov 2020
%if true
% code
% end
opts = optimoptions(@fmincon,'Algorithm','interior-point');
Try function handle for passing solver name

11 Comments

Tried your suggestion, still getting the same error
Error using optimoptions (line 124)
Empty keys are not allowed in this container.
Error in Main (line 47)
opts = optimoptions(@fmincon,'Algorithm','interior-point');
Following are the two lines of code where I am trying to use this
opts = optimoptions(@fmincon,'Algorithm','interior-point');
[C, SSE] = fmincon(@subfile,[1, 1, 1, 1, 1],[],[],[],[],[0, 0, 0, 0, 0.8],[10 10 10 10 0.8],[],opts,x_b,x_m, NCLD_EXP); % for CLD2
Can you see any problem?
Thanks
VBBV
VBBV on 5 Nov 2020
Edited: VBBV on 5 Nov 2020
Many input arguments for fmincon
Specify lower and upper bound values, they cant be empty [] []
Use opts as last argument of fmincon function
What is NCLD_EXP ? Did you define the function @subfile before
  1. I have defined function @subfile before
  2. I tried putting opts at the end as last argument with no success
  3. In my arguments the four [ ] are given in order to indicate that there is no linear or nonlinear constraints
  4. the lower bounds are [0 0 0 0 0.8] and upper bounds are [10 10 10 10 0.8]
  5. I tried executing the code by removing x_b,x_m, NCLD_EXP (which were the parameters in @subfile) as
[C, SSE] = fmincon(@subfile,[1, 1, 1, 1, 1],[],[],[],[],[0, 0, 0, 0, 0.8],[10 10 10 10 0.8],opts);
again without any success
Any suggestions? Thanks
[C, SSE] = fmincon(@subfile,[1, 1, 1, 1, 1],[],[],[],[],[0, 0, 0, 0, 0.8],[10 10 10 10 0.8],[], opts);
% You're missing one empty argument for nonlcon ^^
Please, it's best if you define these input arguments before this line of code, it will be much more readable.
VBBV
VBBV on 5 Nov 2020
Edited: VBBV on 5 Nov 2020
@Vishaka Can you show the error message?
sorry, thats right. I inserted the argument for 'nonlcon' as you have suggested. Still getting the same error!
Is this something related to 'Path'?
Thanks
This is the error message
Error using optimoptions (line 124)
Empty keys are not allowed in this container.
Error in Main (line 47)
opts = optimoptions(@fmincon,'Algorithm','interior-point');
Which version of MATLAB are you using?
I referred to the link you have sent.
Looks like my problem would be solved. Thanks a lot

Sign in to comment.

More Answers (1)

Bruno Luong
Bruno Luong on 5 Nov 2020
Edited: Ameer Hamza on 5 Nov 2020
Make sure you have optimization toolbox installed
>> ver
-----------------------------------------------------------------------------------------------------
MATLAB Version: 9.9.0.1495850 (R2020b) Update 1
MATLAB License Number: xxxxxx
Operating System: Microsoft Windows 10 Home Version 10.0 (Build 19042)
Java Version: Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
-----------------------------------------------------------------------------------------------------
MATLAB Version 9.9 (R2020b)
MATLAB Compiler Version 8.1 (R2020b)
Optimization Toolbox Version 9.0 (R2020b)
Signal Processing Toolbox Version 8.5 (R2020b)

7 Comments

It's a good idea to remove your license number I believe.
I edited away the License number.
thanks to both of you
Thanks, I am reinstalling with global optimization toolbox
Bruno Luong
Bruno Luong on 5 Nov 2020
Edited: Bruno Luong on 5 Nov 2020
you only need the optimization toolbox where FMINCON belongs, not the global optimization tollbox.
TMW makes this ridiculuous split. Well not totally ridiculuos since they can make more moneys with the cut.
Thanks a lot. My problem is solved by reinstalling global optimization toolbox. I had already installed the optimization toolbox previously.
Somehow global optimization solved the problem.
Odd I don't own global optimization toolbox and it works for me.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!