matlab中的非线性平方优化任务
让我们假设我们有以下任务:找到权重的最佳值 使下列方程最小化 其中var表示给定x1变量的方差,我们还有一个约束条件,即这些权重之和应等于1 我已经初始化了匿名函数和初始点的权重matlab中的非线性平方优化任务,matlab,optimization,mathematical-optimization,Matlab,Optimization,Mathematical Optimization,让我们假设我们有以下任务:找到权重的最佳值 使下列方程最小化 其中var表示给定x1变量的方差,我们还有一个约束条件,即这些权重之和应等于1 我已经初始化了匿名函数和初始点的权重 w=[0.5; 0.5]; >> f=@(x1,x2) (w(1)*w(1)*var(x1)+w(2)*w(2)*var(x2)) f = @(x1,x2)(w(1)*w(1)*var(x1)+w(2)*w(2)*var(x2)) 我想我应该使用函数fmincon, 我已经创建
w=[0.5; 0.5];
>> f=@(x1,x2) (w(1)*w(1)*var(x1)+w(2)*w(2)*var(x2))
f =
@(x1,x2)(w(1)*w(1)*var(x1)+w(2)*w(2)*var(x2))
我想我应该使用函数fmincon,
我已经创建了一个矩阵
A=[1;1];
和b列
b=[1];
然后我试着跟着乐趣走
weighs=fmincon(f(x1,x2),w,A,b)
但它给了我错误
Error using optimfcnchk (line 287)
FUN must be a function, a valid string expression, or an inline function
object.
你能帮我一下吗?怎么了?提前感谢您需要将
fmincon
中的函数指定为函数句柄或匿名函数f(x1,x2)
计算为标量双精度,而不是函数句柄fmincon
将使用当前值w
评估此功能,以检查解决方案的质量,因此需要一种输入w
的方法
因此,您需要
- 将函数定义更改为
,即。f(w,x1,x2)
f=@(w,x1,x2)(w(1)*w(1)*var(x1)+w(2)*w(2)*var(x2))
- 编写
调用为fmincon
fmincon(@(u)f(u,x1,x2),…)
然而,我建议在你的问题中用
1-w(2)
代替w(1)
(反之亦然),将其重新表述为一个变量的无约束优化(除非w
是一个实际权重,并且必须保持在0和1之间,在这种情况下,你仍然需要约束).那么我的函数将如何具有最终形式?因为w是权重,我们可能需要添加边界0权重也可以是负数,请发布完整的解决方案和答案?