我有一个最小二乘问题要解决,没有任何已知的参数估计。我施加了一个约束条件,即我想要的解决方案是平滑的(模型参数变化缓慢),因此我最小化了相邻参数之间的差异(用于此地质问题的传统补救方法)
通过将约束方程排列为原始数据方程d=Gm中的行来实现约束。辅助参数w通过试错法选择(某些教科书称w为拉格朗日乘数)
我有以下资料:
G = np.array([[1,0,1,0,0,6],
[1,0,0,1,0,6.708],
[1,0,0,0,1,8.485],
[0,1,1,0,0,7.616],
[0,1,0,1,0,7],
[0,1,0,0,1,7.616]])
d = np.array([[2.323],
[2.543],
[2.857],
[2.64],
[2.529],
[2.553]])
现在添加任意w加权平滑度(w=0.01)的约束:
w = 0.01
G = np.array([[1,0,1,0,0,6],
[1,0,0,1,0,6.708],
[1,0,0,0,1,8.485],
[0,1,1,0,0,7.616],
[0,1,0,1,0,7],
[0,1,0,0,1,7.616],
[w,-w,0,0,0,0],
[0,w,-w,0,0,0],
[0,0,w,-w,0,0],
[0,0,0,w,-w,0],
[0,0,0,0,w,-w]])
d = np.array([[2.323],
[2.543],
[2.857],
[2.64],
[2.529],
[2.553],
[0],
[0],
[0],
[0],
[0]])
然而,为w选择合适的值似乎是约束模型参数的良好解的关键步骤
因此,我的问题是:使用Python,是否有一种方法可以循环使用w的不同值的许多计算出的解决方案,并选择用于实现具有最佳质量的解决方案的值
在给出的解决方案中,我将G_0称为没有附加约束的G,类似地,d_0是没有附加零的d。我还假设你从某个地方读G_0和d_0,我指的是已知的
这段代码显然无法正常工作,因为您没有指定“具有最佳质量的解决方案”的含义。为此,您需要实现
solution_quality_metric
函数相关问题 更多 >
编程相关推荐