summaryrefslogtreecommitdiff
path: root/Donjon/src/PLNTAB.f
blob: 1e8a4765a62d4417d0047ce19f058eb38bd0caa2 (plain)
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
*DECK PLNTAB
      SUBROUTINE PLNTAB(GF,APLUS,INPLUS,BPLUS,XITK,XINF,XSUP,NDEC,M0,
     >                  SRCNAM)
*----------------------------------------------------------------------*
*                                                                      *
*Purpose:
* Print the arrays of the linear optimization problem. 
*
*Copyright:
* Copyright (C) 2002 Ecole Polytechnique de Montreal
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version
*
*Author(s): 
* R. Chambon
*
*Parameters: input
* GF      costs of control variables.
* APLUS   coefficient matrix for the linear constraints.
* INPLUS  constraint relations (=-1 for .GE.; =0 for .EQ.; =1 for .LE.).
* BPLUS   right hand sides corresponding to the coefficient matrix.
* XITK    weights assigned to control variables in the quadratic
*         constraint.
* XINF    lower bounds of control variables.
* XSUP    upper bounds of control variables.
* NDEC    number of control variables.
* M0      number of constraints plus the number of lower/upper bounds
*         intercepting the quadratic constraint.
* SRCNAM  character text to print.
*
*-----------------------------------------------------------------------
*
      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
*----
*  SUBROUTINE ARGUMENTS
*----
      INTEGER       M0
      DOUBLE PRECISION BPLUS(M0+2),XITK(NDEC),XINF(NDEC),XSUP(NDEC),
     >                 GF(NDEC),APLUS(M0+2,NDEC)
      INTEGER       INPLUS(M0+1)
      CHARACTER*(*) SRCNAM
*----
*  LOCAL VARIABLES
*----
      CHARACTER*2   CTYPES(-1:1)
      CHARACTER*80  FMT
*
      DATA CTYPES / '>=',' =','<=' /
*
      WRITE(6,1000) SRCNAM
*
      IF (NDEC.GT.8) THEN
         RETURN
      ELSE
         FMT = '(1P,XXE13.5,5X,A3,5X,1P,E13.5)'
         NVAL = NDEC
      ENDIF
*
      IDX = INDEX(FMT,'X')
      WRITE(FMT(IDX:IDX+1),'(I2.2)') NVAL
*----
*  PRINT CONTROL-VARIABLE COSTS
*----
      WRITE(6,2000) (I,I=1,NDEC)
      WRITE(6,3000) (GF(I),I=1,NDEC)
*----
*  PRINT COEFFICIENT MATRIX
*----
      IF(M0.GT.0) THEN
        WRITE(6,4000)
        DO 10 J=1,M0
          WRITE(6,FMT) (APLUS(J,I),I=1,NDEC),CTYPES(INPLUS(J)),BPLUS(J)
  10    CONTINUE
      ENDIF
*
      WRITE(6,5000) (XINF(I),I=1,NDEC)
      WRITE(6,6000) (XSUP(I),I=1,NDEC)
      WRITE(6,7000) (XITK(I),I=1,NDEC)
      RETURN
*
1000  FORMAT(//,5X,'PRINT LINEARIZED OPTIMIZATION PROBLEM IN ',A,/)
2000  FORMAT( /,5X,'COST(NDEC)',//,(10(5X,I3,5X)),//)
3000  FORMAT((1P,10E13.5))
4000  FORMAT( /,5X,'APLUS(M0,NDEC)',35X,'INPLUS(M0)',35X,'BPLUS(M0)',/)
5000  FORMAT( /,5X,'XINF(NDEC)  ',//,(1P,10E13.5))
6000  FORMAT( /,5X,'XSUP(NDEC)  ',//,(1P,10E13.5))
7000  FORMAT( /,5X,'WEIGHT(NDEC)',//,(1P,10E13.5))
      END