MATLAB解多目标问题的程序(80分报酬)

MATLAB解多目标问题的程序(80分报酬),第1张

可以用闷困州fminimax指令。

第一蚂蔽步:function F=myfun111(x)

x0=x(1)

x1=x(2)

x2=x(3)

x3=x(4)

x4=x(5)

x5=x(6)

F=[143208*(3500*x0+1200*x1+650*x2+500*x3+300*x4+20*x5)/(3.35*x0+2.45*x1+x2+0.8*x3+0.5*x4+0.36*x5)...

-(143208*(27500*x0+15000*x1+7500*x2+4000*x3+1500*x4+200*x5)/(3.35*x0+2.45*x1+x2+0.8*x3+0.5*x4+0.36*x5))...

-(143208*(288.09*x0+167.57*x1+137.91*x2+194.69*x3+295.52*x4)/(3.35*x0+2.45*x1+x2+0.8*x3+0.5*x4+0.36*x5))...

143208*0.05*9.1672/(3.35*x0+2.45*x1+x2+0.8*x3+0.5*x4+0.36*x5)...

x1+2*x2+3*x3+4*x4+5*x5]

第二尺态部:

function [c ceq]=myfun112(x)

x0=x(1)

x1=x(2)

x2=x(3)

x3=x(4)

x4=x(5)

x5=x(6)

ceq=[x0+x1+x2+x3+x4+x5-1x4+x5-0.618]

c=[-143208/(3.35*x0+2.45*x1+x2+0.8*x3+0.5*x4+0.36*x5)+160000-x0*143208/(3.35*x0+2.45*x1+x2+0.8*x3+0.5*x4+0.36*x5)+5500...

x1-0.025...

x0-0.03...

-x3+.17...

-x5+.19]

end

第三部

[x y]=fminimax(@myfun111,x,[],[],[],[],[],[],@myfun112)

functionvu=get_mask()//定义函数VUbg=imread('tu\\131.jpg')//读入图片131.jpgbg=rgb2gray(bg)//将图片转换为灰度图像bg=im2bw(bg,graythresh(bg))//再转换为二值图,阈值是对灰度图像用最大类间方差法得到的Img=imread('tu\\1.jpg')//读入图片1.JPGI=rgb2gray(Img)//转换为灰度图I=im2bw(I,graythresh(I))//转换为二值图bw=I//歼伏L=bwlabel(I)//从黑背景甄别白块,返回和I相同大小的图像Lstats=regionprops(L,'Area')//统计被标记白块的区域的总面积Ar=cat(1,stats.Area)//按列连接矩阵[mr,ind]=max(Ar)//找到Ar中那些最大值的索引位置,将基改橘他们放在向量ind中I(L~=ind)=0//I中L与ind不搏团相等的位置赋值为零vu=imfill(I,'holes')//将原图填充孔洞

function cat_mouse

clear

clc

mov=avifile('cat_mouse.avi')

ts=0:0.005:0.5

x0=[0,0]

[t,x]=ode45(@cat_m,ts,x0)

n=length(x)

figure(1)

plot(0,0,'.')

hold on

h1=line( 'Color' ,[0 0 1], 'Marker' , '.' , 'MarkerSize' ,40, 'EraseMode' , 'xor' )

h2=line(15,0,'MarkerFaceColor',[0 1 0],'段薯Marker','h', 'MarkerSize' ,15, 'EraseMode' , 'xor')

plot(15,0,'.')

line([15 15],[0 11],'LineWidth',2)

axis equal

axis([0 16 0 11])

title('猫追耗子动画演示')

for i=1:n-1

plot(x([i i+1],1),x([i i+1],2))

set(h1, 'xdata' ,x(i+1,1), 'ydata' ,x(i+1,2))

set(h2, 'xdata' ,15, 'ydata' ,20*t(i+1))

drawnow% 刷新屏幕

pause(0.005)

f=getframe(gcf)

mov=addframe(mov,f)

end

hold off

mov=close(mov)

后面是子程序

function dx=cat_m(t,x)

a=20b=40c=15

s=sqrt((c-x(1))^2+(a*t-x(2))^2)

dx=[b*(c-x(1))/sb*(a*t-x(2))/s]

上次看到一橘颂个网友做的猫捉老鼠的实现,其实就是握伍者导d追踪问题


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12507724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存