python - 计算到平滑线的距离

标签 python numpy interpolation

我试图找到一个点(在 4 个维度中,此处仅显示 2 个)(图中任何彩色十字)到假定的 Pareto 边界(黑线)的距离。这条线代表优化过程中最好的 Pareto 边界表示。

Pareto = [[0.3875575798354123, -2.4122340425531914], [0.37707675586149786, -2.398936170212766], [0.38176077842761763, -2.4069148936170213], [0.4080534133844003, -2.4914285714285715], [0.35963459448268725, -2.3631532329495126], [0.34395217638838566, -2.3579931972789114], [0.32203302106516224, -2.344858156028369], [0.36742404637441123, -2.3886054421768708], [0.40461156254852226, -2.4141156462585034], [0.36387868122767975, -2.375], [0.3393199109776927, -2.348404255319149]]

现在,我像这样计算从任意点到 Pareto 边界的距离:

def dominates(row, rowCandidate):
return all(r >= rc for r, rc in zip(row, rowCandidate))

def dist2Pareto(pareto,candidate):
    listDist = []

    dominateN = 0
    dominatePoss = 0
    if len(pareto) >= 2:
        for i in pareto:
            if i != candidate:
                dominatePoss += 1
                dominate = dominates(candidate,i)
                if dominate == True:
                    dominateN += 1
                listDist.append(np.linalg.norm(np.array(i)-np.array(candidate)))

        listDist.sort()

        if dominateN == len(pareto):
            print "beyond"            
            return listDist[0]  
        else:
            return listDist[0]

我计算到黑线每个点的距离,并检索最短距离(到已知 Frontier 最近点的距离)。

但是,我觉得我应该改为计算到最近线段的距离。我将如何实现这一目标?

enter image description here

最佳答案

给出直线上最近点坐标的公式here .具体来说,您对称为“两点定义的线”感兴趣。对于后代,公式是:

Formula for distance between a line defined by two points, and a third point

由于边界比较简单,可以循环遍历边界中的每一个两点线段,计算每一个最近的距离,保持最小。您可以引入其他约束/预计算来限制所需的计算次数。

关于python - 计算到平滑线的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33659453/

相关文章:

python - pygame:屏幕在最小化和恢复时删除-在下次更新时变成蓝色

python - 如何在 plotly express scatter 中为多种颜色设置一条趋势线?

python - 经过训练的 TensorFlow 模型始终输出零

html - Angular 8 嵌套对象插值

python - Python 中的 3D 数据插值

vba - Excel线性插值VBA

python - 发布数据以使用ajax查看

python - Discord.py Bot - `if` 命令和 `async def` 有什么区别?

python - 查找二维数组中具有某些非零元素的列的索引

python - 产生大量随机变量