⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flesim.for

📁 优化算法,是FORTRUN语言写。都经过了运行。
💻 FOR
字号:
	SUBROUTINE FLESIM(X,FX,N,FT,STEP,IT,IMOS,ICOVG)
	DIMENSION X(N),A(30,30),F(30)
	IF(IT.EQ.1) GO TO 87
	FT=0.0000001
87	ITER=0
	ALPHA=1.0
	BETA=0.5
	GAMA=2.0
	VN=FLOAT(N)
	K1=N+1
	K2=N+2
	K3=N+3
	K4=N+4
	D1=STEP/(VN*SQRT(2.0))*(SQRT(VN+1.)+VN-1.)
	D2=STEP/(VN*SQRT(2.0))*(SQRT(VN+1.)-1.)
	DO 1 J=1,N
1	A(1,J)=X(J)
	DO 2 I=2,K1
	DO 3 J=1,N
3	A(I,J)=D2+X(J)
	L=I-1
2	A(I,L)=D1+X(L)
	DO 10 I=1,K1
	DO 11 J=1,N
11	X(J)=A(I,J)
	CALL OBF(X,F(I))
10	CONTINUE
86	IF(ITER.EQ.IMOS) GO TO 85
	ITER=ITER+1
	FH=F(1)
	IH=1
	DO 20 I=2,K1
	IF(F(I).LE.FH) GO TO 20
	FH=F(I)
	IH=I
20	CONTINUE
	FL=F(1)
	IL=1
	DO 30 I=2,K1
	IF(FL.LE.F(I)) GO TO 30 
	FL=F(I)
	IL=I
30	CONTINUE
	DO 40 J=1,N
	S=0.0
	DO 41 I=1,K1
41	S=S+A(I,J)
	A(K2,J)=1./VN*(S-A(IH,J))
	A(K3,J)=(1.+ALPHA)*A(K2,J)-ALPHA*A(IH,J)
40	X(J)=A(K3,J)
	CALL OBF(X,F(K3))
	IF(F(K3).LT.FL) GO TO 60
	IF(IH.EQ.1) GO TO 51
	FS=F(1)
	GO TO 52
51	FS=F(2)
52	DO 53 I=1,K1
	IF(IH.EQ.I) GO TO 53
	IF(F(I).LE.FS) GO TO 53
	FS=F(I)
53	CONTINUE
	IF(F(K3).GT.FS) GO TO 54
	GO TO 55
60	DO 61 J=1,N
	A(K4,J)=(1.-GAMA)*A(K2,J)+GAMA*A(K3,J)
61	X(J)=A(K4,J)
	CALL OBF(X,F(K4))
	IF(F(K4).LT.FL) GO TO 66
	GO TO 55
54	IF(F(K3).GT.FH) GO TO 57
	DO 58 J=1,N
58	A(IH,J)=A(K3,J)
57	DO 59 J=1,N
	A(K4,J)=BETA*A(IH,J)+(1.-BETA)*A(K2,J)
59	X(J)=A(K4,J)
	CALL OBF(X,F(K4))
	IF(FH.GT.F(K4))GO TO 66
	DO 90 J=1,N
	DO 90 I=1,K1
90	A(I,J)=0.5*(A(I,J)+A(IL,J))
	DO 91 I=1,K1
	DO 62 J=1,N
62	X(J)=A(I,J)
91	CALL OBF(X,F(I))
	GO TO 86
66	DO 67 J=1,N
67	A(IH,J)=A(K4,J)
	F(IH)=F(K4)
	GO TO 76
55	DO 80 J=1,N
80	A(IH,J)=A(K3,J)
	F(IH)=F(K3)
76	DO 73 J=1,N
73	X(J)=A(K2,J)
	CALL OBF(X,F(K2))
	DIFER=0.0
	DO 74 I=1,K1
74	DIFER=DIFER+(F(I)-F(K2))*(F(I)-F(K2))
	DIFER=1./VN*SQRT(DIFER)
	IF(DIFER.GE.FT) GO TO 86
	FX=F(K2)
	ICOVG=1
	GO TO 88
85	ICOVG=-1
88	RETURN
	END 



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -