如何使用fmincon作为fminbd与两个不同的变量
5次观看(过去30天)
显示旧注释
你好,
在尝试测试不同的RL模型时,我遇到了一个问题,我们通过一个函数“loglik”来定义模型,在这个函数中,我通过不同主题(I)的迭代定义不同的输入向量和值,我使用fminbnd来搜索最小值,即0和1的最小和最大极限。U和UU只是与来自两个不同代理的两个不同的数据向量有关。
hh = @(alpha)loglik_modelA(alpha,U,UU);
Aa (i) = fminbnd(hh,0,1);
你(我)= loglik_modelA (aa (i), U, UU);
这很好地工作了,但问题是当我们的模型有更多的参数时,比如说两个。我知道fminbnd被认为是一个单变量函数,我知道fmincon是一个函数,可以帮助我与多个变量。我已经尝试了基于上一段代码的这段代码,但它似乎不工作,因为我知道fmincon背后的逻辑可能略有不同。
hh = @(alpha1,alpha2)loglik_modelB(alpha1,alpha2,U,UU);
Aa (i) = fmincon(hh,alpha1,alpha2,0,1);我期望aa(I)是一个二维矩阵
你(我)= loglik_modelB (aa(我,1),aa(我,2),U, UU);
通常,alpha是与不同预测误差相关的参数,范围从0到1。
任何见解都将受到高度赞赏!
接受的答案
艾伦·韦斯
2021年7月9日
我觉得你应该明白这一点
fmincon
最小化具有单个参数的函数,通常称为
x
.的
x
参数可以有任意多的条目。举个例子,如果你的目标函数是三个变量的函数,
var1
,
var2
,
var3
,
var1
是一个标量(单个实参数),
var2
是25个元素的列向量,并且
var3
是一个25 × 25矩阵,那么你的目标函数是
x
看起来是这样的:
函数Val = myfun(x)
Var1 = x(1);
Var2 = x(2:26);
Var2 = Var2 (:);确保var2是列向量
Var3 = x(27:end);
Var3 =重塑(Var3,25,25);
现在用var1, var2和var3进行计算,得到val
当给定初始点x0时,它应该是1 +的列向量
% 25 + 25*25项
结束
祝你好运,
艾伦·韦斯
MATLAB数学工具箱文档