scipy.optimize.minimize.最小化以低小数点p更改值

2024-10-02 00:42:23 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的优化代码。在

  initialGuess = D.Matrix[:,D.menge]
  bnds = D.Matrix[:,(D.mengenMin,D.mengenMax)]
  con1 = {'type': 'eq', 'fun': PercentSum} 
  con2 = {'type': 'eq', 'fun': MinMaxProportion}
  cons = ([con1,con2])

  solution = minimize(rootfunc,initialGuess,method='SLSQP',\
                bounds=bnds,constraints=cons)

问题是,算法在小数位改变数值。 e、 这是我最初的猜测。我已经试着从浮点改成整数,来解决这个问题。在

^{2}$

优化器的第一次尝试如下所示:

[1.49011612e-08 0.00000000e+00 1.23000000e+02 0.00000000e+00
0.00000000e+00 6.22000000e+02 2.45000000e+02 0.00000000e+00
0.00000000e+00 0.00000000e+00]

另一个是:

[  0.           0.         123.00000001   0.           0.
 622.         245.           0.           0.           0.        ]

最后,优化结束时出现以下错误:

status 6
message Singular matrix C in LSQ subproblem

我认为问题在于细微的差别。有没有可能告诉SLSQP算法只尝试更改前两位或更高的小数点?在

谨致问候

编辑:我找到了一个选择,但它不能解决我的问题。新的呼唤scipy.optimize.minimize.最小化公司名称:

solution = minimize(rootfunc,initialGuess,method='SLSQP',\
                bounds=bnds,constraints=con2,options={'eps':1,'disp':True})

Tags: typematrixmethodeqsolutionfunboundsminimize
1条回答
网友
1楼 · 发布于 2024-10-02 00:42:23

这些“微小步骤”不是求解器在每次迭代中选择的值,它们来自有限差分法。这种基于梯度的解算器需要渐变。由于没有将梯度作为函数提供,它默认使用有限差分为您计算它们。正如错误所说,你真正的问题很可能是一个奇异矩阵。在

相关问题 更多 >

    热门问题