gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:30:01 24 4
gpt4 key购买 nike

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

enter image description here

使以下方程最小化

enter image description here

其中 var-means 给定 x1 变量的方差,我们也有约束这些权重的总和应该等于 1
enter image description here

我已经初始化了初始点的匿名函数和权重

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)求值为 double 标量,而不是函数句柄。 fmincon将希望使用 w 的当前值评估此函数来检查解决方案的质量,所以它需要一种方法来提供 w作为输入。

因此,您需要

  • 将函数定义更改为 f(w,x1,x2) , IE。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 之间,在这种情况下您仍然需要一个约束)。

    关于matlab - matlab中的非线性平方优化任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37000281/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com