多变量约束非线性极小化

汉诺夫

这是我要解决的最小化问题,但是无论尝试哪种形式或包装,它都无法解决。

该问题是具有二次目标函数运输问题公式如下:

最小化f(x),f(x)为x'* C * x,但要遵守等式约束UI * x-ci = 0。

其中C是常数的对角矩阵,UI是具有值0、1,-1的矩阵,以便建立约束。

到目前为止,我将提供一个示例,我尝试了两个功能,nloptr与之类似的是package和constrOptim

这是一个示例nloptr

require(nloptr)
objective <- function(x) {return( list( "objective" = t(x) %*% C %*% x,
                                    "gradient" =  2* C %*% x )) }
constraints <- function(x) {return( list( "constraints" =   ui %*% x - ci,
                                        "jacobian" = ui))}

C <- diag(c(10,15,14,5,6,10,8))
ci <- c(20, -30, -10, -20, 40))
ui <- rbind( c(1,1,1,0,0,0,0),
             c(-1,0,0,1,0,0,0),
             c(0,-1,0,-1,1,1,0),
             c(0,0,-1,0,-1,0,1),
             c(0,0,0,0,0,-1,-1))
opts <- list("alorithm" = "NLOPT_GN_ISRES")

res <- nloptr( x0=x0, eval_f=objective, eval_g_eq = constraints, opts=opts)

当尝试使用解决此问题时constrOptim,我面临的问题是必须提供可行范围内的起始值。但是,我最终会有很多方程式,并且真的不知道如何设置这些起点。

这是同一个示例constrOptim

C <- diag(c(10,15,14,5,6,10,8))
ci <- c(20, -30, -10, -20, 40)
ui <- rbind(    c(1,1,1,0,0,0,0),
            c(-1,0,0,1,0,0,0),
            c(0,-1,0,-1,1,1,0),
            c(0,0,-1,0,-1,0,1),
            c(0,0,0,0,0,-1,-1))
start <- c(10,10,10,0,0,0,0)

objective <- function(x) { t(x) %*% C %*% x }
gradient <- function(x) { 2 * C %*% x }
constrOptim(start, objective, gradient, ui = ui, ci = ci)
G.格洛腾迪克

试试这个:

co <- coef(lm.fit(ui, ci))
co[is.na(co)] <- 0
res <- nloptr( x0=co, eval_f=objective, eval_g_eq = constraints, 
  opts=list(algorithm = "NLOPT_LD_SLSQP"))

给予:

> res

Call:
nloptr(x0 = co, eval_f = objective, eval_g_eq = constraints, 
    opts = list(algorithm = "NLOPT_LD_SLSQP"))


Minimization using NLopt version 2.4.0 

NLopt solver status: 4 ( NLOPT_XTOL_REACHED: Optimization stopped because 
xtol_rel or xtol_abs (above) was reached. )

Number of Iterations....: 22 
Termination conditions:  relative x-tolerance = 1e-04 (DEFAULT) 
Number of inequality constraints:  0 
Number of equality constraints:    5 
Optimal value of objective function:  37378.6963822218 
Optimal value of controls: 28.62408 -29.80155 21.17747 -1.375917 -17.54977 -23.6277 -16.3723

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多变量约束非线性极小化

来自分类Dev

非线性约束 Cplex

来自分类Dev

Python约束的非线性优化

来自分类Dev

cvxpy:将非线性约束转换为等效线性约束

来自分类Dev

R中具有二次约束的单变量非线性优化

来自分类Dev

非线性函数的Scipy约束优化

来自分类Dev

无约束非线性优化函数

来自分类Dev

R中的非线性约束优化

来自分类Dev

非线性函数的Scipy约束优化

来自分类Dev

线性方程组中的非线性约束

来自分类Dev

scipy linregress的多变量线性回归

来自分类Dev

Dymola在非线性系统初始化过程中如何选择迭代变量?

来自分类Dev

R中的单变量非线性优化

来自分类Dev

解决MINLP(混合整数非线性规划)非凸约束最小化问题的软件选择大列表

来自分类Dev

PuLP:如何编写多变量约束?

来自分类Dev

努力最小化非线性函数

来自分类Dev

如何在Matlab中求解非线性约束优化?

来自分类Dev

约束非线性优化,值应为0.125的倍数

来自分类Dev

施加约束的非线性看似无关回归(SUR)

来自分类Dev

如何在Matlab中求解非线性约束优化?

来自分类Dev

向R中的非线性模型添加约束

来自分类Dev

在每个离散时间点上,通过MathematicalProgram实现围绕决策变量(x,u)的非线性系统线性化的方法

来自分类Dev

如何线性化maxmax约束

来自分类Dev

如何线性化非凸约束?

来自分类Dev

优化问题,非线性:R中的目标和约束条件自动分析Jacobian / Hessian

来自分类Dev

旋转的非线性优化

来自分类Dev

MapControl视场非线性

来自分类Dev

非线性次级xlabel

来自分类Dev

非线性回归