- obj.methodName(arg)
- methodName(obj,arg)
The "run" command does not work in GARDER.
3 views (last 30 days)
Show older comments
Zbigniew Garncarek
on 17 Feb 2024
Commented: Zbigniew Garncarek
on 20 Feb 2024
A script using Multi Start to search for a global minimum works in MATLAB, but an error appears in GARDER:
Error: You may not use the command(s) run in your code
Why does this happen, and how can you prevent it?
kol101=@(x)x.^2+2*sin(x.^2)+exp(-x);
opts = optimoptions(@fmincon,'Algorithm','sqp');
problem = createOptimProblem('fmincon','objective',...
kol101,'x0',3,'lb',1.2,'ub',4.8,'options',opts);
ms = MultiStart;
[xmin,fmin,flaga] = run(ms,problem,20)
fplot(kol101,[1.2,4.8])
hold on
plot(xmin,fmin,'rp')
0 Comments
Accepted Answer
Cris LaPierre
on 17 Feb 2024
Edited: Cris LaPierre
on 17 Feb 2024
I assume you are refering to MATLAB Grader. Certain commands and functions are not allowed when running code in MATLAB Grader, including run. However, the aim was likley to prevent use of the run function, which would allow users to circumvent restrictions an instructor places on solving a problem.
Ok, that's the why. In your case, you are not using the (very overlaoded) run function. Instead, you are calling an object function of MultiStart. That provides the workaround you need to use MultiStart in Grader. There are two ways to invoke a method (a.k.a. object function), which you can read about here.
Use the first syntax with dot notation, and the code will run in Grader
kol101=@(x)x.^2+2*sin(x.^2)+exp(-x);
opts = optimoptions(@fmincon,'Algorithm','sqp');
problem = createOptimProblem('fmincon','objective',...
kol101,'x0',3,'lb',1.2,'ub',4.8,'options',opts);
ms = MultiStart;
[xmin,fmin,flaga] = ms.run(problem,20)
fplot(kol101,[1.2,4.8])
hold on
plot(xmin,fmin,'rp')
More Answers (0)
See Also
Categories
Find more on Global or Multiple Starting Point Search in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!