24小时热门版块排行榜    

查看: 3454  |  回复: 2

daydayuping

新虫 (初入文坛)

[求助] MATLAB用fmincon函数求最小优化问题,提示输入参数不足,求解答

如下是自己编写的一段程序,目的是想通过fmincon函数求优化求参数k;但是运行就出现问题,Sample Text
function f=fop(k)
S=[39.2486,18.6974,5.5453,12.0719,6.8712;21.3467,30.485,4.1298,15.0155,7.1906;53.3333,31.0388,6.4493,16.407,7.4912;55.3806,24.7649,3.9371,25.6651,7.0956;45.4191,16.4854,6.0034,23.342,7.5939;42.5722,20.3236,3.7494,21.9155,6.8254;31.3707,21.8137,4.3522,13.5309,6.9808;49.7532,28.9058,5.7443,24.999,6.6091;32.6931,14.9153,6.8971,17.3615,7.0777;26.6678,15.8494,3.4524,13.1626,7.4408;48.5182,18.8443,7.3267,28.9634,7.3066;36.088,26.5438,6.7461,26.9071,7.7217;28.8349,27.7746,5.2497,18.8,7.343;38.182,25.7221,4.8418,21.2241,6.72;23.5811,23.0133,4.9581,19.5143,7.6823];
%S样本数据(15*5)
Y=[0.132;0.155;0.636;0.963;0.648;0.534;0.123;0.854;0.225;0.015;0.948;0.734;0.345;0.504;0.268];%Y响应(15*1)
%k=[k(1),k(2),k(3),k(4),k(5)];%给定的系数,目前还未解决如何确定这个系数
F=ones(15,1);%采用x的0阶多项式
result = zeros(15*15,5);
for i = 1:15
for j = 1:15
result((i-1)*15+j,: ) = abs(S(i,: )-S(j,: ));%所有的S行元素两两相减,得到225*5
end
end
result_=(result').^2;%平方,得到5*225矩阵
R=exp(reshape(-[k(1),k(2),k(3),k(4),k(5)]*result_,15,15));%得到R(k;S)15*15,对角元素为1的对称矩阵
jeta=inv(F'*inv(R)*F)*F'*inv(R)*Y;%一个数
thetaz2=1/15*(Y-F*jeta)'*inv(R)*(Y-F*jeta);%一个数
       f=(abs(det(R)))^(1/15)*thetaz2;%函数表达式
  option=optimset;option.LargeScale='off';option.Display='off';
  k0=[1;1;1;1;1];lb=[0;0;0;0;0];%初值,下界
  [k,f]=fmincon('fop',k0,[],[],[],[],lb,[],[],option)
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

daydayuping

新虫 (初入文坛)

错误使用 fop (line 14)
输入参数的数目不足。
2楼2018-01-13 16:35:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chenglei2

银虫 (小有名气)

引用回帖:
2楼: Originally posted by daydayuping at 2018-01-13 16:35:11
错误使用 fop (line 14)
输入参数的数目不足。

我也碰到输入参数不足的问题,请问楼主解决了么?
我走的很慢,可我从不后退。
3楼2019-09-16 21:02:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 daydayuping 的主题更新
信息提示
请填处理意见