繁体   English   中英

MATLAB中针对成本函数的约束优化,其中传递了额外的参数

[英]Constrain optimization in MATLAB for cost function which have extra parameter passing to it

我是一位不熟悉MATLAB的电气工程师。 我的问题是,当我调用“ fmincon”命令时,如何传递用于计算成本函数的其他变量。 首先,我首先创建一个成本函数名称“ Sum_Square_error.m”,以根据估计的输出(使用神经网络进行估计的输出)和实际输出计算平方和误差。在此函数中,我将使用训练好的火车网络的权重乘以收缩系数矩阵(c),并将其称为“ modify_input_weight”。 然后我用Modify_input_weight评估神经网络,从而得到估计输出。 之后,我得到平方和错误。 我的目标是通过使用收缩系数矩阵(c)来调整神经网络的权重,以将Sum_square_error最小化。

我已经阅读了“ fmincon”功能参考。 我可以通过三种方法传递额外的参数:1.匿名函数2.嵌套函数3.全局变量对于这种问题,哪种方法最合适。 我试图像这样使用匿名函数

------------------------------------------- Sum_Square_error.m ---- -------------------------------------------------- -f = @(c)Sum_Square_error(c,input_weight,X_test,Y_test);

for i=1:10

    modify_input_weight(:,i) = c(i,1)*input_weight(:,i);

end

net.IW{1,1}= modify_input_weight;   
y = net(X_test);
e = gsubtract(Y_test,y);
f = sum(e)^2;     

结束

--------------------------------------------------主程序------------------------------------------------ ----------

A  = ones(1,10);
b  = s;
lb = zeros(1,10); 
[c,fval] = fmincon(@Sum_Square_error,c0,A,b,[],[],lb,[]); 

但是在我尝试运行此程序后,它显示了许多错误消息。 有人可以帮我传递“ c,input_weight,X_test,Y_test”来优化此成本函数。

Sum_Square_error.mSum_Square_error.m声明匿名函数使其成为常规函数,因此请更改

f = @(c) Sum_Square_error(c,input_weight,X_test,Y_test);

function f = Sum_Square_error(c,input_weight,X_test,Y_test)

现在在您的主体中,当您说@fun时,您实际上需要显式地传递参数

fmincon(@Sum_Square_error(c,input_Weight,X_test,Y_test),c0,A,b,[],[],lb,[]); 

在这里用实际数据替换c,input_Weight,X_test,Y_test

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM