Главная страница Программы проектирования [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [ 89 ] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] с nPVWP ИСПОЛЭОВЙНИЯ ПВД11РВГР(«МЫ P0ISK2 BIHENSION X<l»),FX(ie),DX(ie) EXTERHftL FUN,COMP,0m- ВАТА N/2/, Х/-1,2,1./, DX/1.,1./, EPS/1.Е-5/, rE/5в•/ CMJ. POISK2(X,FX,N,l,DX,EPS,NFE,FUN,COrtP,0UT,l) STOP Е№1 С подпрогрм«у> ЕжислЕжя «пкиии SUBROUTINE FUN(X,Y) DIMENSION X<1),Y<1) Y(1)=1W.»<X(2)-X<1)»»2)»»2+(1.-X<1))»»2 RETURN С ПОДПРОГР( СУАЙНЕНИЯ КРИТЕРИЕВ С SmeOUTINE CO»*>(X,Y,FX,FY,N,M,IC) DIMENSION X<1),Y<1),FX(1),FY(1) lOl IF(ABS<Y<1)).QT.5..0R.ABS(Y(2)).QT.5.) RETURN IF(FY(1).LT.FX(1)) IC=2 RETURN С ПОДПРОГР( МОДА РЕЗУ*ТАТОВ С SmeOUTINE OUT(X,FX,N,M,NFE) DIMENSION X<1),FX<1) IFCNFE.EQ.l) PRINT 5,(I,I-1,N) PRINT ie,NFE,FX(l),(X(I),I=l,N) 5 F0RMAT(7X,NFE,3X,F(X)Meil2) 1» F0RMAT(Iie,ieE12.4) RETURN END С ПОДПРОГТ( P0ISK2 С SOBROUriNE P0ISK2(X,FX,N,M,DX,EPS,NFEMAX,FUN,COMP,0UT,I0UT) DIMENSION X(N),FX(M),DX(N),Y(l»),FY(l»),S<ie,l»),31(10,1»), ,Z(l),U(l),FZ(ie),FU(ie) С Y - РАБОЧИЙ mXMB РАЗМЕРОМ HE МЕНЕЕ N С FY,FZ,FU - РАБОЧИЕ МАССИВЫ РАЗМЕРОМ tC МЕНЕЕ М С S,S1 - PAECHtC МАССИВЫ РАЗМЕРОМ tC ftHEE <N,N) CALL FUN(X,FX) NFE=1 IFIOUT.NE.e) CALL OUT(X,FX,N,M,NFE) IF<N.NE.l) 00 TO 15 С ОДНОМЕРНЫЙ ПОИСК Y(1)=X(1)+DX<1) CALL FUN(Y,FY> NFE>*rE+l CALL COMP(X,Y,FX,FY,N,M,IC) 00 TO (3,1,1M),IC 1 AfX(1) X<1)=Y(1) Y(1)"A DO 2 1=1 ,M 2 FX(I)=4(I) 3 r(l)"X(l)+X(l)-Y(l) CALL ПИИ,ПУ NFE-TE+l"" CALL a»ff"(X,Z,FX,FZ,N,M,IC) 00 то (6,4,1»»).IC 4 X<1)=Z(1) no 5 1=1, И 5 FX(I>=FZ(I> IFtNKE.GT.hFEMAX) GO TO 1»« GO TO 3 CALL FLJN(U,FU) NFE:=trE+l Lti.L COMf-(X,U,FX,FU,N,rt,IC) GO TO (10,7,1O«J,1C 7 Z(1J=Y(1) 8 Г(1)=Х(1> X(1)=U(1) no Ч 1=1,И 9 FX(I>=FU(I> IF<I0UT.E0.1) CALL a)r(X,FX,(.,rt,(*E) GO TO 12 10 Y(1>=U(1) U(i)=x<i>+0.5«(za)-X(i)) CALL KLJN(U,FU) MFE=NFE+1 CALL C0MF4X,U,FX,FU,N,rt,iC) GO TO (11,8,100),1С 11 Z(1>=U<1> 12 IF(NFE.GE.bFEmX) GO ID 10* IFtA)EcS(Y(l>-Z(l)).LE;.№S(X(l))»EPS) GOTO 100 GO TO 6 мю-омерчий поиск 15 Ю 17 1=1,N Ю 16 J=1,N 16 S(I,J>=0. 17 S(I,1>=DX(I) 18 £0 70 1=1, N пробный IMF E=0. IO 2b J=1,N Y(J>=X(J>+S(J,I) 20 E=E+AEcS(Y( J)-X(J))/(ABS(X(J) >+l.E-l«> ЕСЛИ прирАиеНИЯ малы, окончить поиск IF<e.LE.EPS.С*,.M-"E.G£.NFEMAX) GO 10 100 CALL FUN(Y,FY) NFE=NFE+1 GArtA=l. CALL C0rtF4X,Y,FX,Fr,N,rt,IC) GO TO(25,45,100),IC если lUAF неудачен, прокныи ш в ObFATHOli направлении 25 lO 30 J=1,N 30 Y(J>-X(J)-S(J,I) CALL FUt(Y,rY) MFE=(FE+1 UArtA=-l. CALL C0MF4X,Y,FX,FY,N,H,IC> GO TO (35,45,100),1С OEA пробных ША1"А неудачны 35 GArtA=0.5 GO TO 60 спуск в ВЫЕГ-аннои «(правлении 40 GArV2.»GAm 45 IO 50 J=1,N X(J>=Y(J) 50 Y(J>=X(J>+GAV*»S(J,I) ro 55 >1,И 55 FX(J)=FY(J) IF(ABS<GAIiA>.GE.16.) GO TO 60 CALL FUN(Y,FY) NFE=NFE+1 CM.L COHP(X,Y,FX,FY,M,«,IC) GO TO (6в,4»,1в*),1С С УМНОЖЕНИЕ ВЕКТОРА «ПFABJCHИЯ НА ВЕЛИЧИНУ ШАГА (Л Ю 65 J=1,N IF(IDUT.EQ.l.AN£i.A£iS(GAriA).GT.0.u) CALL 1к)Г(Х,ГХ,Н,Н,№Т) 70 CONTINUE С ЦИКЛ ПО УПРАВЛЕНИЯМ ОКОНЧЕИ. УПНОЖЕНИЕ MirFmi с тПРАВДЕНИЙ S * OFTOTOiVbH/W НАГРИДУ G=l./SaRT(FL0AT(f4):i Ю 90 1=1, N IFd.EQ.l) GO ТО 75 G=l./SQRT<"L0AT((f-I+2)»(f-I+l))) Gl=FL0AT(r4-I+l)»G 75 Ш 85 J=1,N А=в. Ш 80 K=I,N 80 A=A+S(J,K> IF(I.NE.l) A=-G1»S(J,I-1)+A 85 S1(J,I>=A 90 CONTINUE no 95 1=1, N Ю 95 J=1,N 95 sa,J>=sia,J> с ПЕРЕХОД К СЛЕДУИИЕЙ ИТЕРАЦИИ GO TO 18 100 IF(IOUT.NE.»> CM.L OUT(X,FX,N,M,NFE> RETURN END OUT - ИМЯ подпрограммы, организующей вывод промежуточных результатов; ее параметры: X - текущее значение вектора параметров, FX - значение векторной функции в точке X, N - размерность вектора X, М - размерность вектора FX, NFE - число - вычислений щелевой фуякцИИ. Примечание. Подпрограмма СОМР может быть использована для организации диалога проектировщика и ЭВМ. Для этого следует организовать вывод на экран дисплея зна,чений FX, FY векторной целевой функции и ввод с клавиатуры дисплея числа 1С. В этом случае сравнение значений векторного критерия осуществляет проектировщик. Пример. Найдем точку минимума функции Розенброка (11.7) при ограничениях на параметры -5<л;{<5 (i=l, 2). Ограничения здесь не являются актив-иыми и включены в пример только для иллюстрации использования подпрограммы при решения задач с ограничениями. Подпрограмма P0ISK4 Назначение: нахождение точки минимума скалярной целевой функции. Обращение: CALL P0ISK4 (X, FX, N, DX, EPS, FM, NFEMAX, FUN. lOUT, OUT). Параметры; X - начальное значение вектора оптимизируемых параметров (на входе), полученное оптимальное значение вектора параметров (на выходе), FX - значеиие целевой функции при полученных оптимальных зна- чениях параметров, [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [ 89 ] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] 0.0114 |