Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Structural optimization of a two-

member cantilever beam


Introduction
This notebook shows the direct structural optimization of a cantilever beam divided in two members
and subjected to a concentrated load on the top. The problem consists in minimizing the weight of
the beam by respecting a deflection constraint at the tip. Each portion of the beam has square
hollow-core section to be designed.

Data
In[1]:= ρ = 78.5 * 10 ^ - 9;(*Nmm3 unit weight of the material*)
L = 1000;(*mm lenght of each beam portion*)
El = 210 000; (*Nmm2 elastic modulus of the material*)
t = 15;(*mm thickness of the square box section*)
F = 10 000; (*N load intensity*)
δ0 = L  100;
(*maximum allowed deflection*)

Theoretical Procedure
We want to minimize the weight of the beam under the constraint that the displacement at the tip is
less than some prescribed value.
The design variables are the cross sectional sizes x1 and x2 of the two portions of the beam. The
target function can be expressed as:
f (x1, x2) = ρ * L * ∑2i=1 (xi^2 - (xi - 2 t)^ 2) = 4 ρ * Lt (x1 + x2)
2 EsempioOttimizzazioneMensola.nb

If the constant C1 is introduced, it follows that


In[5]:= C1 = 4 * ρ * L * t;(*constant value*)
f[x1_, x2_] = C1 * x1 + x2;(*self weight of the beam,
target function to be minimized*)

The deflection of the cantilever can be written as a function of the cross section sizes in the form
3 F L3 1 1
δ = 2 E t ∑2i=1 i2 - i + 3  3
xi
The deflection constraint is expressed as δ≤δ0.
If the constant C2 is introduced, the respect of the displacement condition is expressed as c(x1,x2)≤
C2, being
1 7
In[7]:= c[x1_, x2_] = + ;
x1 ^ 3 x2 ^ 3
2 * δ0 * El * t
C2 = ;
F * L^3
The expression of x2 can be calculated assuming equality in the nonstrict inequality constraint
In[9]:= an = Solve[c[x1, x2] ⩵ C2, x2]
100 - 701/3 x1
Out[9]= x2 → - ,
- 10 000 000 + 63 x13 1/3
100 × 701/3 x1 100 - 12/3 701/3 x1
x2 → , x2 → 
- 10 000 000 + 63 x13 1/3 - 10 000 000 + 63 x13 1/3

and the only possible solution is selected, being x2≥0


In[10]:= x2 = FullSimplify[x2 /. an[[2]]]

Out[10]=
100 x1
- 1 0007 000 + 9 x13 1/3
10

The result is put into f(x1,x2), which becomes a function of x1 only. Seeking a stationary value of
this function gives the solution
In[11]:= df[x2_] = D[f[x1, x2], x1];

In[12]:= x1 = FullSimplify[x1 /. NSolve[df[x2] ⩵ 0, x1, Reals]][[1]]


Out[12]= 74.705

Introducing x1 in the previous expression of x2, we get the size of the second part of the beam
In[13]:= x2
Out[13]= 121.513

and the minimized value of the weight is


In[14]:= f[x1, x2]
Out[14]= 0.924189

Finally, the target function can be plotted as a function of the only variable x1
In[15]:= ClearAll[x1]

In[16]:= f1[x1_] = f[x1, x2];


EsempioOttimizzazioneMensola.nb 3

In[17]:= Plot[f1[x1], {x1, 0, 200}, PlotRange → {0, 2},


AxesLabel → {"x1", "f"}, Exclusions → {{f1 '[x1] ⩵ 0, f1 ''[x1] ≥ 0}},
ExclusionsStyle → Directive[Thickness[0.02], Red]]
f
2.0

1.5

Out[17]= 1.0

0.5

x1
60 80 100 120 140 160 180 200

It is evident that f assumes its minimum value when x1 is equal to the solution achieved.

Direct solution
The same solution can be obtained directly by exploiting the “Minimize” command in “Wolfram
Mathematica”
In[18]:= ClearAll[x2]

In[19]:= Minimize[{f[x1, x2], c[x1, x2] ≤ C2 && x1 ≥ 0 && x2 ⩾ 0}, {x1, x2}]

NMinimize: NMinimize was unable to generate any initial points satisfying the inequality constraints
63 1 7
- + + ≤ 0. The initial region specified may not contain any feasible points. Changing the initial
10000000 x13 x23
region or specifying explicit initial points may provide a better solution.

Out[19]= {0.924189, {x1 → 74.705, x2 → 121.513}}

You might also like