Matlab coding errors call when run..Please help to solve this problem

조회 수: 16 (최근 30일)
FAKHRULRAZI
FAKHRULRAZI 2023년 1월 9일
이동: Walter Roberson 2024년 12월 26일 21:42
% Define the initial point x0 and the size reduction parameter
Delta x0 = [1 1];
Delta = [2 2];
% Set the tolerance epsilon
epsilon = 0.001;
% Initialize the current best point x_bar to x0
x_bar = x0;
% Set the maximum number of iterations
max_iter = 1000;
% Initialize the iteration counter
iter = 0;
% Start the optimization loop
while iter < max_iter
% Check if the norm of Delta is greater than the tolerance
if norm(Delta) <= epsilon
% Return x_bar as the optimal solution
break;
end
% Create a hypercube of 20 points around x_bar by adding and subtracting Delta
x1 = x_bar - Delta;
x2 = x_bar + Delta;
hypercube = combvec(x1, x2)

답변 (2개)

Tejas
Tejas 2024년 12월 26일 10:04
Here is an example that shows, how the above mentioned optimization problem can be coded:
function f = objective_function(x)
f = sum(x.^2);
end
  • Inside the iteration loop, include the code snippet below to exit the loop once the optimal value is found.
if norm(Delta) <= epsilon
disp('Optimal solution found');
disp(x_bar);
break;
end
  • Create a hypercube according to the requirements.
x1 = x_bar - Delta;
x2 = x_bar + Delta;
hypercube = combvec(x1, x2)';
f_values = arrayfun(@(i) objective_function(hypercube(i, :)), 1:size(hypercube, 1));
[~, min_index] = min(f_values);
x_bar = hypercube(min_index, :);
  • Increment the iterator value.
Delta = Delta * 0.5;
iter = iter + 1;

Walter Roberson
Walter Roberson 2024년 12월 26일 21:42
이동: Walter Roberson 2024년 12월 26일 21:42
You are missing incrementing iter inside the while loop.
Your while loop is missing an end statement.
You are not changing Delta or epsilon in your while loop, so the if norm(Delta) <= epsilon will either always be true or always be false, so you might as well pull the test outside of the while loop.
You are not doing anything with hypercube so the end result for hypercube will be whatever it was assigned in the last iteration. In such a situation you might as well only do the last iteration.

카테고리

Help CenterFile Exchange에서 Nonlinear Optimization에 대해 자세히 알아보기

태그

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by