The "run" command does not work in GARDER.

조회 수: 6 (최근 30일)
Zbigniew Garncarek
Zbigniew Garncarek 2024년 2월 17일
댓글: Zbigniew Garncarek 2024년 2월 20일
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')

채택된 답변

Cris LaPierre
Cris LaPierre 2024년 2월 17일
편집: Cris LaPierre 2024년 2월 17일
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.
  • obj.methodName(arg)
  • methodName(obj,arg)
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)
MultiStart completed the runs from all start points. All 20 local solver runs converged with a positive local solver exitflag.
xmin = 2.0510
fmin = 2.5856
flaga = 1
fplot(kol101,[1.2,4.8])
hold on
plot(xmin,fmin,'rp')
  댓글 수: 1
Zbigniew Garncarek
Zbigniew Garncarek 2024년 2월 20일
Thank you very much for the explanation.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Global or Multiple Starting Point Search에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by