Я попытался обобщить это как можно лучше в заголовке.Я пишу решение проблем с начальными значениями в наиболее общем виде.Я начинаю с произвольного числа начальных значений в произвольных местах (внутри границы). Первая часть моей программы создает сетку / сетку (я не уверен, что это правильный нюанс), всего N точек, которая содержит всеначальные значения.Моя цель - оптимизировать сетку так, чтобы интервал был как можно более равномерным.Кажется, мой решатель работает наполовину прилично (ему нужно еще немного неясной отладки, которая здесь не актуальна).
Я начинаю с одного измерения.Я намерен обобщить алгоритм на произвольное количество измерений, как только получу его последовательную работу.Я пишу свой код на фортране, но не стесняйтесь отвечать псевдокодом или языком по вашему выбору.
Позвольте мне привести пример:
Скажите, что я работаю с закрытым интервалом [1,10]
xmin=1
xmax=10
Скажем, у меня есть 3 начальные точки: xmin, 5 и xmax
num_ivc=3
known(num_ivc)=[xmin,5,xmax] //my arrays start at 1. Assume "known" starts sorted
Я храню свои точки сетки / сетки в массиве, называемом скоординированным.Скажем, я хочу всего 10 баллов в моей сетке / сетке.
N=10
coord(10)
Помните, все это произвольно - за исключением имен переменных, конечно.Алгоритм должен установить координаты {1,2,3,4,5,6,7,8,9,10}
Теперь для менее тривиального примера:
num_ivc=3
known(num_ivc)=[xmin,5.5,xmax
or just
num_ivc=1
known(num_ivc)=[5.5]
СейчасНе могли бы вы иметь 5 равномерно распределенных точек на интервале [1, 5,5] и 5 равномерно распределенных точек на интервале (5,5, 10]? Но между 1 и 5,5 больше места, чем между 5,5 и 10.указывает на [1, 5.5], а затем на 4 (от 5,5 до 10). Ключ в том, чтобы минимизировать разницу в расстоянии.
Я работаю над этим 2 дня подряд и могу вас заверить, что этонамного сложнее, чем кажется. Я написал код, который
only works if N is large
only works if N is small
only works if it the known points are close together
only works if it the known points are far apart
only works if at least one of the known points is near a boundary
only works if none of the known points are near a boundary
Итак, как вы можете видеть, я закодировал гамму почти решений. Я не могу найти способ заставить его работать одинаково хорошово всех возможных сценариях (то есть, создать оптимальный интервал.)