Решение проблемы коммивояжера с условиями приоритета

#r #integer-programming

Вопрос:

У меня немного сложный поиск, чтобы сформулировать проблему коммивояжера с условиями приоритета в R, и я действительно не знаю, как это сделать. Вот такая ситуация:

  • У меня есть 3 места для посещения, которые называются A, B и C . Их можно посещать в любом порядке, но один из них должен быть отправной точкой
  • А и В находятся на одном берегу реки, С-на другом берегу.
  • Через реку есть два моста, которые называются D1 и D2, и для того, чтобы добраться из A или B в C, необходимо пересечь по крайней мере один мост. Также при необходимости разрешается дважды пересечь один из мостов в любом порядке.
  • Тур должен закончиться в любом из двух «конечных пунктов назначения», называемых E или F — любой из них в порядке, также нормально, что E вообще не посещается, и тур заканчивается в F или наоборот.
  • У меня есть координаты всех мест A..F, и, следовательно, у меня есть матрица расстояний (см. Ниже).

Я знаю, что в R есть ompr библиотека, которую можно использовать для формулировки такой проблемы, но я не знаю, как сформулировать мою сложную проблему. Я также знаю, что существует целый пакет R под названием TSP, посвященный таким проблемам, но опять же-я не знаю, как сформулировать свои ограничения, чтобы он мог правильно их рассчитать. Как я могу сформулировать свою проблему математически, чтобы ее можно было решить в R? Я также с удовольствием использую любой подходящий пакет R или методику…

Некоторые примеры данных для игры ( dat содержат координаты рассматриваемых мест):

 dat<-data.frame(x=c(2,3,8,4,4,0,1),y=c(10,0,11,9,4,11,2))
rownames(fr)<-c("A","B","C","D1","D2","E","F")
distmat<-dist(dat)