matlab 优化工具箱

来源:百度知道 编辑:UC知道 时间:2024/06/08 19:28:21
请各位高手麻烦看一下下面的程序,书上是这样写的,但运行一直有错,应该怎么改呢?
菜鸟急求正解
function f=y(x)
f(1)=10-0.0116*x(2)-0.0185*x(3)-0.0194*x(5)-0.0302*x(6)-0.1013*x(8)-0.0162*x(9);
f(2)=24-0.0399*x(1)-0.02924*x(2)-0.02376*x(3)-0.0665*x(4)-0.04896*x(5)-0.03996*x(6)-0.0342*x(7)-0.0255*x(8)-0.02079*x(9);
f(3)=36.5-0.042*x(1)-0.043*x(2)-0.044*x(3)-0.07*x(4)-0.072*x(5)-0.074*x(6)-0.0365*x(7)-0.0375*x(8)-0.0385*x(9);
f(4)=350-1.176*x(1)-0.516*x(2)-0.264*x(3)-1.96*x(4)-0.864*x(5)-0.444*x(6)-1.008*x(7)-0.45*x(8)-0.231*x(9);
A=[0.042,0,0,0.07,0,0,0.0365,0,0;
0,0.043,0,0,0.072,0,0,0.0375,0;
0,0,-0.044,0,0,-0.074,0,0,-0.0385;
0,0,0.044,0,0,0.074,0,0,0.0385;
1,1,1,0,0,0,0,0,0;
0,0,0,1,1,1,0,0,0;
0,0,0,0,0,0,1,1,1];
b=[4,23,-14,16,310,310,150]';
goal=[0.001,0.001,0.001,0.001]';
weight=abs(goal);
lb=0;
x0=[10,10,10,10,10,10,10,10,10]';
x=fgoalattain(‘f’,x0,goal,weight,A,b,[],[],lb,[]);
显示的是??? Error using ==

在matlab命令窗口中输入:edit,然后将下列两行百分号之间的内容复制进去,保存。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function f=y(x)
f(1)=10-0.0116*x(2)-0.0185*x(3)-0.0194*x(5)-0.0302*x(6)-0.1013*x(8)-0.0162*x(9);
f(2)=24-0.0399*x(1)-0.02924*x(2)-0.02376*x(3)-0.0665*x(4)-0.04896*x(5)-0.03996*x(6)-0.0342*x(7)-0.0255*x(8)-0.02079*x(9);
f(3)=36.5-0.042*x(1)-0.043*x(2)-0.044*x(3)-0.07*x(4)-0.072*x(5)-0.074*x(6)-0.0365*x(7)-0.0375*x(8)-0.0385*x(9);
f(4)=350-1.176*x(1)-0.516*x(2)-0.264*x(3)-1.96*x(4)-0.864*x(5)-0.444*x(6)-1.008*x(7)-0.45*x(8)-0.231*x(9);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

返回matlab命令窗口,输入以下命令,应当就有结果了。
A=[0.042,0,0,0.07,0,0,0.0365,0,0;
0,0.043,0,0,0.072,0,0,0.0375,0;
0,0,-0.044,0,0,-0.074,0,0,-0.0385;
0,0,0.044,0,0,0.074,0,0,0.0385;
1,1,1,0,0,0,0,0,0;
0,0,0,1,1,1,0,0,0;
0,0,0,0,0,0,1,1,1];
b=[4,23,-14,16,310,310,150]';
goal=[0.001,0.001,0.001,0.001]';
weight=abs(goal);
lb=0;