Algorithm 找到位置的好目标函数是什么;“最近的”;去另外两个地方?

Algorithm 找到位置的好目标函数是什么;“最近的”;去另外两个地方?,algorithm,optimization,graph,graph-algorithm,nonlinear-optimization,Algorithm,Optimization,Graph,Graph Algorithm,Nonlinear Optimization,我曾试图通过谷歌搜索找到答案,但在那里我没有取得任何真正的进展(可能是因为我不知道谷歌到底应该做什么) 我想解决的问题是这样的:假设我住在a地点,我的朋友住在B地点。我们想找一家对我们两人来说都不会“太远”的餐馆。什么是一个好的目标函数,它只考虑餐厅与a和B的距离,并捕获一些“公平”的概念,以便在最小化可能的餐厅集合上的函数时,我们得到的位置不会对一个人不公平地远(或近) 我考虑了距离之和,但这对连接A和B的线上的所有点给出了相同的结果。直观地说,“公平”函数应该为中点附近的点给出较低的值。然后

我曾试图通过谷歌搜索找到答案,但在那里我没有取得任何真正的进展(可能是因为我不知道谷歌到底应该做什么)

我想解决的问题是这样的:假设我住在a地点,我的朋友住在B地点。我们想找一家对我们两人来说都不会“太远”的餐馆。什么是一个好的目标函数,它只考虑餐厅与a和B的距离,并捕获一些“公平”的概念,以便在最小化可能的餐厅集合上的函数时,我们得到的位置不会对一个人不公平地远(或近)

我考虑了距离之和,但这对连接A和B的线上的所有点给出了相同的结果。直观地说,“公平”函数应该为中点附近的点给出较低的值。然后我考虑了距离的平方和,但我不确定这是不是一个好主意


另一种可能性是考虑从中点到餐厅的距离,但这有一些实际问题。由于各种其他原因(如单行道、中点附近封闭道路等),如果我们只考虑中点的距离,我们可能会得到一个坏的解决方案。这就是为什么我希望目标函数只将A和B之间的距离作为输入(而不是从任何其他点)。

类似于:

 objective function = A + B + lambda * abs( A - B )

通过调整lambda,您可以控制公平性的权重。

与生活中的许多事情一样,担心“公平性”会导致次优解决方案

我建议最好的解决方案是最小化MAX(dist(A),dist(B))

如果距离B最近的餐厅距离A更近,这将是“不公平的”,但你真的想选择一家距离双方更远的餐厅,只是为了确保A支付他“公平”的愤怒份额吗

如果有几家餐厅的得分相同,我建议尽量减少MIN(dist(A),dist(B))来打破关系,因为这更倾向于减少总的恶化程度,而不是更大的恶化程度。这意味着如果B必须走得更远,但是有两个候选对象距离B相同,那么B应该选择距离A最近的一个。毕竟,AB应该是朋友,对吧?如果你的朋友只是因为他们的痛苦无法逃避而让你受苦,你会非常生气。(我相信我们都有这样一位老朋友:-)

请注意,最小化平方和和和最小化最大值都是具有不同指数的“p-范数”:

平方和是L_2范数,它更倾向于平均值更好、单个分量更差的解,而最小化最大值是L_无穷范数,它完全由最差的单个分量控制


我认为所有的p-规范都是对你问题的合理回答。

你似乎想要一个函数来惩罚你和你的朋友必须旅行的距离上的(大)差异,所以为什么不从这一点开始,在你得到吸引人的东西之前一直摆弄着。至于你的基本问题,什么是一个好的目标函数,这不是一个真正的编程问题,在这里是离题的。从维基百科的文章中,平方和在技术上是L_2范数的平方,但这不应该影响最小化问题。(只是澄清一下,(dist(A),dist(B))是向量,我们在这里考虑其规范)。这是另一个有用的目标函数,以及Matt Timmermans的建议。有什么理由更喜欢这个,比如说,
A^2+B^2+lambda*(A-B)^2
?一个潜在的原因是A+B是总距离,因此可以很好地估计实际旅行成本(时间或金钱方面)