Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中的非线性平方优化任务_Matlab_Optimization_Mathematical Optimization - Fatal编程技术网

matlab中的非线性平方优化任务

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, 我已经创建

让我们假设我们有以下任务:找到权重的最佳值

使下列方程最小化

其中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, 我已经创建了一个矩阵

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权重也可以是负数,请发布完整的解决方案和答案?