# lbti-02.mod # # Source: Mark A. Abramson "Mixed Variable Optimization of a # Load-Bearing Thermal Insulation System Using a Filter Pattern Search # Algorithm", Optimization and Engineering, 5, 157-177, 2004. # # MINLP version of the model implements the model described in # K. Abhishek, S. Leyffer, and J.T. Linderoth, Modeling without Categorical # Variables: A Mixed Integer Nonlinear Program for the Optimization of Thermal # Insulation Systems, Preprint ANL/MCS-Pnnnn-mmmm. The equations numbers (i.j) # refer to the equation numbers in that report. # # This formulation requires the following data files: # nylon.dat # teflon.dat # steel.dat # carbon-steel.dat # aluminum.dat # epoxy-normal.dat # epoxy-plane.dat # # Difference to lbti-01.mod: discrete temperatures linearization # # Objective nonlinear # Some Constraints are nonlinear # Version 0.2 (Jan. 2, 2007) # Version 0.3 (Jan. 30, 2007) corrected bugs in stress constraints # Version 0.4 (Feb. 27, 2007) corrected bu found by Abhishek in v_{ij} # ... sets set materials; set epoxy within materials; # ... handle epoxy material specially # ... model parameters (constants, see Table 1) param C{1..3}; # thermodynamic cycle efficiency coefficients param DELTA >= 0, <= 5.0, default 0.05; # max % expansion allowed. param F >= 0, default 250000; # max allowed force on the system. param L >= 0, default 100; # length of the system. param M >= 0, default 10; # max mass of the system. param N >= 1, integer, default 10; # max number of intercepts. param SIGMAX >= 0, default 100000; param SIGMIN >= 0, default 1000; param TCOLD >= 0, default 4.2; # temperature at the coldest end. param THOT >= 0, default 300; # temperature at the hottest end. param AMAX >= 0, default F/SIGMIN; # maximum area of insulator param AMIN >= 0, default F/SIGMAX; # minimum area of insulator param D > 0 integer, default 297; # number of discretization points of data # splines & temps param EPS > 0, default 1E-2; # small constant param DD{i in 0..N+1} := floor((THOT)/(N+1))*i; #param DD{i in 0..N+1} := floor((D*i)/(N+1)); # ... model data (lookup tables/splines, see Table 1) param RHO{materials}; # materials densities param T{1..D}; # temperature data (discretization points) param K{materials, 1..D}; # thermal conductivity data param SIGMA{materials, 1..D}; # tensile yield strength data param E{materials, 1..D}; # thermal expansion of insulator # ... precomputed parameters param CC{r in 1..D} # precomputed C{1..3} for each T[r] := if (T[r]<=4.2) then C[1] else if (T[r] < 71) then C[2] else C[3]; param AK{j in materials, r in 1..D-1} # integral of k() in [T[r-1],T[r]] := 0.5*(K[j,r] + K[j,r+1]) *(T[r+1] - T[r]); param AEK{j in materials, r in 1..D-1} # integral of e() in [T[r-1],T[r]] := 0.5*(E[j,r] + E[j,r+1]) *(T[r+1] - T[r]); param V{j in materials, r in 1..D} # integral of k() in [T[1],T[r]] := sum{rr in 1..r-1} AK[j,rr]; param W{j in materials, r in 1..D} # integral of e() in [T[1],T[r]] := sum{rr in 1..r-1} AEK[j,rr]; # ... binary/integer variables var n integer, >= 0, <= N; # number of intercepts to use. var y{1..N+1} binary; # indicates if intercept exists var z{1..N+1, materials} binary; # SOS-1 indicates material of insulator # used between intercepts i-1 and i var d{0..N+1,1..D} binary; # SOS-1 for temperature discretization #var d{0..N+1,1..D} >= 0, <= 1; # relaxation of SOS-1 for temp discr # ... continuous variables var x{1..N+1} := L/(N+1), >= 0, <= L; # thickness of each insulator var t{0..N+1} >= TCOLD, <= THOT; # temperature of each intercept. var a{1..N+1} := AMIN , >= 0, <= AMAX; # area of each insulator var u{1..N+1} >= 0; # thermal expansion: u = \Delta x / x var q{1..N+1} >= 0; # heat flow from intercept i to i-1 var power >= 0; # cooling power var v{1..N+1, materials}; # approx. integral from t[i-1] to t[i] of AK var w{1..N+1, materials}; # approx. integral from t[i-1] to t[i] of AEK # ... objective function minimize objf: power; subject to # ... definition of objective (paper, see results/lbti-02.out-1) #DefP: power = sum{i in 1..N, r in 1..D} d[i,r]*CC[r]*(THOT/T[r]-1)*(q[i+1]-q[i]); #DiffQ{i in 1..N}: q[i+1] - q[i] >= 0; # ... definition of objective (matlab, see results/lbti-02.out-2) DefP: power = sum{i in 0..N, r in 1..D} d[i,r]*CC[r]*(THOT/T[r] - 1)*q[i+1] - sum{i in 1..N+1, r in 1..D} d[i,r]*CC[r]*(THOT/T[r] - 1)*q[i ]; # ... definition of number of intercepts (3.1) Defn: sum{i in 1..N+1} y[i] = n + 1; # ... ensure intercepts are contiguous (3.2) Ordy{i in 1..N}: y[i+1] <= y[i]; # ... force x[i]=0 for i>n+1 (3.4) xUpper{i in 1..N+1}: sum{j in i..N+1} x[j] <= L*y[i]; # ... pick exactly one material for each intercept (3.13) ChooseMaterial1{i in 1..N+1}: sum{j in materials} z[i,j] = y[i]; # ... max total length of insulators (3.14) length: sum{i in 1..N+1} x[i] = L; # ... total mass constraint (3.16) mass: sum{i in 1..N+1, j in materials} RHO[j]*z[i,j]*a[i]*x[i] <= M; # ... force x[i]>L*EPS for i<=n+1 (3.18) xLower{i in 1..N+1}: x[i] >= EPS*L*y[i]; # ... set temperature at boundary (3.19) Tcold: t[0] = TCOLD; THot{i in 1..N}: t[i] >= THOT*(1 - y[i+1]); TN: t[N+1] = THOT; # ... upper/lower bound on area of existing intercepts (3.22) #MaxAreaConstr{i in 1..N+1}: sum{j in i..N+1} a[j] <= (N+1)*AMAX*y[i]; #MinAreaConstr{i in 1..N+1}: sum{j in i..N+1} a[j] >= AMIN*y[i]; MaxAreaConstr1{i in 1..N+1}: a[i] <= AMAX*y[i]; MinAreaConstr1{i in 1..N+1}: a[i] >= AMIN*y[i]; # ... heat flow is governed by Fourier's law (3.32) HeatFlow{i in 1..N+1}: a[i] * sum{j in materials} v[i,j]*z[i,j] <= x[i]*q[i] ; # ... thermal contraction $\Delta x_i / x_i$ (3.33) ThermalContraction{i in 1..N+1}: sum{j in materials} w[i,j]*z[i,j] <= u[i]*sum{j in materials} v[i,j]*z[i,j]; # ... thermal expansion/contraction constraint (3.34) ThermalExpansion: sum{i in 1..N+1} u[i]*x[i] <= L*DELTA/100; # ... definition of temperatures & SOS condition for d[i,r] (4.1) DefTi{i in 0..N+1}: t[i] = sum{r in 1..D} d[i,r]*T[r]; SOSd{i in 0..N+1}: 1 = sum{r in 1..D} d[i,r]; # ... definition of integrals over k (4.2) DefVij{i in 1..N+1, j in materials}: v[i,j] = sum{r in 1..D} d[i ,r] * V[j,r] - sum{r in 1..D} d[i-1,r] * V[j,r]; # ... definition of integrals over e*k (4.3) DefWij{i in 1..N+1, j in materials}: w[i,j] = sum{r in 1..D} d[i ,r] * W[j,r] - sum{r in 1..D} d[i-1,r] * W[j,r]; # ... force temperatures apart for existing layers (4.6) (same # as (3.20) ) #TempIncr{i in 1..N+1}: # sum{r in 1..D} T[r]*d[i,r] >= sum{r in 1..D} T[r]*d[i-1,r] + y[i]; # ... force temperatures apart for existing layers (3.20) TempDiff{i in 1..N+1}: t[i] - t[i-1] >= y[i]; # ... force temperature to be THOT for non-existing layers (4.7)(same # as (3.19) ) #ForceTemp{i in 1..N}: d[i,D] >= (1 - y[i+1]); # ... area stress constraints for all materials (only if material present) # (force per unit area for the material <= allowable stress) (4.8) areaStressAll{i in 1..N+1, s in 1..D-1}: F <= a[i]* sum{j in materials} z[i,j]*SIGMA[j,s] + (2 - sum{r in 1..s} d[i-1,r] - sum{r in s..D}d[i,r])*F; #A more compact d_ir relation dirtemp{i in 1..N+1, r in 1..D}: sum{j in 1..(i-1), s in r..D} d[j,s] + sum{j in (i+1)..(N+1), s in 1..r} d[j,s] <= 2*N*(1 - d[i,r]);