Материалы сайта
Это интересно
Оптимизация режимов движения судов с использованием MATLAB 5.0
Оптимальные режимы работы судовых генераторных агрегатов Цель работы. Найти оптимальное распределение мощности между дизель-генераторами. Программа. %Исходные данные delt=10; P1=0:delt:50; P2=0:delt:70; P3=0:delt:80; F1=(0.03*(P1.^2)+2*P1+80); F2=(0.015*(P2.^2)+1.45*P2+100); F3=(0.01*(P3.^2)+0.95*P3+120); %Решение for T=1:2; r1=size(F1); r2=size(F2); if r1(2)<=r2(2) N=r1(2);M=r2(2); else N=r2(2);M=r1(2); end [x,y]=meshgrid(F1,F2); z=x+y; M N X=rot90(z,3); XX=[];IM=[];IM3=[]; for cc=-(N-1):(M-1); [v,I]=min(diag(X,cc)); XX=[XX v]; if cc<=-1 IM3=[IM3 abs(cc-I)]; else IM=[IM I]; end IMM=[IM3 IM]; end X1=rot90(XX,2); IM1=rot90(IMM,2); Opt1=[X1;IM1.*delt-delt]; r=size(X1); v1=1:r(2); P=v1.*delt; Opt2=[Opt1;P-delt]; Opt=[Opt2(1,:);Opt2(2,:);Opt2(3,:)-Opt2(2,:);Opt2(3,:)] F2=Opt(1,:); F1=F3; end Результат. M = 8 N = 6 Opt = 180 196 215 237 260 285 313 342 373 407 442 483 530 0 0 0 0 10 10 10 20 20 20 30 40 50 0 10 20 30 30 40 50 50 60 70 70 70 70 0 10 20 30 40 50 60 70 80 90 100 110 120 M = 13 N = 9 Opt = Columns 1 through 7 300.0000 310.5000 323.0000 337.5000 353.5000 370.0000 388.5000 0 10.0000 20.0000 30.0000 30.0000 40.0000 50.0000 0 0 0 0 10.0000 10.0000 10.0000 0 10.0000 20.0000 30.0000 40.0000 50.0000 60.0000 Columns 8 through 14 407.5000 428.0000 450.0000 472.5000 495.5000 520.0000 545.0000 50.0000 60.0000 60.0000 70.0000 70.0000 80.0000 80.0000 20.0000 20.0000 30.0000 30.0000 40.0000 40.0000 50.0000 70.0000 80.0000 90.0000 100.0000 110.0000 120.0000 130.0000 Columns 15 through 21 573.0000 602.0000 633.0000 667.0000 702.0000 743.0000 790.0000 80.0000 80.0000 80.0000 80.0000 80.0000 80.0000 80.0000 60.0000 70.0000 80.0000 90.0000 100.0000 110.0000 120.0000 140.0000 150.0000 160.0000 170.0000 180.0000 190.0000 200.0000 Также существует второй метод решения этой задачи, который представлен в программе ниже. Программа. %Исходные данные delt=10; P1=0:delt:50; P2=0:delt:70; P3=0:delt:80; F1=(0.03*(P1.^2)+2*P1+80); F2=(0.015*(P2.^2)+1.45*P2+100); F3=(0.01*(P3.^2)+0.95*P3+120); %Решение FA=F1; FB=F2; for j=1:2; e1=size(FA); N=e1(2); e2=size(FB); M=e2(2); [x,y]=meshgrid(FA,FB); z=x+y Dmin=[]; D1min=[]; D2min=[]; Im=[]; I1m=[]; I2m=[]; for k=1:M+N-1; if k<=N DD=[]; for i=k:-1:1; g=z(i,k-i+1); DD=[DD g]; end [L,I]=min(DD); Dmin=[Dmin L]; Im=[Im I]; elseif (N