For each fmincon it overwrites the previous values, meaning at the end there is only 1 set of values when there should be 100. The code is running 100 times and displays all sets of values but not storing all sets. How do I resolve this?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Scott Sanders
le 2 Avr 2018
Commenté : Scott Sanders
le 3 Avr 2018
for X=1:1:10
for Y=1:1:10
ObjFcn = @myObjective;
x0 = [10 0.001 7];
LB = [0 0 0];
UB = [50 0.5 7.5];
ConsFcn = @(x)myConstraints(x,X,Y);
[x] = fmincon(ObjFcn,x0,[],[],[],[],LB,UB,ConsFcn);
disp(x)
disp(myObjective(x))
end
end
0 commentaires
Réponse acceptée
Alan Weiss
le 2 Avr 2018
Your code is inefficient in that you define many things inside the loop that should be assigned outside the loop. Using Walter's suggestion, try this:
ObjFcn = @myObjective;
x0 = [10 0.001 7];
LB = [0 0 0];
UB = [50 0.5 7.5];
x = zeros(10,10); % initialization
for X=1:10
for Y=1:10
ConsFcn = @(x)myConstraints(x,X,Y);
x(X,Y) = fmincon(ObjFcn,x0,[],[],[],[],LB,UB,ConsFcn);
disp(x(X,Y))
disp(myObjective(x(X,Y)))
end
end
5 commentaires
Walter Roberson
le 2 Avr 2018
ObjFcn = @myObjective;
x0 = [10 0.001 7];
LB = [0 0 0];
UB = [50 0.5 7.5];
x = zeros(10,10,3 ); % initialization
fvals = inf(10,10); % initialization
for X=1:10
for Y=1:10
ConsFcn = @(x)myConstraints(x,X,Y);
[x(X,Y,:), fvals(X,Y)] = fmincon(ObjFcn,x0,[],[],[],[],LB,UB,ConsFcn);
disp(x(X,Y))
disp(myObjective(x(X,Y)))
end
end
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Surrogate Optimization dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!