限制条件如下:
设置了一个固定阈值,该距离大于阈值的距离由距离本身计算得出 且小于或等于距离的距离视为常数;
最好让路径随x坐标增加(即p1.x <= p2.x <= ... <= pn.x), 但是先考虑condition.1,然后再考虑condition.2;
我们每个地点只能参观一次。
答案 0 :(得分:0)
有关优化的注意事项:因此,基本上是一条最短的汉密尔顿路径,具有2个扭曲(条件1和2)。考虑到最短的HP可以通过Traveling Salesman算法解决(虚拟城市与其他所有城市的距离为零),要获得更好的优化解决方案,您可以在将条件矩阵提供给TSP算法之前尝试根据条件1处理距离矩阵。 有关如何针对最短的HP here使用TSP的更多信息。
为了便于阅读,我将您的观点称为[A,B,... C]。让我们这样表达我们的观点:
+---+---+---+
| | X | Y |
+---+---+---+
| A | 0 | 0 |
| B | 4 | 3 |
| C | 0 | 3 |
+---+---+---+
然后使用勾股定理创建距离矩阵:
+---+------+------+------+
| | A | B | C |
+---+------+------+------+
| A | 0.00 | 5.00 | 3.00 |
| B | 5.00 | 0.00 | 4.00 |
| C | 3.00 | 4.00 | 0.00 |
+---+------+------+------+
我对您的第一个条件(固定阈值)的理解是,任何低于某个特定值的距离都被视为零。将该条件应用于距离矩阵(假设在我们的例子中为3.50)。
+---+------+------+------+
| | A | B | C |
+---+------+------+------+
| A | 0.00 | 5.00 | 0.00 |
| B | 5.00 | 0.00 | 4.00 |
| C | 0.00 | 4.00 | 0.00 |
+---+------+------+------+
现在,如果我们坚持使用蛮力方法,那么我们必须为路线的所有可能排列提供资金。在我们的情况下,它将很简单
+------+-----------+--------------+
| Path | Distances | Total Length |
+------+-----------+--------------+
| ABC | 5+4 | 9 |
| ACB | 0+4 | 4 |
| BAC | 5+0 | 5 |
| BCA | 4+0 | 4 |
| CAB | 0+5 | 5 |
| CBA | 4+5 | 9 |
+------+-----------+--------------+
删除相同但相反的路由。
+------+-----------+--------------+
| Path | Distances | Total Length |
+------+-----------+--------------+
| ABC | 5+4 | 9 |
| ACB | 0+4 | 4 |
| BAC | 5+0 | 5 |
+------+-----------+--------------+
以总长度中的最短长度为准,这就是您的解决方案。
据我了解,只有在“总长度”中有平局时,此条件才会激活。在这种情况下,请使用这些点的X坐标之差的绝对值来创建距离矩阵:
+---+------+------+------+
| | A | B | C |
+---+------+------+------+
| A | 0.00 | 4.00 | 0.00 |
| B | 4.00 | 0.00 | 4.00 |
| C | 0.00 | 4.00 | 0.00 |
+---+------+------+------+
根据您所束缚的路线汇总距离,然后使用该距离的最小值来确定应优先选择的路线。