Генерация случайных начальных точек в n-измерении для алгоритма fmincon - равномерное распределение пространства - PullRequest
0 голосов
/ 16 мая 2018

Я использую fmincon в Matlab для минимизации гладкой, но крайне нелинейной целевой функции.Моя проблема в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...