我在Matlab中使用fmincon来最小化平滑而高度非线性的目标函数。我的问题是n维,在某些情况下n> 250。 我发现使用不同的起点可以显着改善解决方案,正如具有多个局部最小值的目标函数所预期的那样。 我已经使用haltonset在n维超立方体中生成准随机起点,然后我将其重新缩放到由我的问题的下限和上限定义的n维超空间中。
但我不确定我是否以足够统一的方式覆盖了可能解决方案的空间(由下限和上限定义)。它可能来自两个问题:1)准随机点的初始生成不够“密集”,2)由于边界高度不同,重新缩放可能在超空间中产生漏洞
有没有办法可以确保我的起点充分覆盖我的空间(也许可以指定我的起点在n维中的最大距离)。
感谢您的帮助
请参阅以下我正在使用的代码:
objective_list = containers.Map('KeyType','int32','ValueType','any');
initial_pt_list = containers.Map('KeyType','int32','ValueType','any');
optimal_pt_list = containers.Map('KeyType','int32','ValueType','any');
net_size=100;
[variable_size, ~]=size(initial_pt);
p=haltonset(variable_size,'Skip',1e3,'Leap',1e2);
p = scramble(p,'RR2');
X0 = net(p,net_size);
for net0 = 1:1:net_size
temp_unit_vector= X0(net0,:);
temp_initial_pt = lower_b + temp_unit_vector'.*(upper_b - lower_b);
initial_pt_list(net0)=temp_initial_pt;
end