tp117r3.apm.m4


Model tp117r3
  ! Source version 1

  ! This is a benevolent formulation of #117r.
  ! Some coupling has been removed and
  ! the optimization goal is more explicitly defined.
  ! 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 but done
    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')
    ! initialize in accordance with the bounds
    ! 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]))
    ! Firstly, all the constant partial derivatives, see below.
    dx5bdx1   = 300/823
    dx5bdx2   = (-430/823) + (50/823)*a24
    dx5bdx4   = -360/823
    dx5bdx7   = -85/823
    dx5bdx8   = -260/823
    dx5bdx10  = 85/823
    dx5bdx13  = 300/823
    dx9bdx1   = 313/3292
    dx9bdx2   = (-869/1646) - (85/3292)*a24
    dx9bdx4   = 153/823
    dx9bdx7   = 139/823
    dx9bdx8   = 221/1646
    dx9bdx10  = -139/823
    dx9bdx13  = -3008/823
    dx11bdx1  = 359/13168
    dx11bdx2  = (-271/6584) + (197/13168)*a24
    dx11bdx4  = -95/1646
    dx11bdx7  = -11/1646
    dx11bdx8  = -183/6584
    dx11bdx10 = 11/1646
    dx11bdx13 = -29/823
  End Parameters

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

  Intermediates
    ! Taking the inequalities of the original problem as equalities,
    ! we consider x[3], x[5], x[6], x[9], and x[11] as
    ! x[ 3] = x[ 3](x[1],x[2],x[4],x[7],x[8],x[10],x[12],...,x[15]),
    ! x[ 5] = x[ 5](x[1],x[2],x[4],x[7],x[8],x[10],x[12],...,x[15]),
    ! x[ 6] = x[ 6](x[1],x[2],x[4],x[7],x[8],x[10],x[12],...,x[15]),
    ! x[ 9] = x[ 9](x[1],x[2],x[4],x[7],x[8],x[10],x[12],...,x[15]),
    ! x[11] = x[11](x[1],x[2],x[4],x[7],x[8],x[10],x[12],...,x[15]),
    ! but we do not eliminate them completely.
    ! Next, all the varying partial derivatives.
    aux = 3453/13168 + (359/13168)*x[1] - (271/6584)*x[2]            &
        + (197/13168)*a24*x[2] - (95/1646)*x[4] - (11/1646)*x[7]     &
        - (183/6584)*x[8] + (11/1646)*x[10] + (2257/1646)*x[12]      &
        - (29/823)*x[13] - (2243/1646)*x[14] + (881/823)*x[15]       &
        - (243/1646)*x[12]^2 - (1773/6584)*x[14]^2                   &
        + (285/3292)*x[15]^2
    dx3bdx1   = (-57577/8230) - (1077/4115)*aux
    dx3bdx2   = 415/823 - (575/1646)*a24 + (1626/4115)*aux           &
              - (591/4115)*a24*aux
    dx3bdx4   = 1247/823 + (456/823)*aux
    dx3bdx7   = (-1054/4115) + (264/4115)*aux
    dx3bdx8   = (-151/823) + (1098/4115)*aux
    dx3bdx10  = 1054/4115 - (264/4115)*aux
    dx3bdx12  = (-7744/4115) + (4872/823)*x[12] - (54168/4115)*aux   &
              + (11664/4115)*aux*x[12]
    dx3bdx13  = 744/823 - 12*x[13] + (1392/4115)*aux
    dx3bdx14  = 6392/4115 + (10350/823)*x[14] + (53832/4115)*aux     &
              + (21276/4115)*aux*x[14]
    dx3bdx15  = (-1488/823) - (1272/823)*x[15] - (42288/4115)*aux    &
              - (1368/823)*aux*x[15]
    dx5bdx12  = (-890/823) - (6000/823)*x[12]
    dx5bdx14  = 250/823 - (1800/823)*x[14]
    dx5bdx15  = (-600/823) + (1080/823)*x[15]
    dx6bdx1   = (-114319/32920) - (1077/8230)*aux
    dx6bdx2   = (-291/3292) - (985/6584)*a24 + (813/4115)*aux        &
              - (591/8230)*a24*aux
    dx6bdx4   = 2723/3292 + (228/823)*aux
    dx6bdx7   = (-1919/8230) + (132/4115)*aux
    dx6bdx8   = (-2377/3292)+ (549/4115)*aux
    dx6bdx10  = 1919/8230 - (132/4115)*aux
    dx6bdx12  = 59618/4115 + (2430/823)*x[12] - (27084/4115)*aux     &
              + (5832/4115)*aux*x[12]
    dx6bdx13  = (-6294/823) - 21*x[13] + (696/4115)*aux
    dx6bdx14  = (-20464/4115) + (8865/1646)*x[14] + (26916/4115)*aux &
              + (10638/4115)*aux*x[14]
    dx6bdx15  = 12588/823 + (1044/823)*x[15] - (21144/4115)*aux      &
              - (684/823)*aux*x[15]
    dx9bdx12  = 5522/823 - (2388/823)*x[12]
    dx9bdx14  = (-1958/823) + (765/823)*x[14]
    dx9bdx15  = 6016/823 + (2010/823)*x[15]
    dx11bdx12 = 2257/1646 - (243/823)*x[12]
    dx11bdx14 = (-2243/1646) - (1773/3292)*x[14]
    dx11bdx15 = 881/823 + (285/1646)*x[15]
    ! The definition of x[3].
    c[ 1] = (-42201/8230) + (57577/8230)*x[1] - (415/823)*x[2]       &
          + (575/1646)*a24*x[2] + x[3] - (1247/823)*x[4]             &
          + (1054/4115)*x[7] + (151/823)*x[8] - (1054/4115)*x[10]    &
          + (7744/4115)*x[12] - (744/823)*x[13] - (6392/4115)*x[14]  &
          + (1488/823)*x[15] - (2436/823)*x[12]^2 + 6*x[13]^2        &
          - (5175/823)*x[14]^2 + (636/823)*x[15]^2 + (24/5)*aux^2
    ! The definition of x[5].
    c[ 2] = (-3195/823) - (300/823)*x[1] + (430/823)*x[2]            &
          - (50/823)*a24*x[2] + (360/823)*x[4] + x[5]                &
          + (85/823)*x[7] + (260/823)*x[8] - (85/823)*x[10]          &
          + (890/823)*x[12] - (300/823)*x[13] - (250/823)*x[14]      &
          + (600/823)*x[15] + (3000/823)*x[12]^2 + (900/823)*x[14]^2 &
          - (540/823)*x[15]^2
    ! The definition of x[6].
    c[ 3] = (-328467/32920) + (114319/32920)*x[1] + (291/3292)*x[2]  &
          + (985/6584)*a24*x[2] - (2723/3292)*x[4] + x[6]            &
          + (1919/8230)*x[7] + (2377/3292)*x[8] - (1919/8230)*x[10]  &
          - (59618/4115)*x[12] + (6294/823)*x[13]                    &
          + (20464/4115)*x[14] - (12588/823)*x[15]                   &
          - (1215/823)*x[12]^2 + (21/2)*x[13]^2                      &
          - (8865/3292)*x[14]^2 - (522/823)*x[15]^2 + (12/5)*aux^2
    ! The definition of x[9].
    c[ 4] = 4197/3292 - (313/3292)*x[1] + (869/1646)*x[2]            &
          + (85/3292)*a24*x[2] - (153/823)*x[4] - (139/823)*x[7]     &
          - (221/1646)*x[8] + x[9] + (139/823)*x[10]                 &
          - (5522/823)*x[12] + (3008/823)*x[13] + (1958/823)*x[14]   &
          - (6016/823)*x[15] + (1194/823)*x[12]^2                    &
          - (765/1646)*x[14]^2 - (1005/823)*x[15]^2
    ! The same for x[11], but x[11] is not completely decoupled.
    c[ 5] = (-3453/13168) - (359/13168)*x[1] + (271/6584)*x[2]       &
          - (197/13168)*a24*x[2] + (95/1646)*x[4] + (11/1646)*x[7]   &
          + (183/6584)*x[8] - (11/1646)*x[10] + x[11]                &
          - (2257/1646)*x[12] + (29/823)*x[13] + (2243/1646)*x[14]   &
          - (881/823)*x[15] + (243/1646)*x[12]^2                     &
          + (1773/6584)*x[14]^2 - (285/3292)*x[15]^2
    ! We take into account that if the partial derivative of mf
    ! with respect to a variable cannot vanish for some reason,
    ! then the variable has to do so.
    c[ 6] = (40 + (1/4)*dx3bdx1 + 4*dx5bdx1 + dx6bdx1 - 5*dx9bdx1 +  &
             60*dx11bdx1*x[11] - 40*dx11bdx1*x[12] -                 &
             20*dx11bdx1*x[13] + 64*dx11bdx1*x[14] -                 &
             20*dx11bdx1*x[15] + 24*dx11bdx1*x[11]^2)*x[1]
    c[ 7] = (2 + (1/4)*dx3bdx2 + 4*dx5bdx2 + dx6bdx2 - 5*dx9bdx2 +   &
             60*dx11bdx2*x[11] - 40*dx11bdx2*x[12] -                 &
             20*dx11bdx2*x[13] + 64*dx11bdx2*x[14] -                 &
             20*dx11bdx2*x[15] + 24*dx11bdx2*x[11]^2)*x[2]
    c[ 8] = (4 + (1/4)*dx3bdx4 + 4*dx5bdx4 + dx6bdx4 - 5*dx9bdx4 +   &
             60*dx11bdx4*x[11] - 40*dx11bdx4*x[12] -                 &
             20*dx11bdx4*x[13] + 64*dx11bdx4*x[14] -                 &
             20*dx11bdx4*x[15] + 24*dx11bdx4*x[11]^2)*x[4]
    c[ 9] = (40 + (1/4)*dx3bdx7 + 4*dx5bdx7 + dx6bdx7 - 5*dx9bdx7 +  &
             60*dx11bdx7*x[11] - 40*dx11bdx7*x[12] -                 &
             20*dx11bdx7*x[13] + 64*dx11bdx7*x[14] -                 &
             20*dx11bdx7*x[15] + 24*dx11bdx7*x[11]^2)*x[7]
    c[10] = (60 + (1/4)*dx3bdx8 + 4*dx5bdx8 + dx6bdx8 - 5*dx9bdx8 +  &
             60*dx11bdx8*x[11] - 40*dx11bdx8*x[12] -                 &
             20*dx11bdx8*x[13] + 64*dx11bdx8*x[14] -                 &
             20*dx11bdx8*x[15] + 24*dx11bdx8*x[11]^2)*x[8]
    c[11] = ((-1) + (1/4)*dx3bdx10 + 4*dx5bdx10 + dx6bdx10 -         &
             5*dx9bdx10 + 60*dx11bdx10*x[11] - 40*dx11bdx10*x[12] -  &
             20*dx11bdx10*x[13] + 64*dx11bdx10*x[14] -               &
             20*dx11bdx10*x[15] + 24*dx11bdx10*x[11]^2)*x[10]
    ! The remainder is treated as usual.
    c[12] = (1/4)*dx3bdx12 + 4*dx5bdx12 + dx6bdx12 - 5*dx9bdx12      &
          - 40*x[11] + 78*x[12] - 12*x[13] - 62*x[14] + 64*x[15]     &
          + 60*dx11bdx12*x[11] - 40*dx11bdx12*x[12]                  &
          - 20*dx11bdx12*x[13] + 64*dx11bdx12*x[14]                  &
          - 20*dx11bdx12*x[15] + 48*x[12]^2 + 24*dx11bdx12*x[11]^2
    c[13] = (1/4)*dx3bdx13 + 4*dx5bdx13 + dx6bdx13 - 5*dx9bdx13      &
          - 20*x[11] - 12*x[12] + 20*x[13] - 12*x[14] - 20*x[15]     &
          + 60*dx11bdx13*x[11] - 40*dx11bdx13*x[12]                  &
          - 20*dx11bdx13*x[13] + 64*dx11bdx13*x[14]                  &
          - 20*dx11bdx13*x[15] + 60*x[13]^2 + 24*dx11bdx13*x[11]^2
    c[14] = (1/4)*dx3bdx14 + 4*dx5bdx14 + dx6bdx14 - 5*dx9bdx14      &
          + 64*x[11] - 62*x[12] - 12*x[13] + 78*x[14] - 40*x[15]     &
          + 60*dx11bdx14*x[11] - 40*dx11bdx14*x[12]                  &
          - 20*dx11bdx14*x[13] + 64*dx11bdx14*x[14]                  &
          - 20*dx11bdx14*x[15] + 36*x[14]^2 + 24*dx11bdx14*x[11]^2
    c[15] = (1/4)*dx3bdx15 + 4*dx5bdx15 + dx6bdx15 - 5*dx9bdx15      &
          - 20*x[11] + 64*x[12] - 20*x[13] - 40*x[14] + 60*x[15]     &
          + 60*dx11bdx15*x[11] - 40*dx11bdx15*x[12]                  &
          - 20*dx11bdx15*x[13] + 64*dx11bdx15*x[14]                  &
          - 20*dx11bdx15*x[15] + 12*x[15]^2 + 24*dx11bdx15*x[11]^2
    ! Our objective function has no meaning anymore,
    ! but we want to see its value.
    mf    = 40*x[1] + 2*x[2] + (1/4)*x[3] + 4*x[4] + 4*x[5] + x[6]   &
          + 40*x[7] + 60*x[8] - 5*x[9] - x[10] + 30*x[11]^2          &
          - 40*x[11]*x[12] - 20*x[11]*x[13] + 64*x[11]*x[14]         &
          - 20*x[11]*x[15] + 39*x[12]^2 - 12*x[12]*x[13]             &
          - 62*x[12]*x[14] + 64*x[12]*x[15] + 10*x[13]^2             &
          - 12*x[13]*x[14] - 20*x[13]*x[15] + 39*x[14]^2             &
          - 40*x[14]*x[15] + 30*x[15]^2 + 8*x[11]^3 + 16*x[12]^3     &
          + 20*x[13]^3 + 12*x[14]^3 + 4*x[15]^3
  End Intermediates

  Equations
    c[1:15] = 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