Подобие между строками строки

Причина для ошибки

превышен превышение лимита GC "означает, что сборщик мусора работает все время, а программа Java делает очень медленный прогресс.

blockquote>

После сбора мусора, если процесс Java тратит более 98% своего времени на сборку мусора , и если он восстанавливает менее 2% кучи и делал до сих пор последние 5 последовательных сборок мусора, затем вызывается java.lang.OutOfMemoryError

  1. Увеличьте размер кучи , если текущий
  2. Если вы все еще получаете эту ошибку после увеличения памяти кучи, используйте инструменты профилирования памяти , такие как MAT (инструмент анализатора памяти), Visual VM и т. д. и исправить утечки памяти.
  3. Обновить версию JDK до последней версии (1.8.x) или не менее 1.7.x и использовать алгоритм G1GC. Пропускная способность для G1 GC - 90% времени приложения и 10%
  4. Помимо настройки памяти кучи с помощью Xms1g -Xmx2g, попробуйте
    -XX:+UseG1GC -XX:G1HeapRegionSize=n -XX:MaxGCPauseMillis=m  
    -XX:ParallelGCThreads=n -XX:ConcGCThreads=n
    

. Посмотрите на некоторые более связанные вопросы, касающиеся G1GC

Сбор мусора и документация по G7 [JGK 7] для G1

Сбор мусора Java G1 в производстве

Статья о технической службе Oracle для GC finetuning

12
задан Alessandro Jacopson 10 July 2014 в 18:09
поделиться

6 ответов

Вычислите расстояние Fréchet на каждой паре треков. Расстояние может использоваться для измерения подобия дорожек.

Математическое предупреждение: Fréchet был пионером в области метрического пространства, которое относится к Вашей проблеме.

12
ответ дан 2 December 2019 в 19:57
поделиться

Я добавил бы буфер вокруг первой строки на основе предполагаемой вероятной ошибки и затем определил бы, соответствует ли вторая строка полностью в буфере.

3
ответ дан 2 December 2019 в 19:57
поделиться

Для определения "того же маршрута" создайте минимальный набор нормализованных векторов тракта, вычислите различия в суммарной мощности и сравните общее количество с качественной мерой.

  1. Нормализуйте GPS waypoints на общей длине пути,
  2. обойдите векторы путей вместе, создав новый набор векторов тракта для каждого пути, основанного на самом коротком векторе в каждом waypoint,
  3. вычислите различия в суммарной мощности между конечными точками каждого вектора в нормализованном взвешивании путей для векторной длины, и
  4. сравните с качественной мерой.

Настройтесь питание различий (запустите с, скажем, различий в квадрате), и качественная мера (скажите как процент различий в суммарной мощности), визуально. Этот алгоритм производит непрерывную качественную меру соответствия пути, а также двоичный результат (Действительно ли пути являются тем же?)

Paul Tomblin сказал: Я добавил бы буфер вокруг первой строки на основе предполагаемой вероятной ошибки и затем определил бы, соответствует ли вторая строка полностью в буфере.

Вы могли изменить алгоритм, поскольку нормализованные векторные конечные точки сравнены. Вы могли определить, было ли какое-либо различие в конечной точке выше определенного размера (реализовывающий буферную идею Paul) или возможно, если конечные точки были вне "буфера", используйте тот факт для игнорирования того различия в конечной точке, позволяя сравнение, игнорирующее отклонения от маршрута.

2
ответ дан 2 December 2019 в 19:57
поделиться

Вы могли идти по каждой точке (Pa) LineString A и измерить расстояние от Pa до ближайшего линейного сегмента LineString B, насчитав каждое из этих расстояний.

Это не быстрый или идеальный метод, но должно смочь дать использованию полезное число и довольно быстро для реализации.

Строки строки запускаются и заканчиваются в подобных точках или являются ими совсем других степеней?

1
ответ дан 2 December 2019 в 19:57
поделиться

Если Вы полагаете, что однострочная строка последовательность [x, y] точки (или [x, y, z] точки), то Вы могли вычислить подобие между каждой парой строк строки с помощью алгоритма Needleman-Wunsch. Как описано в статье Wikipedia, на которую ссылаются, алгоритм Needleman-Wunsch требует "матрицы подобия", которая определяет расстояние между парой точек. Однако это было бы просто в использовании функция вместо матрицы. В Вашем случае Вы могли просто использовать 2D Евклидову функцию расстояния (или 3D Евклидова функция, если Ваши точки имеют повышение) обеспечить расстояние между каждой парой точек.

1
ответ дан 2 December 2019 в 19:57
поделиться

Я на самом деле принимаю сторону человека (Aaron F), кто сказал, что Вы могли бы интересоваться проблемой расстояния Левенштейна (и процитировал это). Его ответ, кажется, мне является лучшим до сих пор.

Строго говоря, расстояние Левенштейна (также названный расстоянием редактирования), не измеряет строго познаковое расстояние, но также и позволяет Вам выполнять вставки и удаления. Лучший алгоритм для этой меры по расстоянию может быть вычислен в квадратичное время (довольно медленный, если Ваши строки длинны), но у специалистов в области вычислительной биологии есть довольно хорошая эвристика для этого, которое могло бы представлять интерес для Вас самостоятельно. Проверьте BLAST и FASTA.

В Вашей проблеме кажется, что Вы имеете дело с различиями между строками чисел, и Вы заботитесь о числах. Если Вы даете больше информации, я смог направлять Вас к правильному варианту BLAST/FASTA/etc в Ваших целях. В любом случае Вы могли бы рассмотреть адаптирующийся BLAST и FASTA для Ваших потребностей. Они довольно просты.

1: http://en.wikipedia.org/wiki/Levenshtein_distance, http://www.nist.gov/dads/HTML/Levenshtein.html

-2
ответ дан 2 December 2019 в 19:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: