Я работаю над созданием некоторого кода с использованием метаэвристики для нахождения хороших решений проблемы транспортировки с фиксированной зарядкой (FCTP).
Проблема, с которой я сталкиваюсь, заключается в создании исходного решения, основанного на поискесвязующее дерево для базового двудольного графа.
Я хочу, чтобы оно было случайным связующим деревом, чтобы я мог запускать процедуру для одной и той же проблемы несколько раз, возможно, получая разные решения.
IУ меня возникли некоторые трудности с этим.Подход, который я использовал до сих пор, состоит в том, чтобы сделать случайную перестановку дуг, затем выполнить итерацию по этому списку, последовательно помещая их в основу, если это не создаст цикл.
Мне нужно найтибыстрый метод проверки, если включение дуги создаст цикл.Я не хочу «грубой силы», поскольку этот подход может занять много времени, учитывая большие проблемы.
Учитывая, что A
- это массив со случайной перестановкой дуг,как бы вы пошли делать процедуру выбора?
Я работаю над этим уже пару часов, и ничто из того, что я пробовал, не сработало, большая часть этого была бессмысленной, когда дело доходило до приложения...