From 7dfcc480ba1e19bd3232349fc733caef94034292 Mon Sep 17 00:00:00 2001 From: stainer_t Date: Mon, 8 Sep 2025 13:48:49 +0200 Subject: Initial commit from Polytechnique Montreal --- Donjon/src/PLNTAB.f | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 Donjon/src/PLNTAB.f (limited to 'Donjon/src/PLNTAB.f') diff --git a/Donjon/src/PLNTAB.f b/Donjon/src/PLNTAB.f new file mode 100644 index 0000000..1e8a476 --- /dev/null +++ b/Donjon/src/PLNTAB.f @@ -0,0 +1,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 -- cgit v1.2.3