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 (최근 30일)
이전 댓글 표시
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
채택된 답변
Alan Weiss
2018년 4월 2일
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
Walter Roberson
2018년 4월 2일
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
추가 답변 (1개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Surrogate Optimization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!