matlab怎么输入目标函数,刚接触matlab 调用M文件问题首先在Matlab优化工具箱中编写目标函数的M文件 myfun.m,返回x处的函数值f:function f = myfun(x)f=0...

b357216499010bdf2c78f9eb61d172be.png刚接触matlab 调用M文件问题首先在Matlab优化工具箱中编写目标函数的M文件 myfun.m,返回x处的函数值f:function f = myfun(x)f=0.785398*(4.75*x(1)*x(2)^2*x(3)^2+85*x(1)*x(2)*x(3)^2-85*x(1)*x(3)^2+0.92*x(1)*x(6)^2-x(1)*x(5)^

2016-12-11

刚接触matlab 调用M文件问题

首先在Matlab优化工具箱中编写目标函数的M文件 myfun.m,返回x处的函数值f:

function f = myfun(x)

f=0.785398*(4.75*x(1)*x(2)^2*x(3)^2+85*x(1)*x(2)*x(3)^2-85*x(1)*x(3)^2+0.92*x(1)*x(6)^2-x(1)*x(5)^2+0.8*x(1)*x(2)*x(3)*x(6)-1.6*x(1)*x(3)*x(6)+x(4)*x(5)^2+x(4)*x(6)^2+28*x(5)^2+32*x(6)^2)

由于约束条件中有非线性约束,故需要编写一个描述非线性约束条件的M文件myobj.m:

function[c,ceq]=myobj(x)

c=[17-x(2);0.9-x(1)/(x(2)*x(3));x(1)/(x(2)*x(3))-1.4;2-x(3);x(2)*x(3)-300;100-x(5);x(5)-150;130-x(6);x(6)-200;x(1)+0.5*x(6)-x(4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用fmincon工具箱进行优化的基本步骤如下: 1. 确定需要优化目标函数和约束条件,并将其表示为matlab函数,例如: ```matlab function [f,g] = myfun(x) f = x(1)^2 + x(2)^2; g = [x(1) + x(2) - 1, x(1) - x(2) + 2]; end ``` 其,f是目标函数,g是约束条件的。在此例目标函数是x1^2 + x2^2,约束条件是x1 + x2 ≤ 1和x1 - x2 ≥ -2。 2. 设置优化问题的初始解和其他参数,例如: ```matlab x0 = [1,1]; % 初始解 lb = [0,0]; % 变量下限 ub = [inf,inf]; % 变量上限 A = []; % 线性约束矩阵 b = []; % 线性约束向量 Aeq = []; % 等式约束矩阵 beq = []; % 等式约束向量 options = optimoptions('fmincon','Display','iter'); % 设置优化参数 ``` 其,x0是初始解,lb和ub是变量的下限和上限,A和b是线性约束条件,Aeq和beq是等式约束条件,options是优化参数,这里设置为显示每次迭代的优化信息。 3. 调用fmincon函数进行优化,例如: ```matlab [x,fval] = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,[],options); ``` 其,@myfun表示目标函数和约束条件所在的函数句柄,x是优化得到的最优解,fval是目标函数在最优解。 完整的代码如下: ```matlab function [x,fval] = myoptim() x0 = [1,1]; % 初始解 lb = [0,0]; % 变量下限 ub = [inf,inf]; % 变量上限 A = []; % 线性约束矩阵 b = []; % 线性约束向量 Aeq = []; % 等式约束矩阵 beq = []; % 等式约束向量 options = optimoptions('fmincon','Display','iter'); % 设置优化参数 [x,fval] = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,[],options); % 进行优化 end function [f,g] = myfun(x) f = x(1)^2 + x(2)^2; % 目标函数 g = [x(1) + x(2) - 1, x(1) - x(2) + 2]; % 约束条件 end ``` 在matlab命令窗口运行myoptim函数即可得到优化结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值