首页 > 解决方案 > 条件 x [1] + x [2] = 1 [r] 的最小值

问题描述

#attempt
optim(c(0.1,0.1),
      function(x){x[1]^2*0.05126875+2*((x[1]*x[2])*-0.00809375)+x[2]^2*0.03376875})

如何创建一个函数,为 x[1] 和 x[2] 生成从 0.01 到 1 的值,并返回 x[1] + x[2] = 1 条件下的最低结果是多少?

标签: r

解决方案


当你有一个约束并且仍然想使用optim时,你可以重新制定你的约束优化问题,例如,

optim(0.1, 
      function(x) x^2*0.05126875+2*((x*(1-x))*-0.00809375)+(1-x)^2*0.03376875, 
      lower = 0,
      upper = 1,
      method = "L-BFGS-B")

这使

$par
[1] 0.4135589

$value
[1] 0.01645614

$counts
function gradient
       4        4

$convergence
[1] 0

$message
[1] "CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL"

对于您的情况,解决方案是

x1 = 0.4135589
x2 = 1-x1
x = c(x1,x2)

> x
[1] 0.4135589 0.5864411

推荐阅读