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

1 次查看(过去 30 天)
% 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
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
移动:Walter Roberson 2024-12-26
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