READ n, k, kg, ep
  DIM x(n), x0(n), bl(n), bu(n), xh(n), xr(n)
  DIM xcom(n, k), fxk(k), g(kg)
  FOR i = 1 TO n: READ bl(i), bu(i): NEXT i
  nf = 0: ng = 0: nr = 0
  GOSUB 300
  PRINT "###########################"
  PRINT "optimum results:"
  PRINT "             Fmin="; F
  FOR i = 1 TO n
  PRINT "               x("; i; ")="; x(i)
  NEXT i
  PRINT "#################################"
  END
  DATA 2,4,5,1E-03
  DATA 0,6,0,8
300   'subprogram of complex optimum method
rm = 2657862!
320 FOR i = 1 TO n
GOSUB 1400: x(i) = bl(i) + q * (bu(i) - bl(i))
NEXT i
GOSUB 2800: IF iw = 0 THEN 320
FOR i = 1 TO n: xcom(i, 1) = x(i): NEXT i
FOR l = 2 TO k
FOR i = 1 TO n
GOSUB 1400: xcom(i, l) = bl(i) + q * (bu(i) - bl(i))
NEXT i, l
lh = 0
FOR ll = 1 TO k - 1
GOSUB 1000: FOR i = 1 TO n: x(i) = x0(i): NEXT i
GOSUB 2800: IF iw = 0 THEN 320
FOR i = 1 TO n: x(i) = xcom(i, ll + 1): NEXT i
460 GOSUB 2800: IF iw = 1 THEN 510
FOR i = 1 TO n: x(i) = x0(i) + .5 * (x(i) - x0(i)): NEXT i
GOTO 460
510 FOR i = 1 TO n: xcom(i, ll + 1) = x(i): NEXT i
NEXT ll
FOR l = 1 TO k
FOR i = 1 TO n: xcom(i, l) = x(i): NEXT i
GOSUB 2000: fxk(l) = fx
NEXT l
it = 0
580 it = it + 1: PRINT : PRINT
PRINT "++++iteration compute++++"
PRINT "iter="; it
lh = 0: ll = k: GOSUB 1000
FOR i = 1 TO n: x(i) = x0(i): NEXT i
GOSUB 2000: fx0 = fx
GOSUB 2800
PRINT "Fmid="; fx0
PRINT "Xmid=";
FOR i = 1 TO n: PRINT x0(1); : NEXT i
PRINT : PRINT "Gmid=";
FOR i = 1 TO kg: PRINT g(i); : NEXT i
sdx = 0
FOR l = 1 TO k: sdx = sdx + (fx0 - fxk(l)) ^ 2: NEXT l
sdx = SQR(sdx / k)
IF sdx <= ep THEN 960
GOSUB 1200: lh = 1
750 fxh = fxk(lh)
FOR i = 1 TO n: xh(i) = xcom(i, lh): NEXT i
ll = k: GOSUB 1000
FOR i = 1 TO n: x(i) = x0(i): NEXT i
GOSUB 2800: IF iw = 0 THEN 920
alp = 1.3
810 FOR i = 1 TO n
xr(i) = x0(i) + alp * (x0(i) - xh(i))
NEXT i
FOR i = 1 TO n: x(i) = xr(i): NEXT i
GOSUB 2800
IF iw = 0 THEN alp = .5 * alp: GOTO 810
GOSUB 2000: fxr = fx
IF fxr < fxh THEN 900
IF alp > .0001 THEN alp = .5 * alp: GOTO 810 ELSE lh = lh + 1
IF lh <= 3 THEN 750
900 FOR i = 1 TO n: xcom(i, lh) = xr(i): NEXT i
fxk(lh) = fxr: GOTO 580
920 FOR i = 1 TO n
bl(i) = xcom(i, k): bu(i) = x0(i): NEXT i
GOTO 320
960 FOR i = 1 TO n: x(1) = x0(i): NEXT i
GOSUB 2000: F = fx
RETURN
1000 FOR i = 1 TO n
xs = 0
FOR l = 1 TO ll
IF l = lh THEN 1060
xs = xs + xcom(i, l)
1060 NEXT l
IF lh > 0 THEN x0(i) = xs / (ll - 1) ELSE x0(i) = xs / ll
NEXT i
RETURN
1200 FOR l = 1 TO k - 1
FOR lp = 1 TO k - l
lp1 = lp + 1
IF fxk(lp) > fxk(lp1) THEN 1300
w = fxk(lp): fxk(lp) = fxk(lp1): fxk(lp1) = w
FOR i = 1 TO n
x(i) = xcom(i, lp): xcom(i, lp) = xcom(i, lp1)
xcom(i, lp1) = x(i)
NEXT i
1300 NEXT lp, l
RETURN
1400
nr = nr + 1
r1 = 2 ^ 35 * RND: r2 = 2 ^ 36 * RND: r3 = 2 ^ 37 * RND: rm = 5 * rm
IF rm >= r3 THEN rm = rm - r3
IF rm >= r2 THEN rm = rm - r2
IF rm >= r1 THEN rm = rm - r1
q = rm / r1
2000 REM objective function
nf = nf + 1
fx = x(1) ^ 2 + x(2) ^ 2 - x(1) * x(2) - 10 * x(1) - 4 * x(2) + 60
RETURN
2800 'constraints
ng = ng + 1
g(1) = x(1)
g(2) = x(2)
g(3) = 6 - x(1)
g(4) = 8 - x(2)
g(5) = 11 - x(1) - x(2)
FOR jj = 1 TO kg
IF g(jj) >= 0 THEN 2900
GOTO 2920
2900 NEXT jj
iw = 1: RETURN
2920 iw = 0: RETURN

这是优化设计里的复合形优化程序,运行后x(1)x(2)结果显示一样,是怎么回事?谢谢!