gpt4 book ai didi

matlab - 将参数传递给目标函数 fmincon Matlab

转载 作者:行者123 更新时间:2023-12-02 04:50:28 27 4
gpt4 key购买 nike

我正在尝试最小化由约束变量以外的变量组成的目标函数。有没有办法将参数传递给这样的函数,例如:

data = xlsread('Returns.xlsx', 'Sheet2','A2:F324');

for i = 1:10
returns = data(i:i+59,1:5);
fund = data(i:i+59,6:6);
lb = [0;0;0;0;0];
ub = [1; 1; 1; 1; 1];
[betas, fval] = fmincon(@obj_function, [0 .2 .2 .2 .2 .2], [], [], [], [], lb, ub, @constraints);
end

目标函数定义为:

function [ value ] = obj_function(betas)
value = returns*betas(2:6) + betas(1);
value = sum((value - fund)^2);
end

由于我的目标函数需要额外的变量 returnsfund,我可以从主函数中继续传递它的最佳方式是什么?以下声明无效,我还能做什么?

[betas, fval] = fmincon(@obj_function(returns, fund), [.2 .2 .2 .2 .2], [], [], [], [], lb, ub , @constraints);

EXTRA,函数约束定义如下:

function [ c, ceq ] = constraints( betas )
c = [];
ceq = betas(2)*1 + betas(3)*1 + betas(4)*1 + betas(5)*1 + betas(6)*1 - 1;
end

最佳答案

使用匿名函数创建closures :

a = 1; b = 2;
[...] = fmincon(@(x) myObjFcn(x, a, b), ...)

这里是一个文档页面,更详细地解释了这一点:

Passing Extra Parameters

关于matlab - 将参数传递给目标函数 fmincon Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946407/

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