【发布时间】:2013-11-08 02:16:11
【问题描述】:
我是优化新手。我正在尝试使用scipy.optimize 中的fmin_slsqp 函数解决线性最小二乘问题。
我的目标函数是 |q0_T*P-q1_T| 平方的 frobenius 范数,其中 q0_T 是 nX1 向量的转置,P 是 nXn 矩阵,q1_T 是 @987654329 的转置@向量。这基本上是一个马尔科夫过程,其中q 向量作为处于某个状态的概率,P 是转移概率矩阵。
目标函数将被最小化 w.r.t P 其中约束是:
1) P 中的所有元素都必须是非负数
2) P 中的所有行的总和必须为 1
我已经定义了这个我不确定是否正确的目标函数:
def func(P, q):
return (np.linalg.norm(np.dot(transpose(q[0,]),P)-transpose(q[1,])))**2
fmin_slsqp 中的第二个参数要求一个 1D ndarray x0,它是自变量的初始猜测。但是在这里,由于我的自变量是 P,所以我需要一个二维数组来进行初始猜测。我不确定我是否正确地构建了问题,或者我将不得不使用其他功能。谢谢。
【问题讨论】:
标签: python numpy scipy linear-programming