标签: nonlinear-optimization

如何将附加参数传递给 scipy.optimize.newton_krylov?

所以我试图找到"k" 哪个满足方程

F(k,u,v,w) = 0
Run Code Online (Sandbox Code Playgroud)

而 u、v 和 w 是额外的参数。我一直在尝试使用 newton_krylov ( http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.optimize.newton_krylov.html )来解决它,它将基于的猜测k,但似乎没有办法包含其他参数。

我的问题是我需要传递F额外的参数,但似乎没有办法将它们传递给F. 有没有我不知道的方法来传递它们?或者我可以做些什么来使它工作?

此外,如果有更适合这种情况的功能,那也会很酷。

python numpy scipy nonlinear-optimization

4
推荐指数
1
解决办法
1388
查看次数

了解有关 APPPT 求解器的更多信息

我有几个关于 APOPT 如何解决 MINLP 的问题。

  • APOPT 使用什么非线性规划方法(内部点、信赖域等)?
  • APOPT 如何处理混合整数(B&B、外近似、广义弯曲分解等)?

optimization nonlinear-optimization mixed-integer-programming gekko

4
推荐指数
1
解决办法
1467
查看次数

R函数搜索函数

更新:最初的问题是:是否有一个R函数使用在matlab中的"lsqnonlin"函数中实现的相同算法?但是,答案更多与在R中搜索函数有关.我认为答案通常对R用户非常有用.所以我编辑了标题,但在这里再次问了原始问题:在R中,如何进行非线性最小二乘优化,包括求解微分方程?

我做的非线性最小二乘优化和发现功能的MATLAB lsqnonlin进行比所有的优化算法我R中试图更好(包括函数算法optimx,nlm,nlminb,solnp在这个意义上,等等),这是更快,找到了"更正确的"解决方案

但是,我没有找到在Matlab中使用的R中的"信任区域反射"算法的实现.有人知道是否已经实施了吗?此外,"信任区域反射"算法是否更适合这种优化算法?

optimization matlab r nonlinear-optimization

3
推荐指数
1
解决办法
444
查看次数

R - Levenberg Marquardt非线性最小二乘拟合Heligman Pollard模型参数

我试图重现Kostakis的纸张解决方案.在本文中,使用de Heligman-Pollard模型将删节死亡率表扩展为完整的生命表.该模型有8个参数必须安装.作者使用了改进的Gauss-Newton算法; 该算法(E04FDF)是NAG计算机程序库的一部分.Levenberg Marquardt不应该产生相同的参数集吗?我的代码或LM算法的应用有什么问题?

library(minpack.lm)


## Heligman-Pollard is used to expand an abridged table.
## nonlinear least squares algorithm is used to fit the parameters on nqx observed over 5 year   intervals (5qx)
AGE <- c(0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70)
MORTALITY <- c(0.010384069, 0.001469140, 0.001309318, 0.003814265, 0.005378395, 0.005985625,     0.006741766, 0.009325056, 0.014149626, 0.021601755, 0.034271934, 0.053836246, 0.085287751, 0.136549522, 0.215953304)

## The start parameters for de Heligman-Pollard Formula (Converged set a=0.0005893,b=0.0043836,c=0.0828424,d=0.000706,e=9.927863,f=22.197312,g=0.00004948,h=1.10003)
## I …
Run Code Online (Sandbox Code Playgroud)

r nonlinear-functions nonlinear-optimization model-fitting levenberg-marquardt

3
推荐指数
1
解决办法
5021
查看次数

如何解决python中的3个非线性方程

我有以下需要解决的3个非线性方程组:

-xyt + HF = 0

-2xzt + 4yzt - xyt + 4z ^ 2t - M1F = 0

-2xt + 2yt + 4zt - 1 = 0

其中x,HF和M1F是已知参数.因此,y,z和t是要计算的参数.

尝试解决问题:

def equations(p):
    y,z,t = p
    f1 = -x*y*t + HF
    f2 = -2*x*z*t + 4*y*z*t - x*y*t + 4*t*z**2 - M1F
    f3 = -2*x*t + 2*y*t + 4*z*t - 1
    return (f1,f2,f3)

y,z,t = fsolve(equations)

print equations((y,z,t))
Run Code Online (Sandbox Code Playgroud)

但问题是如果我想使用scipy.optimize.fsolve那么我应该输入一个初始猜测.就我而言,我没有任何初始条件.

还有另一种方法可以解决3个在python中有3个未知数的非线性方程吗?

编辑:

原来我有条件!条件是HF> M1F,HF> 0,M1F> 0.

optimization numpy scipy nonlinear-optimization python-2.7

3
推荐指数
1
解决办法
2213
查看次数

使用R中的nloptr不会更改初始值

我几个月来一直在努力解决R中的优化问题.lpSolve由于幻想体育数据的例子,我终于想出了线性问题.然而,我的原始和(仍)当前问题是nloptr在R中使用等式约束尝试非线性优化.

我要做的是尽量减少两股票投资组合的差异,其中两只股票的回报几乎完全负相关(对于那些熟悉学术金融的人来说,最终目标是证明/反驳是否或没有套利机会).我希望最小化方差,取决于两个权重的总和正好等于1,同时在0和1之间.下面是我正在使用的确切代码,它应该很容易重现:

sd1 <- 0.01
sd2 <- 0.025
corr.lo <- -0.999

# Objective function
eval.f <- function(w) {
  return(
    (w[1]*sd1)^2 +
      (w[2]*sd2)^2 +
      (2*w[1]*w[2]*sd1*sd2*corr.lo)
  )
}

# Constraint function
eval.g <- function(w) {
  return(w[1] + w[2] - 1)
}

w0 <- c(0.5, 0.5)

opts <- list('algorithm' = 'NLOPT_GN_ISRES', 'xtol_rel' = 1.0e-8)

res <- nloptr(
  x0 = w0,
  eval_f = eval.f,
  lb = c(0,0),
  ub = c(1,1),
  eval_g_eq = eval.g,
  opts = opts
)
Run Code Online (Sandbox Code Playgroud)

优化运行没有错误,并生成以下内容:

> res …
Run Code Online (Sandbox Code Playgroud)

optimization r nonlinear-optimization

3
推荐指数
1
解决办法
923
查看次数

在MATLAB中求解多个非线性独立方程的最快方法?

MATLAB有两种方法来解决非线性方程:

  • fzero:求解单个非线性方程
  • fsolve:求解非线性方程组

因此,可以使用以下方法来求解n非线性独立方程组:

  1. 使用循环分别使用求解方程 fzero
  2. 使用循环分别使用求解方程 fsolve
  3. fsolve它们一起解决它们

我的直觉是:

  • n由于复杂度(梯度计算)为0(n ^ 2),因此循环方法比单个系统更快
  • 循环可能较慢,n因为循环在MATLAB中具有较高的开销,并且可能存在一些恒定的启动时间
  • fzerofsolve单个非线性方程专用的更快.

问题:解决此问题的最快方法是什么?应该使用哪些选项来加快流程?

相关主题

performance matlab nonlinear-optimization equation-solving

3
推荐指数
1
解决办法
1563
查看次数

TypeError:'numpy.int64'对象不可调用 - 这在外行术语中意味着什么?

我试图用我自己的S形模型在这个例子后进行非线性回归:

$$ f(d)=\frac {1} {1 +\exp(-k(de))} $$

在网站上解释的示例完美,但不是我的代码:

import pylab
import numpy
from scipy import optimize

def f(d, k, e):
    return 1 / (1 + numpy.exp(-k(d-e)))

def resid(p, y, d):
    k, e = p
    return y - f(d, k, e)


# load the data
d, r, n = numpy.loadtxt('data.txt', unpack=True)

y = numpy.concatenate([d, r])

k0, e0 = 1, 10

[k, e], flag  = optimize.leastsq(resid, [k0, e0], args=(d, r))

print flag, k, e

# plot the data
pylab.plot(d, r, …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy nonlinear-optimization

2
推荐指数
1
解决办法
1万
查看次数

R 中 optim() 的优化(L-BFGS-B 需要 'fn' 的有限值)

我在 R 中使用 optim() 来解决涉及积分的可能性时遇到了一些麻烦。我收到一条错误消息,指出“优化错误(par = c(0.1,0.1),LLL,方法=“L-BFGS-B”,较低= c(0,:L-BFGS-B需要'fn的有限值'"。下面是我的代码:

s1=c(1384,1,1219,1597,2106,145,87,1535,290,1752,265,588,1188,160,745,237,479,39,99,56,1503,158,916,651,1064,166,635,19,553,51,79,155,85,1196,142,108,325  
     ,135,28,422,1032,1018,128,787,1704,307,854,6,896,902)


LLL=function (par) {

  integrand1 <- function(x){ (x-s1[i]+1)*dgamma(x, shape=par[1], rate=par[2]) }
  integrand2 <- function(x){ (-x+s1[i]+1)*dgamma(x, shape=par[1],rate=par[2]) }



  likelihood = vector() 

  for(i in 1:length(s1)) {likelihood[i] = 
    log( integrate(integrand1,lower=s1[i]-1,upper=s1[i])$value+ integrate(integrand2,lower=s1[i],upper=s1[i]+1)$value )  
  }

  like= -sum(likelihood)
  return(like)

}




optim(par=c(0.1,0.1),LLL,method="L-BFGS-B", lower=c(0,0))
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助。

最好的事物,

元明

optimization r nonlinear-optimization

2
推荐指数
1
解决办法
5527
查看次数

nlminb的PORT例程中的算法名称?

我正在使用包装gnls功能nlme以拟合曲线。当我试图知道它使用的是什么优化器时,我被定向到nlminb函数文档,它指出:

使用PORT例程的无约束和框约束优化。

我不知道什么是“ PORT例程”。它是一系列优化算法还是仅仅是称为“ PORT例程”的优化算法?

任何人都可以至少请在“例程”中告诉我一些名称。例如,“梯度下降”,“ Levenberg-Marquardt”还是“信任区域”?

提前致谢!!

r nonlinear-optimization nlme

2
推荐指数
1
解决办法
491
查看次数