r - 条件 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 条件下的最低结果是多少?
解决方案
当你有一个约束并且仍然想使用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
推荐阅读
- html - 使用 html/css 在移动设备上堆叠带有图像的表格
- microsoft-edge - 禁用 Microsoft Edge 的 HTTP2
- git - GIT输入了错误的密码,不能再克隆了
- java - 将行添加到表后,无法更改 .docx 文件中的行文本
- ajax - 如何让控制器将投票值注册到数据库?
- excel-2010 - 如果单元格中有日期,则返回日期;如果单元格为空白或有文本,则返回 N/A 或空白
- jquery - JQuery Flip取消功能
- sql-server - SSRS 2016 偶发错误 rrRenderingError
- javascript - 如何防止在 Kendo Sortable / Integration - ListView 中对项目进行排序(固定位置)?
- php - Symfony 4:使用 manyToOne 加入的学说迁移