How can I dynamically add optimization variables for me problem in a loop?
1 次查看(过去 30 天)
显示 更早的评论
Hey :)
I have defined an optimization problem as follows:
prob = optimproblem;
Now I wanna add optimization variables in a loop, such as
for i = 1:10
x = optimvar('Test', 'LowerBound', 0);
end
where within the first iteration, the name of the variable should be x_1, in the second iteration it should be x_2 and so on.
I tried something like this, but it didn`t work:
['x_' int2str(i)] = optimvar(ans, 'LowerBound',0);
My next approach was defining a struct for the variables like the following:
for i = 1:10
ans = mat2str(this_is_a_test(i,:));
ans = regexprep(ans, '\[(.*)\]', '$1');
ans = strrep(ans,' ','');
ans = strcat('Test_', ans);
var = ans;
variables(.var) = optimvar(ans, 'LowerBound',0);
end
After obtaining the struct with my optimization variables, I cannot "transfer" it into prob.Variables
I would be extremely glad if someone could help me with this :)
If you need more information, don't hesitate to ask.
Best regards,
Mike
8 个评论
Stephen23
2023-3-22
"It's a n*m double. It's content is only consisting of ones and twos."
this_is_a_test = randi(1:2,10,3)
var_names = [];
for i = 1:10
ans = mat2str(this_is_a_test(i,:));
ans = regexprep(ans, '\[(.*)\]', '$1');
ans = strrep(ans,' ','');
ans = strcat('Test_', ans);
var_names = [var_names; ans];
end
V0 = string(var_names)
Here is a simpler approach to generate those names:
V1 = "Test_"+join(string(this_is_a_test),"")
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!