tp117r1.apm.m4


Model tp117r1
  ! Source version 1

  ! This is the exact formulation of #117r.
  ! It seems that this is the devil of the H+S model collection.
  ! To find the solution with high precision, the benevolent variant,
  ! tp117r3, is quite better suited than the original, tp117r1 here.
  ! The present file has to be drawn through the m4 macro processor
  ! at first, with or without `-Drevisedhs'. With the macro
  ! defined, the feasible domain is reduced in comparison with the H+S
  ! one such that some unwanted secondary minimum is excluded.

  ifdef(`revisedhs',`define(`stricths',0)',`define(`stricths',1)')

  Parameters
    a24a = 4/10 ! from PROB.FOR
    a24b = 4    ! from H+S, seems to be a typo
    a24  = a24a ! my decision is irrelevant,
                ! a24 appears as a summand (-1)*a24*x[2] in ineq[4]
                ! and x[2] is going to vanish; see also tp117r2
    a[ 1][1] = -16
    a[ 1][2] =   2
    a[ 1][3] =   0
    a[ 1][4] =   1
    a[ 1][5] =   0
    a[ 2][1] =   0
    a[ 2][2] =  -2
    a[ 2][3] =   0
    a[ 2][4] = a24
    a[ 2][5] =   2
    a[ 3][1] = -35/10
    a[ 3][2] =   0
    a[ 3][3] =   2
    a[ 3][4] =   0
    a[ 3][5] =   0
    a[ 4][1] =   0
    a[ 4][2] =  -2
    a[ 4][3] =   0
    a[ 4][4] =  -4
    a[ 4][5] =  -1
    a[ 5][1] =   0
    a[ 5][2] =  -9
    a[ 5][3] =  -2
    a[ 5][4] =   1
    a[ 5][5] = -28/10
    a[ 6][1] =   2
    a[ 6][2] =   0
    a[ 6][3] =  -4
    a[ 6][4] =   0
    a[ 6][5] =   0
    a[ 7][1] =  -1
    a[ 7][2] =  -1
    a[ 7][3] =  -1
    a[ 7][4] =  -1
    a[ 7][5] =  -1
    a[ 8][1] =  -1
    a[ 8][2] =  -2
    a[ 8][3] =  -3
    a[ 8][4] =  -2
    a[ 8][5] =  -1
    a[ 9][1] =   1
    a[ 9][2] =   2
    a[ 9][3] =   3
    a[ 9][4] =   4
    a[ 9][5] =   5
    a[10][1] =   1
    a[10][2] =   1
    a[10][3] =   1
    a[10][4] =   1
    a[10][5] =   1
    b[ 1] = -40
    b[ 2] =  -2
    b[ 3] =  -1/4
    b[ 4] =  -4
    b[ 5] =  -4
    b[ 6] =  -1
    b[ 7] = -40
    b[ 8] = -60
    b[ 9] =   5
    b[10] =   1
    c[1][1] =  30
    c[1][2] = -20
    c[1][3] = -10
    c[1][4] =  32
    c[1][5] = -10
    c[2][1] = -20
    c[2][2] =  39
    c[2][3] =  -6
    c[2][4] = -31
    c[2][5] =  32
    c[3][1] = -10
    c[3][2] =  -6
    c[3][3] =  10
    c[3][4] =  -6
    c[3][5] = -10
    c[4][1] =  32
    c[4][2] = -31
    c[4][3] =  -6
    c[4][4] =  39
    c[4][5] = -20
    c[5][1] = -10
    c[5][2] =  32
    c[5][3] = -10
    c[5][4] = -20
    c[5][5] =  30
    d[1] =   4
    d[2] =   8
    d[3] =  10
    d[4] =   6
    d[5] =   2
    e[1] = -15
    e[2] = -27
    e[3] = -36
    e[4] = -18
    e[5] = -12
    ivxhs[1: 6] =  0.001
    ivxhs[7: 7] = 60
    ivxhs[8:15] =  0.001
    lbx[ 1] = ifelse(stricths,1,`0',`0')
    lbx[ 2] = ifelse(stricths,1,`0',`0')
    lbx[ 3] = ifelse(stricths,1,`0',`1')
    lbx[ 4] = ifelse(stricths,1,`0',`0')
    lbx[ 5] = ifelse(stricths,1,`0',`1')
    lbx[ 6] = ifelse(stricths,1,`0',`1')
    lbx[ 7] = ifelse(stricths,1,`0',`0')
    lbx[ 8] = ifelse(stricths,1,`0',`0')
    lbx[ 9] = ifelse(stricths,1,`0',`0.09')
    lbx[10] = ifelse(stricths,1,`0',`0')
    lbx[11] = ifelse(stricths,1,`0',`0.1')
    lbx[12] = ifelse(stricths,1,`0',`0.3')
    lbx[13] = ifelse(stricths,1,`0',`0.3')
    lbx[14] = ifelse(stricths,1,`0',`0.2')
    lbx[15] = ifelse(stricths,1,`0',`0.1')
    ! make the initial point feasible
    ! ivx[1:15] = max(ivxhs[1:15],lbx[1:15])
    ! max() expressed by abs() for APMonitor
    ivx[1:15] = (1/2)*(abs(ivxhs[1:15] - lbx[1:15]) + &
                          (ivxhs[1:15] + lbx[1:15]))
    sumcx[1:5][0] = 0
    sumax[1:5][0] = 0
    sumbx[0] = 0
    sumcxxi[1:5][0] = 0
    sumcxx[0] = 0
    sumdx[0] = 0
  End Parameters

  Variables
    x[1:15] = ivx[1:15], >= lbx[1:15]
    obj
  End Variables

  Intermediates
    sumcx[1][1:5] = sumcx[1][0:4] + c[1:5][1]*x[11:15]
    sumcx[2][1:5] = sumcx[2][0:4] + c[1:5][2]*x[11:15]
    sumcx[3][1:5] = sumcx[3][0:4] + c[1:5][3]*x[11:15]
    sumcx[4][1:5] = sumcx[4][0:4] + c[1:5][4]*x[11:15]
    sumcx[5][1:5] = sumcx[5][0:4] + c[1:5][5]*x[11:15]
    sumax[1][1:10] = sumax[1][0:9] + a[1:10][1]*x[1:10]
    sumax[2][1:10] = sumax[2][0:9] + a[1:10][2]*x[1:10]
    sumax[3][1:10] = sumax[3][0:9] + a[1:10][3]*x[1:10]
    sumax[4][1:10] = sumax[4][0:9] + a[1:10][4]*x[1:10]
    sumax[5][1:10] = sumax[5][0:9] + a[1:10][5]*x[1:10]
    ineq[1:5] = 2*sumcx[1:5][5] + 3*d[1:5]*x[11:15]^2 + e[1:5] &
              - sumax[1:5][10]
    sumbx[1:10] = sumbx[0:9] + b[1:10]*x[1:10]
    sumcxxi[1][1:5] = sumcxxi[1][0:4] + c[1:5][1]*x[11:15]*x[11]
    sumcxxi[2][1:5] = sumcxxi[2][0:4] + c[1:5][2]*x[11:15]*x[12]
    sumcxxi[3][1:5] = sumcxxi[3][0:4] + c[1:5][3]*x[11:15]*x[13]
    sumcxxi[4][1:5] = sumcxxi[4][0:4] + c[1:5][4]*x[11:15]*x[14]
    sumcxxi[5][1:5] = sumcxxi[5][0:4] + c[1:5][5]*x[11:15]*x[15]
    sumcxx[1:5] = sumcxx[0:4] + sumcxxi[1:5][5]
    sumdx[1:5] = sumdx[0:4] + d[1:5]*x[11:15]^3
    mf = (-1)*sumbx[10] + sumcxx[5] + 2*sumdx[5]
  End Intermediates

  Equations
    ineq[1:5] >= 0

    obj = mf

    ! best known objective = 32.34867896572271
    ! begin of best known solution belonging to the revised case
    ! x[ 1] =  0
    ! x[ 2] =  0
    ! x[ 3] =  5.174040727698173
    ! x[ 4] =  0
    ! x[ 5] =  3.06110868775845
    ! x[ 6] = 11.83954566480073
    ! x[ 7] =  0
    ! x[ 8] =  0
    ! x[ 9] =  0.1038961907706158
    ! x[10] =  0
    ! x[11] =  0.3
    ! x[12] =  0.3334676065346071
    ! x[13] =  0.4
    ! x[14] =  0.4283101047816988
    ! x[15] =  0.2239648735607981
    ! end of best known solution belonging to the revised case
  End Equations
End Model

Stephan K.H. Seidl