![]() |
如何用matlab解决这样的非线性优化问题!
minf=-36962.04*cos(a)+15868.3*cos(a+b)-3385*cos(a+b+r)
s.t. g1=762.5*cos(a+b+r)-1260*cos(a)-1182.5*cos(a+b)+511.5-h=0; g2=1260*sin(a)-1182.5*sin(a+b)+762.5*sin(a+b+r)+1400=0; g3=a-60>=0; g4=a-180<=0; g5=b-64>=0; g6=b-180<=0; g7=r-64>=0; g8=r-180<=0; a,b,r的初始值为:a=160.06,b=64.94,r=147.5. h=150:50:3500,h每给一下值计算一次,以每次算出的解,即a,b,r,做为下次计算的初值,迭代计算。 关键是那个非线性等式约束中的h该如何处理,问了很多人都做不来,还望高手多多指点呀!!!!谢了先。 |
主程序
clc clear p0=[160.06 64.94 147.5]; a=[]; b=[]; aeq=[]; beq=[]; xl=[60 64 64]; xu=[180 180 180]; i=1; global h for h=150:50:3500 [p,fmin]=fmincon(@obcon,p0,a,b,aeq,beq,xl,xu,@constraint); c(i,1:3)=p; p0=p; i=i+1; end c 子程序 function [g u]=constraint(x) global h g=[]; u=762.5*cos(x(1)+x(2)+x(3))-1260*cos(x(1))-1182.5*cos(x(1)+x(2))+511.5-h+1260*sin(x(1))-1182.5*sin(x(1)+x(2))+762.5*sin(x(1)+x(2)+x(3))+1400; end function y=obcon(x) y=-36962.04*cos(x(1))+15868.3*cos(x(1)+x(2))-3385*cos(x(1)+x(2)+x(3)); |
先谢谢这位哥们了,很高兴你能回帖
不过,为什么运行的时候前面会出现很多警告,而且用两个非线性等式约束为什么要加在一起,我看书上好像是用分号隔开的! |
所有时间均为北京时间。现在的时间是 06:17。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.