Алгоритм объединения диапазонов отрезка - помогите создать - страница 8

 

@Dmitry Fedoseev, продолжаю тестировать скрипт, есть такие варианты решения:

2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 0 - -100000000-15000 45000-65000 97878-115454 135000-185000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 1 - -100000000-18923 45000-65000 97878-115454 135000-185000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 2 - -100000000-14496 45000-65000 97878-115454 135000-185000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 3 - -100000000-12256 14400-1500000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 4 - -100000000-11130 14400-1500000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 5 - 0-10000 10000-100000000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 6 - 900-12800 14400-1500000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 7 - 1439-15000 45000-65000 97878-115454 135000-185000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 8 - 5000-10000 10000-100000000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 9 - 6400-12800 14400-1500000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 10 - 8900-14400 14400-1500000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 11 - 9500-10000 10000-100000000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 12 - 9500-10000 10000-100000000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 13 - 8900-14400 14400-1500000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 14 - -100000000-18923 45000-65000 97878-115454 135000-185000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 15 - -100000000-18923 45151-62727 97878-115454 135000-185000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 16 - -100000000-18923 45000-65000 97878-115454 135000-185000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 17 - -100000000-18923 45000-65000 97878-115454 135000-185000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 18 - -100000000-18923 45000-65000 97878-115454 145000-185000 
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       Вариант 19 - -100000000-18923 45000-65000 97878-115454 146470-180588 

Но почему нет к примеру такого:

900-12800 45000-65000 97878-115454 135000-185000

Вот все значения массива:

2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)                   [,0]       [,1]
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [ 0,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [ 1,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [ 2,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [ 3,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [ 4,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [ 5,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [ 6,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [ 7,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [ 8,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [ 9,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [10,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [11,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [12,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [13,] -100000000      18923
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [14,] -100000000      14496
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [15,] -100000000      12256
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [16,] -100000000      11130
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [17,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [18,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [19,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [20,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [21,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [22,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [23,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [24,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [25,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [26,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [27,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [28,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [29,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [30,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [31,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [32,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [33,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [34,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [35,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [36,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [37,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [38,] -100000000      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [39,]          0      10000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [40,]          0      10000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [41,]          0      10000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [42,]        900      12800
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [43,]       1439      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [44,]       1439      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [45,]       1439      15000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [46,]       5000      10000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [47,]       6400      12800
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [48,]       8900      14400
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [49,]       8900      14400
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [50,]       8900      14400
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [51,]       9500      10000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [52,]       9500      10000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [53,]       9500      10000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [54,]       9500      10000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [55,]       9500      10000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [56,]       9500      10000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [57,]      10000  100000000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [58,]      10000  100000000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [59,]      10000  100000000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [60,]      10000  100000000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [61,]      10000  100000000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [62,]      10000  100000000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [63,]      14400    1500000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [64,]      14400    1500000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [65,]      14400    1500000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [66,]      45000      65000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [67,]      45000      65000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [68,]      45000      65000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [69,]      45151      62727
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [70,]      97878     115454
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [71,]     135000     185000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [72,]     135000     185000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [73,]     135000     185000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [74,]     135000     185000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [75,]     145000     185000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [76,]     145000     185000
2021.05.01 03:09:44.629 Q_Podbor_03L (Si-3.21,M5)       [77,]     146470     180588
 
Aleksey Vyazmikin:

@Dmitry Fedoseev, продолжаю тестировать скрипт, есть такие варианты решения:

Но почему нет к примеру такого:

Вот все значения массива:

Потому что... 

Потому что есть вариант, с меньшими разрывами. Берем отрезок, от его края смотрим, какие отрезки начинаются от него, если нет начинающихся точно от него, то ищем ближайший. 

Задача была - состыковать, а если нет стыкующегося, то взять ближайший.

 
Dmitry Fedoseev:

Потому что... 

Потому что есть вариант, с меньшими разрывами. Берем отрезок, от его края смотрим, какие отрезки начинаются от него, если нет начинающихся точно от него, то ищем ближайший. 

Задача была - состыковать, а если нет стыкующегося, то взять ближайший.

Спасибо за пояснения!

В процессе реализации идеи всегда всплывают нюансы, которые сразу сложно было учесть.

 
На текущий момент сделал выбор комбинации чисто по её размеру - чем больше отрезков, тем лучше. Это не идеальный вариант, но даже он показывает, что таким методом можно увеличить профит модели в районе 30%, что в целом воодушевляет.
 
Aleksey Nikolayev:
Возможно, решается в терминах теории графов. Вершины графа - отрезки, стрелки графа - соединяют каждую вершину со всеми возможными последующими (ближайшими допустимыми отрезками). Каждая вершина и стрелка помечаются весами и определяется правило, по которому считается вес каждого пути. Применяется какой-нибудь алгоритм поиска оптимального пути в графе. Более подробно исследовать вопрос не готов)

А может быть, многомерного дерева. Или алгоритма трассировки лучей. Алгоритма BSP в проекции. Барин интересную задачу ставит, мозги вам напрягать же.