Optaplanner FieldAccessingSolutionCloner: Как смоделировать внешнюю матрицу времени прохождения? - PullRequest
1 голос
/ 28 апреля 2019

В контексте маршрутизации транспортных средств - или проблемы TSP: допустим, мы хотим вывести время в пути между двумя точками в факт проблемы матрицы затрат.

Мы можем переписать distanceTo -метод класса GeoLocation для простого поиска значения в матрице. Но для этого нам нужно сохранить ссылку на экземпляр матрицы в экземплярах GeoLocation.

Как это влияет на клонирование решения и связанных объектов планирования? Будет ли матрица глубоко клонирована / будут ли разные объекты планирования указывать на разные экземпляры матрицы во время планирования? Конечно, этого следует избегать, поскольку матрица не изменяется во время планирования и глубокого клонирования, что может привести к снижению производительности. Вместо этого каждая ссылка на матрицу GeoLocation должна указывать на один и тот же матричный объект в памяти.

Правильно ли обрабатывает FieldAccessingSolutionCloner это или нам нужно предоставить наш собственный SolutionCloner?

1 Ответ

2 голосов
/ 01 мая 2019

SolutionCloner выполняет клон планирования , который не клонирует факты проблемы, если только факты проблемы не ссылаются на решение планирования или объект планирования. Ваша модель класса должна быть спроектирована так, чтобы не было необходимости планировать клонирование вашей матрицы расстояний.

Пример VRP в примерах optaplanner не клонирует его матрицу расстояний (экземпляры Location находятсяпланирование не клонируется).

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

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