0

我是一个业余的 Matlab 用户。我转向 Matlab,因为 excel 中的求解器限制了可以使用多少个变量。我正在尝试使用 Fmincon 最大化受约束的函数。但是,当我尝试运行它时出现错误。

我的代码是:

% Objective function m file:

function f = objectivefunction3(x)

f = -FinalAlphas*x'+ x*VCV*x'

% Code to run Fmincon:

[x, fval] = fmincon(@objectivefunction2,x0,A,B)

运行时出现以下错误:

Error in objectivefunction3 (line 2)

f = FinalAlphas*x'- x*VCV*x'

fmincon 中的错误(第 631 行)

4

1 回答 1

0

因此,您创建的函数似乎objectivefunction3只有一个输入参数,即x一个输出变量f

首先,我建议尝试自行运行您的功能,以检查它是否按您的意愿工作。因此,为此我认为您应该声明您在函数中声明的变量(即FinalAlphasand VCV)或将它们设为输入参数。选项 1(声明函数变量):

function f = objectivefunction3(x)

FinalAlphas = ... % put your values here
VCV = ... % put your values here
f = -FinalAlphas*x'+ x*VCV*x'

选项2(定义为输入参数):

function f = objectivefunction3(x,FinalAlphas,VCV)

f = -FinalAlphas*x'+ x*VCV*x'

看看你是否让它自己工作,然后尝试将它实现到fmincon.

于 2013-10-17T10:23:06.653 回答