Optimization of a script
1 次查看(过去 30 天)
显示 更早的评论
Hi,
I'm working on a script like this:
a=[ 1 1 0 1 1 1 1 0 1]
b=2
c=3.2
v=0
for i=1: 9
f=b*2^(i-1)
if a(i)==0
g=f*c-f
v=v+g
end
end
I would like to maximize the value of v using b and c as variables.
How can i do that?
TY
2 个评论
采纳的回答
Bruno Luong
2023-8-24
The v you compute is simply
132*b*(c-1)
You want to optimiza it? Take b=Inf and c=Inf
0 个评论
更多回答(1 个)
Kevin Holly
2023-8-24
编辑:Kevin Holly
2023-8-24
a = [1 1 0 1 1 1 1 0 1];
b0 = 2; % Initial guess for b
c0 = 3.2; % Initial guess for c
% Define the objective function to maximize
objective = @(x) -calculateV(a, x(1), x(2));
% Set the lower and upper bounds for the variables
lb = [0, 0]; % Lower bounds for b and c
ub = [Inf, Inf]; % Upper bounds for b and c
% Perform constrained optimization to maximize v
[x, fval] = fmincon(objective, [b0, c0], [], [], [], [], lb, ub);
% Retrieve the optimized values
b_optimized = x(1);
c_optimized = x(2);
v_maximized = -fval;
% Display the optimized values and the corresponding v
disp("Optimized Values:")
disp("b = " + b_optimized)
disp("c = " + c_optimized)
disp("Maximized v = " + v_maximized)
% Function to calculate v for given a, b, and c
function v = calculateV(a, b, c)
v = 0;
for i = 1:numel(a)
f = b * 2^(i-1);
if a(i) == 0
g = f * c - f;
v = v + g;
end
end
end
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!