Главная страница  Программы проектирования 

[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.0284