??
字號:
調試通過
變量含義:
N--維數
k--頂點數
E--復合形法精度
DL--映射系數的最小值(.01??)
AL0-初始映射系數(1~1.3)
A、B--產生隨機初始頂點的上下變量
KG--約束總數
X01 X02設計變量
有“!!!!”處語句為用戶應該修改的部分
400 REM MAIN PROGRAM
401 PRINT "INPUT:N,K,E,DL,AL0,A,B,KG"
402 INPUT N,K,E,DL,AL0,A,B,KG
404 DIM AA(N),BB(N),R(N,K),XX(N,K),X(N),XS(N),F(K),X0(N),XH(N),XR(N),XSH(N),G(KG)
406 PRINT "PRIMAL DATA"
408 PRINT "N=";N,"K=";K,"E=";E,"DL=";DL,"AL0=";AL0
409 PRINT "A=";A,"B=";B,"KG=";KG
410 GOSUB 4800
412 PRINT "OPTIMUM RESUTS"
414 PRINT "X1=";X(1),"X2=";X(2),"F=";F:REM !!!
420 END
4800 REM FILE NAME;COM
4803 Z=0
4806 FOR I=1 TO N
4809 AA(I)=A:BB(I)=B
4812 NEXT I
4815 FOR J=1 TO K
4818 FOR I=1 TO N
4821 R(I,J)=RND(1)
4824 NEXT I
4827 NEXT J
4830 FOR J=1 TO K
4833 FOR I=1 TO N
4836 XX(I,J)=AA(I)+R(I,J)*(BB(I)-AA(I))
4839 NEXT I
4842 NEXT J
4845 M=0
4848 FOR J=1 TO K
4851 FOR I=1 TO N
4854 X(I)=XX(I,J)
4857 NEXT I
4860 GOSUB 8000
4863 FOR L=1 TO KG
4866 IF G(L)<0 THEN 4871
4869 NEXT L:GOTO 4874
4871 M=M+1
4872 NEXT J
4873 IF M=K THEN 4815
4874 FOR J=1 TO K
4875 FOR I=1 TO N
4876 X(I)=XX(I,J)
4877 NEXT I
4878 GOSUB 8000
4879 FOR L=1 TO KG
4880 IF G(L)<0 GOTO 4890
4881 NEXT L
4882 FOR I=1 TO N
4883 C=XX(I,1)
4884 XX(I,1)=X(I)
4885 XX(I,J)=C
4886 NEXT I
4887 GOTO 4897
4890 NEXT J
4897 FOR J=2 TO K
4899 FOR I=1 TO N
4902 X(I)=XX(I,J)
4905 NEXT I
4908 GOSUB 8000
4911 FOR L=1 TO KG
4914 IF G(L)<0 GOTO 4920
4917 NEXT L:GOTO 4948
4920 Q=J
4926 FOR I=1 TO N
4927 D=0
4929 FOR L=1 TO Q-1
4932 D=D+XX(I,L)
4935 NEXT L
4938 XS(I)=D/(Q-1)
4940 XX(I,Q)=XS(I)+(XX(I,Q)-XS(I))/2
4941 X(I)=XX(I,Q)
4944 NEXT I:GOSUB 8000
4945 FOR L=1 TO KG
4946 IF G(L)<0 GOTO 4926
4947 NEXT L
4948 NEXT J
4950 FOR J=1 TO K
4953 FOR I=1 TO N
4956 X(I)=XX(I,J)
4959 NEXT I
4962 GOSUB 8000
4965 F(J)=FX
4968 NEXT J
4971 FH=F(1)
4974 FOR J=1 TO K
4977 IF F(J)<FH THEN 4983
4980 FH=F(J):H=J
4983 NEXT J
4986 FL=F(1)
4989 FOR J=1 TO K
4992 IF F(J)>FL THEN 4998
4995 FL=F(J):L=J
4998 NEXT J
5001 P=0
5004 FOR J=1 TO K
5007 P=P+(F(L)-F(J))^2
5010 NEXT J
5013 IF P<=E THEN 5130
5016 AL=AL0
5019 FOR I=1 TO N
5022 X0(I)=0:XR(I)=0
5025 FOR J=1 TO K
5028 X0(I)=X0(I)+XX(I,J)
5031 NEXT J
5034 XH(I)=XX(I,H)
5037 X0(I)=(X0(I)-XH(I))/(K-1)
5040 NEXT I
5043 FOR I= 1 TO N
5046 XR(I)=X0(I)+AL*(X0(I)-XH(I))
5049 X(I)=XR(I)
5052 NEXT I
5055 GOSUB 8000:FR=FX
5058 FOR M=1 TO KG
5061 IF G(M)>=0 GOTO 5067
5064 GOTO 5070
5067 NEXT M
5068 GOTO 5073
5070 AL=AL/2
5071 GOTO 5043
5073 FOR I=1 TO N
5076 X(I)=XH(I)
5079 NEXT I:GOSUB 8000:FH=FX
5082 IF FR<FH THEN 5118
5085 IF AL>DL GOTO 5070
5091 FF=F(1):F(1)=FH:F(H)=F(1)
5094 FSH=F(2)
5097 FOR J=2 TO K
5100 IF F(J)<FSH THEN 5106
5103 FSH=F(J):SH=J
5106 NEXT J
5109 FOR I=1 TO N
5112 XX(I,H)=XX(I,SH)
5115 NEXT I:GOTO 5019
5118 FOR I=1 TO N
5121 XX(I,H)=XR(I)
5124 NEXT I
5127 Z=Z+1:GOTO 4950
5130 FOR I=1 TO N
5133 X(I)=XX(I,L)
5136 NEXT I
5139 F=FL
5142 RETURN
8000 FX= ((X(1)-3)^2-9)*X(2)^3/27/SQR(3):REM !!!
8004 G(1)=X(1)+SQR(3)*X(2):REM !!!
8006 G(2)=X(1)/SQR(3)-X(2):REM !!!
8008 G(3)=-X(1)-SQR(3)*X(2)+6:REM !!!
8010 G(4)=X(1):REM !!!
8012 G(5)=X(2):REM !!!
8020 RETURN
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -