📄 sub output.for
字号:
SUBROUTINE OUTPUT(N,ME,MI,M,NAMAX,X,U,OFUN,CFUN,OGRA,CGRA,
* LGRA,PPRA,PFUN,INDEX,QPINDX,IT,NQP,NF,NG,ITQP)
DOUBLE PRECISION X(N),U(M),OFUN,CFUN(M),OGRA(N),CGRA(NAMAX,M),
* LGRA(N),PPRA,PFUN
INTEGER QPINDX
WRITE(6,100)
100 FORMAT(//'',55('*')/'','*',14X,'COMPUTATIONAL RESULTS',14X,
* '*'/'',55('*'))
IF (INDEX.EQ.0)THEN
WRITE(6,110)
110 FORMAT(/'OPTIMAL SOLUTION:')
ELSEIF(INDEX.EQ.1)THEN
WRITE(6,120)
120 FORMAT(/'INDEX=1---'
* /'KUHN-TUCKER CONDITIONS ARE SATISFIED WITH DESIRABLE'
* /'ACCURACY,BUT THE AMOUNT OF DECREASE IN THE PENALTY'
* /'FUNCTION VALUE IS STILL LARGE AFTER ITERATION LIMIT')
ELSEIF(INDEX.EQ.2)THEN
WRITE(6,130)
130 FORMAT(/'INDEX=2---'
* /'THE AMOUNT OF DECREASE IN THE PENALTY FUNCTION VALUE'
* /'IS SUFFICIENTLT SMALL,BUT KUHN-TUCKER CONDITIONS HAVE'
* /'NOT BEEN SATISFIED WITH DESIRABLE ACCURACY AFTER'
* /'ITERATION LIMIT')
ELSEIF(INDEX.EQ.3)THEN
WRITE(6,140)
140 FORMAT(/'INDEX=3---'
* /'NOT ONLY THE AMOUNT OF DECREASES IN PENALTY FUNCTION'
* /'VALUE IS STILL LARGE BUT ALSO KUHN-TUCKER CONDITIONS'
* /'ARE NOT SATISFIED WITH DESIRABLE ACCURACY AFTER'
* /'ITERATION LIMIT')
ELSEIF(INDEX.EQ.4)THEN
WRITE(6,150)
150 FORMAT(/'INDEX=4---'
* /'THE GENERATED SEQUENCE IS REGARDED AS DIVERGENT')
ELSEIF(INDEX.EQ.5)THEN
WRITE(6,160)IT
160 FORMAT(/'INDEX=5---'
* /'THE ALGORITHM HAS BEEN TERMINATED SINCE THE CHANGE'
* /'IN SUCCESSIVE VALUES OF THE VARIABLES BECAME TOO SMALL'
* /'AT ITERATION',I5)
ELSE
WRITE(6,170)IT,QPINDX
170 FORMAT(/'INDEX=6---'
* /'FAILURE OCCURS IN SOLVING QP SUBPROBLEM'
* /'AT ITERATION',I5
* /'ERROR CODE*QPINDX=',I2)
ENDIF
WRITE(6,180)OFUN
180 FORMAT(/'OBJECTIVE FUNCTION=',F12.5)
WRITE(6,190)PFUN,PPRA
190 FORMAT('PENALTY FUNCTION =',F12.5
* /'(PENALTY PARAMETER =',F12.5,')')
DO 1 J=1,N
LGRA(J)=OGRA(J)
DO 1 I=1,M
LGRA(J)=LGRA(J)-U(I)*CGRA(J,I)
1 CONTINUE
WRITE(6,200)
200 FORMAT(/'VARIABLES:',14X,'(GRADIENT OF LAGRANGIAN:)')
DO 2 J=1,N
WRITE(6,210)J,X(J),LGRA(J)
210 FORMAT('X(',I3,')=',F12.5,5X,'(',F12.5,')')
2 CONTINUE
IF (ME.EQ.0)THEN
WRITE(6,220)
220 FORMAT(/'PROBLEM CONTAINS NO EQUALITY CONSTRAINT')
GOTO 4
ENDIF
WRITE(6,230)
230 FORMAT(/'EQUALKITY CONSTRAINTS:',4X,'LAGRANGE MULTIPLIERS:')
DO 3 I=1,ME
WRITE(6,240)I,CFUN(I),I,U(I)
240 FORMAT('C(',I3,')=',F12.5,7X,'U(',I3,')=',F12.5)
3 CONTINUE
4 IF (MI.EQ.0)THEN
WRITE(6,250)
250 FORMAT(/'PROBLEM CONTAINS NO INEQUALITY CONSTRAINT')
GOTO 6
ENDIF
WRITE(6,260)
260 FORMAT(/'INEQUALITY CONSTRAINTS:',3X,'LAGRANGE MULTIPLIERS:')
DO 5 I=ME+1,ME+MI
WRITE(6,240)I,CFUN(I),I,U(I)
5 CONTINUE
6 WRITE(6,270)IT
270 FORMAT(/'MUNBER OF MAJOR ITERATIONS =',I5)
WRITE(6,280)NQP
280 FORMAT(/'NUMBER OF QP PROBLEMS SOLVED =',I5)
WRITE(6,290)ITQP
290 FORMAT(/'MUNBER OF QP ITERATIONS =',I5)
WRITE(6,300)NF
300 FORMAT(/'MUNBER OF FUNCTION VALUES =',I5)
WRITE(6,310)NG
310 FORMAT(/'MUNBER OF GRADIENT VALUES =',I5)
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -