Loop around a toolbox
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Andrew
el 30 de Nov. de 2023
Comentada: Walter Roberson
el 30 de Nov. de 2023
Dear community,
I have a question concerning the optimization toolbox.
I have used the optimization toolbox to solve a problem. And that is working fine so far.
Now, I would like to see the solutions for different input variables (let's say for values from 40 to 800) using a loop and store the solutions in a matrix.
The problem is, if I just wrap the editor in a loop (as I would do with usual code), I get an error.
I think MATLAB does not recognize that the "for N = 40:800" at the beginning of the editor and the "end" at the editor's end belong together.
Does somebody know a solution to this problem?
I really appreciate any help you can provide.
3 comentarios
Respuesta aceptada
Matt J
el 30 de Nov. de 2023
This runs:
for N = 40:42 %<---shortened
Daten=rand(N);%<-----added
v = [1];
m = zeros(1,N);
for n = 1:N
m(n)=n;
end
nvar = 5;
LB = [5 0 -5 -10 -20];
UB = [40 3 5 20 20];
q = zeros(1,N);
% Pass fixed parameters to objfun
objfun3 = @(optimInput)objectiveFcn(optimInput,Daten,m,N,v);
% Set nondefault solver options
options3 = optimoptions("ga","PopulationSize",300,"MaxGenerations",400);
% Solve
[solution,objectiveValue] = ga(objfun3,nvar,[],[],[],[],LB,UB,[],[],options3);
% Clear variables
clearvars objfun3 options3
end
function f = objectiveFcn(optimInput, Daten, m, N, v)
a = optimInput(1);
b = optimInput(2);
c = optimInput(3);
d = optimInput(4);
e = optimInput(5);
for n = 1:N
q(n) = (Daten(v,n)-(a*sin(b*m(n)+c) + (d+e*m(n))))^2;
end
f = sum(q);
end
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Nonlinear Optimization en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!