assignkbest

Присвоение с помощью k-best глобального самого близкого соседа

Описание

[assignments,unassignedrows,unassignedcolumns,cost] = assignkbest(costmatrix,costofnonassignment) возвращает таблицу присвоений, assignments, из обнаружений к дорожкам с помощью алгоритма Jonker-Volgenant. Алгоритм находит решение глобального самого близкого соседа (GNN), которое минимизирует общую стоимость присвоений.

Стоимость каждого потенциального присвоения содержится в матрице стоимости, costmatrix. Каждая матричная запись представляет стоимость возможные присвоения. Строки матрицы представляют дорожки, и столбцы представляют обнаружения. Все возможные присвоения представлены в матрице стоимости. Чем ниже стоимость, тем более вероятно присвоение должно быть сделано. Каждая дорожка может быть присвоена самое большее одному обнаружению, и каждое обнаружение может быть присвоено самое большее одной дорожке. Если количество строк больше количества столбцов, некоторые дорожки являются неприсвоенными. Если количество столбцов больше количества строк, некоторые обнаружения являются неприсвоенными. Можно установить запись costmatrix к Inf запретить присвоение.

costofnonassignment представляет стоимость оставления следов или неприсвоенных обнаружений. Более высокие значения увеличивают вероятность, что каждый существующий объект присвоен.

Все входные параметры должны все быть одинарной точностью или всеми быть двойная точность.

Функция возвращает список неприсвоенных дорожек, unassignedrows, список неприсвоенных обнаружений, unassignedcolumns, и стоимость присвоения, cost.

пример

[assignments,unassignedrows,unassignedcolumns,cost] = assignkbest(costmatrix,costofnonassignment,k)также задает номер, k, из k - лучшие глобальные самые близкие соседние решения, которые минимизируют общую стоимость присвоений. В дополнение к лучшему решению функция использует алгоритм Murty, чтобы найти остающийся k-1 решением.

[assignments,unassignedrows,unassignedcolumns,cost] = assignkbest(costmatrix,costofnonassignment,k,algorithm) также задает алгоритм, algorithm, для нахождения присвоений.

Примеры

свернуть все

Создайте матрицу стоимости, содержащую запрещенные присвоения. Затем используйте assignkbest функционируйте, чтобы найти эти 5 лучших решений.

Настройте матрицу стоимости, чтобы содержать некоторые запрещенные или недопустимые присвоения путем вставки Inf в матрицу.

costMatrix = [10 5 8 9; 7 Inf 20 Inf; Inf 21 Inf Inf; Inf 15 17 Inf; Inf inf 16 22];
costOfNonAssignment = 100;

Найдите 5 лучших присвоений.

[assignments,unassignedrows,unassignedcols,cost] = ...
    assignkbest(costMatrix,costOfNonAssignment,5)
assignments=5×1 cell array
    {4x2 uint32}
    {4x2 uint32}
    {4x2 uint32}
    {4x2 uint32}
    {4x2 uint32}

unassignedrows=5×1 cell array
    {[3]}
    {[3]}
    {[3]}
    {[4]}
    {[5]}

unassignedcols=5×1 cell array
    {0x1 uint32}
    {0x1 uint32}
    {0x1 uint32}
    {0x1 uint32}
    {0x1 uint32}

cost = 5×1

   147
   151
   152
   153
   154

Входные параметры

свернуть все

Стойте матрицы в виде M-by-N матрица. M является количеством дорожек, которые будут присвоены, и N является количеством обнаружений, которые будут присвоены. Каждая запись в матрице стоимости содержит стоимость присвоения обнаружения и дорожки. Матрица может содержать Inf записи, чтобы указать, что присвоение запрещается. Матрица стоимости не может быть разреженной матрицей.

Типы данных: single | double

Стоимость неприсвоения в виде скаляра, двухэлементного вектора из скаляров или двухэлементного массива ячеек векторов.

  • Когда задано как скаляр, это представляет стоимость оставления следов или неприсвоенных обнаружений. Более высокие значения увеличивают вероятность, что каждый объект присвоен. Значение не может быть установлено к Inf.

  • Когда задано как двухэлементные скаляры, первый элемент представляет стоимость отъезда неприсвоенных обнаружений, и второй элемент представляет стоимость оставления неприсвоенных следов.

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

Типы данных: single | double

Количество лучших решений в виде положительного целого числа.

Типы данных: single | double

Алгоритм присвоения в виде 'jv' для алгоритма Jonker-Volgenant, 'munkres' для алгоритма Munkres, 'auction' для Аукционного алгоритма или 'matchpair' для алгоритма пары соответствия. Когда 'jv' выбран, функция использует эвристику, заданную в [3], чтобы улучшать производительность алгоритма.

Пример: 'jv'

Типы данных: char | string

Выходные аргументы

свернуть все

Присвоение дорожек к обнаружениям, возвращенным как k - массив ячеек элемента. k является количеством лучших решений. Каждая ячейка содержит L i-2 матрица пар индексов дорожки и присвоенных индексов обнаружения. L i - количество пар присвоения в ith ячейка решения. Первый столбец каждой матрицы содержит индексы дорожки, и второй столбец содержит присвоенные индексы обнаружения.

Индексы неприсвоенных дорожек, возвращенных как k - массив ячеек элемента. Каждой ячейкой является P, который i векторизовала, где P i = M - L i - количество неприсвоенных строк в ith ячейка. Каждым элементом является индекс строки, которой не присвоены никакие столбцы. k является количеством лучших решений.

Типы данных: uint32

Индексы неприсвоенных обнаружений, возвращенных как k - массив ячеек элемента. Каждой ячейкой является Q, который i векторизовала, где Q i = M - L i - количество неприсвоенных обнаружений в ith ячейка. Каждым элементом является индекс столбца, которому не присвоены никакие строки. k является количеством лучших решений.

Типы данных: uint32

Общая стоимость решений, возвращенных как k - вектор элемента. Каждым элементом является скалярное значение, обобщающее общую стоимость решения проблемы присвоения.

Типы данных: single | double

Ссылки

[1] Murty, Кэтта Г. "Алгоритм для рейтинга всех присвоений в порядке увеличения стоимости". Исследование операций 16, № 3 (1968): 682-687.

[2] Сэмюэль Блэкмен и Роберт Пополи. Проект и анализ современных систем слежения, дома Artech, 1999.

[3] Миллер, M. L. и др. “Оптимизируя Оцениваемый Метод Присвоения Мерти. Транзакции IEEE на Космических и Электронных системах, издании 33, № 3, июль 1997, стр 851–62. DOI.org (Crossref), doi:10.1109/7.599256.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Смотрите также

Функции

Введенный в R2018b