optimization problem to find variables

1 次查看(过去 30 天)
Akhil
Akhil 2024-1-30
回答: ag 2024-2-5
In the following code, i am trying to optimze the function f in order to find values of x,y and w. We are provided with values of a,b,reg1 and reg2.
In the code, i want to find values of x,y and w such that
value of f and g becomes equal. Is the following code is correct. I am only keeping some section of the entire code
function f = objective(vars, a, b, reg1, reg2)
x = vars(1:800);
y = vars(801:1600);
w = vars(1601:end);
f = 0;
g=0;
for i = 1:numel(a)
r1 = reg1(i);
r2 = reg2(i);
f = (((sqrt((x(r1)-a(i)) + (y(r1)-b(i))))./(sqrt((x(r2)-a(i)) + (y(r2)-b(i))))) );
g=w(r1)*w(r2);
f=g;

回答(1 个)

ag
ag 2024-2-5
Hi Akhil,
To find out the values x,y and w such that value of f and g becomes equal, you can break the loop once the desired condition is hit. This can be done by adding a "if" block inside the for loop as shown below:
for i = 1:numel(a)
r1 = reg1(i);
r2 = reg2(i);
f = (((sqrt((x(r1)-a(i)) + (y(r1)-b(i))))./(sqrt((x(r2)-a(i)) + (y(r2)-b(i))))) );
g=w(r1)*w(r2);
if f == g % if block, to check if f and g are equal
%storing the optimal values of x, y and w corresponding to "r1" and
%"r2"
xOptim1 = x(r1);
xOptim2 = x(r2);
yOptim1 = y(r1);
yOptim2 = y(r2);
wOptim1 = w(r1);
wOptim2 = w(r2);
break; %break out of the loop with the stored values.
end
end
Hope this helps!

类别

Help CenterFile Exchange 中查找有关 Solver Outputs and Iterative Display 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by