如何从scipy.optimize.nnls找到严格的正解?

时间:2019-01-29 21:22:14

标签: python

我正在用python解决不确定的系统和不确定的系统。

我使用scipy.optimize.nnls,但是此函数在解决方案中生成许多0。例如如果我有10个变量和20个等式,那么nnls估计有6个变量为0。我知道部分原因是系统的等级。但是,是否有任何方法可以向nnls添加所有变量严格大于0 的条件?

例如:

  • 不确定系统:x + y = 1

nnls解决的是(x,y)=(1,0)

我想要的是(x,y)=(0.5,0.5)

  • 超定系统:

x + y = 1

x + 10y = 1

x + 20y = 1

nnls解决的是(x,y)=(1,0)

例如,只要x,y严格> 0,我想要的就是(x,y)=(0.9,0.1)

不确定的系统

A = [[1, 1]]
B = [1]
scipy.optimize.nnls(A,B)[0]
>> array([1., 0.])

超定系统:

A = [[1,1],
 [1,10],
 [1,20]]
B = [1,1,1]
scipy.optimize.nnls(A,B)[0]
>> array([1., 0.])

0 个答案:

没有答案