matlab fgoalattain,Matlab fgoalattain使用问题

function f=myfuns(x)

f(1)=x(1)/1231.2;

f(2)=x(2)/4331.3;

f(3)=x(3)/4051.2;

f(4)=x(4)/1039.3;

f(5)=x(5)/1039.3;

f(6)=x(6)/2786.8;

f(7)=x(7)/402.8;

f(8)=x(8)/402.8;

f(9)=x(9)/3730.9;

f(10)=x(10)/1104.2;

f(11)=x(11)/4072.3;

f(12)=x(12)/1231.2;

f(13)=x(13)/1904.0;

f(14)=x(14)/2837.1;

f(15)=x(15)/2442.8;

f(16)=x(16)/1500.8;

f(17)=x(17)/1500.8;

f(18)=x(18)/2059.2;

f(19)=x(19)/972.4;

f(20)=x(20)/972.4;

f(21)=x(21)/2442.8;

f(22)=x(22)/1511.5;

f(23)=x(23)/2455.2;

f(24)=x(24)/1904.0;

f(25)=x(1)/1231.2+x(2)/4331.3+x(3)/4051.2+x(4)/1039.3+x(5)/1039.3+x(6)/2786.8+x(7)/402.8+x(8)/402.8+x(9)/3730.9+x(10)/1104.2+x(11)/4072.3+x(12)/1231.2;

f(26)=x(13)/1904.0+x(14)/2837.1+x(15)/2442.8+x(16)/1500.8+x(17)/1500.8+x(18)/2059.2+x(19)/972.4+x(20)/972.4+x(21)/2442.8+x(22)/1511.5+x(23)/2455.2+x(24)/1904.0;

f(27)=-(0.45*(x(1)+x(2)+x(3)+x(4)+x(5)+x(6)+x(7)+x(8)+x(9)+x(10)+x(11)+x(12))+0.55*(x(13)+x(14)+x(15)+x(16)+x(17)+x(18)+x(19)+x(20)+x(21)+x(22)+x(23)+x(24)));

goal=[1231.2 4331.3 4051.2 1039.3 1039.3 2786.8 402.8 402.8 3730.9 1104.2 4072.3 1231.2 1904.0 2837.1 2442.8 1500.8 1500.8 2059.2 972.4 972.4 2442.8 1511.5 2455.2 1904.0 0 0 37786.9 ];

weight=[1231.2 4331.3 4051.2 1039.3 1039.3 2786.8 402.8 402.8 3730.9 1104.2 4072.3 1231.2 1904.0 2837.1 2442.8 1500.8 1500.8 2059.2 972.4 972.4 2442.8 1511.5 2455.2 1904.0 0 0 37786.9 ];

x0=[1231.2 4331.3 4051.2 1039.3 1039.3 2786.8 402.8 402.8 3730.9 1104.2 4072.3 1231.2 1904.0 2837.1 2442.8 1500.8 1500.8 2059.2 972.4 972.4 2442.8 1511.5 2455.2 1904.0 0 0 37786.9];

%给出约束条件的系数

A=[1231.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;

0 1/4331.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 1/4051.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 1/1039.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 1/1039.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 1/2786.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 1/402.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 1/402.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 1/3730.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 1/1104.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 1/4072.3 0 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 1/1231.2 0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 1/1904.0 0 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 1/2837.1 0 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/2442.8 0 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/1500.8 0 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/1500.8 0 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/2059.2 0 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/972.4 0 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/972.4 0 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/2442.8 0 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/1511.5 0 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/2455.2 0;

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/1904.0];

b=[0.6; 0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6;0.6]

Aeq=[1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0;

0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0;

0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0;

0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0;

0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0;

0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0;

0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0;

0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0;

0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0;

0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0;

0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0;

0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1]

beq=[3027.9; 2931.6; 3181.5; 3197.0; 3197.0; 3204.8; 3223.3; 3223.3; 3203.8; 3212.6; 3025.9; 3158.1]

lb=zeros(24,1);

options=optimset('Display','iter' )

[x,fval,attainfactor]=fgoalattain(@myfuns,x0,goal,weight,A,b,Aeq,beq,lb,[],[],options)

提错信息:??? Error using ==> fgoalattain

Aeq has the wrong number of columns.

求助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以帮您解释一下MATLAB中的"fgoalattain"函数。 "fgoalattain"是MATLAB中的一个优化函数,用于求解具有多个目标函数的非线性最小化问题。该函数的基本语法如下: [x, fval, exitflag, output] = fgoalattain(fun, x0, goal, weight) 其中,各个参数的含义如下: - fun:指定一个函数句柄,该函数句柄用于计算目标函数值。 - x0:指定一个初始点,即算法从哪个点开始搜索最优解。 - goal:指定一个目标向量,该向量包含所有的目标函数值。 - weight:指定一个权重向量,用于对每个目标函数进行加权处理,以便在求解过程中平衡不同目标之间的优先级。 该函数返回的结果包括最优解x、目标函数值fval、退出标志exitflag和输出output。其中,退出标志用于指示算法是否成功收敛,输出对象可以用于查看算法的详细信息。 需要注意的是,该函数假定所有目标函数都应该被最小化,如果需要最大化某些目标函数,可以通过在目标函数前加上负号来实现。 希望这个解释可以帮到您! ### 回答2: Matlab中的fgoalattain是一个用于求解目标最小化问题的优化函数。它可以帮助用户在多维空间中找到一个最优化的解。fgoalattain函数的主要功能是寻找一个多元函数的最小值,并且要满足一定的约束条件。 在使用fgoalattain函数时,用户需要首先指定一个需要优化的目标函数,并且定义好所有的约束条件。目标函数和约束条件可以是一个函数表达式、一个M文件或一个内置函数。 fgoalattain函数具有许多参数,例如目标值、上限值、下限值、约束条件等等。其中,目标值是用户希望函数达到的最小值;上下限值是约束条件的取值范围;约束条件可以是等式约束或不等式约束。 fgoalattain函数的求解过程是基于梯度下降算法的。在求解过程中,算法会根据当前的解和导数信息向着目标值的方向迭代求解。当达到指定的精度和迭代次数后,算法将输出最优解和目标函数的值。 fgoalattain函数可以被广泛应用于许多问题的求解过程中,例如:优化电路设计、机器人控制、机器学习、图像处理等等。在使用fgoalattain函数时,用户需要妥善选择和设置参数,以确保函数的求解过程能够顺利进行。 ### 回答3: MATLABfgoalattain翻译为“达到目标函数”,是MATLAB优化工具箱中的一个函数,用于在满足一定约束条件下,寻求目标函数的最优解。fgoalattain函数可以用一般形式或分阶段形式表示优化目标,一般形式要求最小化或最大化一个目标函数,分阶段形式则要求最小化一个达成一系列目标的总成本。 使用fgoalattain函数需要指定目标函数和约束条件,并指定是否需要优化控制变量的上下限。在MATLAB中,fgoalattain函数是使用单目标非线性规划算法求解的,这种算法可以有效地解决目标函数具有非线性特点的问题使用fgoalattain函数进行优化需要掌握一些优化技巧。首先,需要定义合适的目标函数和约束条件,以追求最优解。其次,需要设置优化控制变量的上下限,以确保在搜索过程中不超出指定范围。最后,需要选择合适的优化算法和优化参数,以实现最佳的优化效果。 在实际应用中,fgoalattain函数可以用于含约束条件的优化问题,如供应链管理、工程控制等领域。通过对优化控制变量进行调整,可以得到最优的方案,并提高生产效率和经济效益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值