24小时热门版块排行榜    

查看: 833  |  回复: 0

hb189620

金虫 (小有名气)

[求助] matlab中fmincon优化计算中,非线性不等约束中出现目标函数变量该怎么处理,求助攻

% 声明全局变量
global l1  l2  m1  m2  R  gamma
% 变量赋值
l1=216;
l2=487.5;   
m1=16.5;  
m2=2.4;     
R=75;
gamma=pi/36;
% x(1),x(2)分别表示b,alpha的初始值
% x0为x的初始猜测值
x0=[200; pi/6];
% A,b为线性不等约束,A*x<=b
A=[];  b=[];
% Aeq,beq为线性相等约束,Aeq*x=beq
Aeq=[];  beq=[];   
% lb,ub分别为变量的上下边界
lb=[180;0];  ub=[350; pi/4];
% 求H的最大值等同于求(-H)的最小值,下面求解(-H)的最小值fval
[x,fval,exitflag,output]=fmincon(@Exam_fmincon_fun,x0,A,b,Aeq,beq,lb,ub,@myconfun)
b=x(1)
alpha=x(2)*180/pi
a=-fval  % Hmax为H的最大值

function Neg_H = Exam_fmincon_fun(x)
% 声明全局变量
global l1  l2  m1  m2  R  gamma
% x(1),x(2))分别表示b和alpha.
b=x(1);
alpha=x(2);
% 建立待求解函数(-H)
X0=(0.5*m1*l2+m2*l2+0.5*m2*l1*cos(gamma))/(m1+m2);  
Y0=(0.5*m2*l2*sin(gamma))/(m1+m2);  
beta=atan((Y0+R)/X0);
S1=X0^2+(Y0+R)^2*sin(beta)*sin(beta);
S2=sin(alpha)*sin(alpha)*(Y0+R)^2;
h=b*sqrt(S1/S2-1);
Neg_H=-h;
end

function [c,ceq]=myconfun(x)
% x(1),x(2)分别表示b和alpha.
global l1  l2  m1  m2  gamma R
b=x(1);
alpha=x(2);
% 建立待求解函数(-H)
X0=(0.5*m1*l2+m2*l2+0.5*m2*l1*cos(gamma))/(m1+m2);  
Y0=(0.5*m2*l2*sin(gamma))/(m1+m2);  
c(1)=2*sqrt(b^2+h^2)-l1*cos(gamma)-l2;
c(2)=X0*sin(alpha)-(R+Y0)*tan(alpha)*sin(alpha)-h;
ceq=[];
end

matlab中fmincon优化计算中,非线性不等约束中出现目标函数变量该怎么处理,求助攻
9`W0}@VNNP6OMQDA]70D8IC.png
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hb189620 的主题更新
信息提示
请填处理意见