Tubular Column Design Optimization

The objective is to optimize the cost of building the column, using variables d, the mean diameter of the column (cm), and t, the thickness of the column (cm).

P is the compressive load of 2300 kgf. The material used to make the column has a module of elasticity (E) of 0.65x106 and a weight density (ρ) of 0.0020 kgf/cm3. The column has a yield stress (σy) of 450 kgf/cm2 and a length (l) of 300 cm.

Due to available materials the diameter must be ≤ 14.0 cm and ≥ 2.0 cm. Similarly, the thickness must be ≤ 0.8 cm and ≥ 0.2 cm. Safety requires that the induced stress is less than the yield stress and that the induced stress is less than the buckling stress. The cost of the column is equal to the expression 5W + 2d with W being the weight in kilograms force (kgf).


$$W=\rho l \pi \frac{\left(d_o^2- d_i^2\right)}{4}$$

Outer Diameter


Inner Diameter

$$d_i=d - t$$

Induced stress

$$\frac{P}{\pi\,d \, t}$$

Buckling stress

Buckling stress = Euler buckling load/cross sectional area

$$\frac{\pi^2 E I}{l^2} \frac{1}{\pi \, d \, t}$$

Second moment

Second moment of area of the cross section of the column.

$$I=\frac{\pi}{64} \left(d_0^4- d_i^4\right)$$

Full Tubular Design Assignment (PDF)

Turn in a report with the following sections:

  1. Title Page with Summary. The Summary should be short (less than 50 words), and give the main optimization results.
  2. Procedure: Give a brief description of your model. You are welcome to refer to the assignment which should be in the Appendix. Also include:
    1. A table with the analysis variables, design variables, analysis functions and design functions.
  3. Results: Briefly describe the results of optimization (values). Also include:
    1. A table showing the optimum values of variables and functions, indicating binding constraints and/or variables at bounds (highlighted)
    2. A table giving the various starting points which were tried along with the optimal objective values reached from that point.
  4. Discussion of Results: Briefly discuss the optimum and design space around the optimum. Do you feel this is a global optimum? Also include and briefly discuss:
    1. A “zoomed out” contour plot showing the design space (both feasible and infeasible) for diameter and thickness, with the feasible region shaded and optimum marked.
    2. A “zoomed in” contour plot of the design space (mostly feasible space) for diameter and thickness, with the feasible region shaded and optimum marked.
  5. Appendix:
    1. Listing of your model with all variables and equations
    2. Solver output with details of the convergence to the optimal values

Any output from the software is to be integrated into the report (either physically or electronically pasted) as given in the sections above. Tables and figures should all have explanatory captions. Do not just staple pages of output to your assignment: all raw output is to have notations made on it. For graphs, you are to shade the feasible region and mark the optimum point. For tables of design values, you are to indicate, with arrows and comments, any variables at bounds, any binding constraints, the objective, etc. (You need to show that you understand the meaning of the output you have included.)

This assignment can be completed in collaboration with others. Additional guidelines on individual, collaborative, and group assignments are provided under the Expectations link.

Solution Help

See GEKKO documentation and additional example problems.

from gekko import GEKKO

m = GEKKO()

#%% Constants
pi = m.Const(3.14159,'pi')
P = 2300        # compressive load (kg_f)
o_y = 450       # yield stress (kg_f/cm^2)
E = 0.65e6      # elasticity (kg_f/cm^2)
p = 0.0020      # weight density (kg_f/cm^3)
l = 300         # length of the column (cm)

#%% Variables
d = m.Var(value=8.0,lb=2.0,ub=14.0) # mean diameter (cm)
t = m.Var(value=0.3,lb=0.2,ub=0.8)  # thickness (cm)
cost = m.Var()

#%% Intermediates
d_i = m.Intermediate(d - t)
d_o = m.Intermediate(d + t)
W = m.Intermediate(p*l*pi*(d_o**2 - d_i**2)/4) # weight (kgf)
o_i = m.Intermediate(P/(pi*d*t))    # induced stress

# second moment of area of the cross section of the column
I = m.Intermediate((pi/64)*(d_o**4 - d_i**4))

# buckling stress (Euler buckling load/cross-sectional area)
o_b = m.Intermediate((pi**2*E*I/l**2)*(1/(pi*d*t)))

#%% Equations
        o_i - o_y <= 0,
        o_i - o_b <= 0,
        cost == 5*W + 2*d

#%% Objective

#%% Solve and print solution
m.options.SOLVER = 1

print('Optimal cost: ' + str(cost[0]))
print('Optimal mean diameter: ' + str(d[0]))
print('Optimal thickness: ' + str(t[0]))

comments powered by Disqus