Two Bar Truss Design
Main.TwoBarTruss History
Hide minor edits - Show changes to output
Added lines 4-5:
A two-bar truss is a type of truss structure consisting of two bars connected at the ends by either pins or joints. This type of truss is commonly used in construction and engineering applications.
Changed lines 34-40 from:
from gekko import GEKKO
except:
# pip install gekko
import pip
pip.main(['install','gekko'])
to:
from gekko import GEKKO
Deleted lines 206-224:
----
(:html:)
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'apmonitor'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
(:htmlend:)
Changed lines 24-27 from:
!!!! Python ([[https://gekko.readthedocs.io/en/latest/|GEKKO]]) Solution
[[https://gekko.readthedocs.io/en/latest/|GEKKO]] is optimization software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP).
[[https://gekko.readthedocs.io/en/latest/|GEKKO]] is optimization software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP).
to:
!!!! Python ([[https://gekko.readthedocs.io/en/latest/|GEKKO]]) Solution
[[https://gekko.readthedocs.io/en/latest/|GEKKO]] is optimization software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP).
[[https://gekko.readthedocs.io/en/latest/|GEKKO]] is optimization software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP).
Changed line 180 from:
<iframe width="560" height="315" src="https://www.youtube.com/embed/ah-Cbrim93I" frameborder="0" allowfullscreen></iframe>
to:
<iframe width="560" height="315" src="https://www.youtube.com/embed/ah-Cbrim93I" frameborder="0" allowfullscreen></iframe>
Changed line 190 from:
<iframe width="560" height="315" src="https://www.youtube.com/embed/uOTdLfvgYHU" frameborder="0" allowfullscreen></iframe>
to:
<iframe width="560" height="315" src="https://www.youtube.com/embed/uOTdLfvgYHU" frameborder="0" allowfullscreen></iframe>
Changed line 202 from:
<iframe width="560" height="315" src="https://www.youtube.com/embed/GB0NYz-k8ZM?rel=0" frameborder="0" allowfullscreen></iframe>
to:
<iframe width="560" height="315" src="https://www.youtube.com/embed/GB0NYz-k8ZM?rel=0" frameborder="0" allowfullscreen></iframe>
Changed line 219 from:
dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';
to:
dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';
Changed lines 223-224 from:
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
to:
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
Deleted lines 19-24:
!!!! APM Python Tutorial
* [[Attach:twobar_apm_python.zip | APM Python Two Bar Files]]
Changed line 21 from:
<iframe width="560" height="315" src="https://www.youtube.com/embed/ah-Cbrim93I" frameborder="0" allowfullscreen></iframe>
to:
<iframe width="560" height="315" src="https://www.youtube.com/embed/KwELgUu1u-E" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Deleted lines 23-34:
!!!! APM MATLAB Tutorial
* [[Attach:twobar_apm_matlab.zip | APM MATLAB Two Bar Files]]
(:html:)
<iframe width="560" height="315" src="https://www.youtube.com/embed/uOTdLfvgYHU" frameborder="0" allowfullscreen></iframe>
(:htmlend:)
----
Added lines 172-191:
----
!!!! APM Python Tutorial
* [[Attach:twobar_apm_python.zip | APM Python Two Bar Files]]
(:html:)
<iframe width="560" height="315" src="https://www.youtube.com/embed/ah-Cbrim93I" frameborder="0" allowfullscreen></iframe>
(:htmlend:)
----
!!!! APM MATLAB Tutorial
* [[Attach:twobar_apm_matlab.zip | APM MATLAB Two Bar Files]]
(:html:)
<iframe width="560" height="315" src="https://www.youtube.com/embed/uOTdLfvgYHU" frameborder="0" allowfullscreen></iframe>
(:htmlend:)
Changed lines 42-44 from:
!!!! Python (GEKKO) Solution
GEKKO is optimization software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP).
GEKKO is optimization software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP).
to:
!!!! Python ([[https://gekko.readthedocs.io/en/latest/|GEKKO]]) Solution
[[https://gekko.readthedocs.io/en/latest/|GEKKO]] is optimization software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP).
[[https://gekko.readthedocs.io/en/latest/|GEKKO]] is optimization software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP).
Added lines 43-46:
GEKKO is optimization software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP).
%width=300px%Attach:gekko.png
Changed line 103 from:
!!!! Generate Contour Plot (Python)
to:
!!!! Solution Contour Plot (Python)
Changed line 103 from:
!!!! Python Generates Contour Plots
to:
!!!! Generate Contour Plot (Python)
Changed lines 99-105 from:
to:
(:sourceend:)
----
!!!! Python Generates Contour Plots
(:source lang=python:)
----
!!!! Python Generates Contour Plots
(:source lang=python:)
Changed lines 22-23 from:
!!!! Python Tutorial
to:
!!!! APM Python Tutorial
Changed lines 32-33 from:
!!!! MATLAB Tutorial
to:
!!!! APM MATLAB Tutorial
Added lines 39-177:
----
!!!! Python (GEKKO) Solution
(:source lang=python:)
import numpy as np
# import gekko, pip install if needed
try:
from gekko import GEKKO
except:
# pip install gekko
import pip
pip.main(['install','gekko'])
from gekko import GEKKO
# create new model
m = GEKKO()
# declare model parameters
width = m.Param(value=60)
thickness = m.Param(value=0.15)
density = m.Param(value=0.3)
modulus = m.Param(value=30000)
load = m.Param(value=66)
# declare variables and initial guesses
height = m.Var(value=30.00,lb=10.0,ub=50.0)
diameter = m.Var(value=3.00,lb=1.0,ub=4.0)
weight = m.Var()
# intermediate variables with explicit equations
leng = m.Intermediate(m.sqrt((width/2)**2 + height**2))
area = m.Intermediate(np.pi * diameter * thickness)
iovera = m.Intermediate((diameter**2 + thickness**2)/8)
stress = m.Intermediate(load * leng / (2*area*height))
buckling = m.Intermediate(np.pi**2 * modulus \
* iovera / (leng**2))
deflection = m.Intermediate(load * leng**3 \
/ (2 * modulus * area * height**2))
# implicit equations
m.Equation(weight==2*density*area*leng)
m.Equation(weight < 24)
m.Equation(stress < 100)
m.Equation(stress < buckling)
m.Equation(deflection < 0.25)
# minimize weight
m.Obj(weight)
# solve optimization
m.solve() # remote=False for local solve
print ('')
print ('--- Results of the Optimization Problem ---')
print ('Height: ' + str(height.value))
print ('Diameter: ' + str(diameter.value))
print ('Weight: ' + str(weight.value))
## Generate a contour plot
# Import some other libraries that we'll need
# matplotlib and numpy packages must also be installed
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
# Constants
pi = 3.14159
dens = 0.3
modu = 30000.0
load = 66.0
# Analysis variables
wdth = 60.0
thik = 0.15
# Design variables at mesh points
x = np.arange(10.0, 30.0, 2.0)
y = np.arange(1.0, 3.0, 0.3)
hght, diam = np.meshgrid(x, y)
# Equations and Constraints
leng = ((wdth/2.0)**2.0 + hght**2)**0.5
area = pi * diam * thik
iovera = (diam**2.0 + thik**2.0)/8.0
wght = 2.0 * dens * leng * area
strs = load * leng / (2.0 * area * hght)
buck = pi**2.0 * modu * iovera / (leng**2.0)
defl = load * leng**3.0 / (2.0*modu * area * hght**2.0)
# Create a contour plot
# Visit https://matplotlib.org/examples/pylab_examples/contour_demo.html
# for more examples and options for contour plots
plt.figure()
# Weight contours
CS = plt.contour(hght, diam, wght)
plt.clabel(CS, inline=1, fontsize=10)
# Stress<100
CS = plt.contour(hght, diam, strs,[100.0],colors='k',linewidths=[4.0])
plt.clabel(CS, inline=1, fontsize=10)
# Deflection<0.25
CS = plt.contour(hght, diam, defl,[0.25],colors='b',linewidths=[4.0])
plt.clabel(CS, inline=1, fontsize=10)
# Stress-Buckling<0
CS = plt.contour(hght, diam, strs-buck,[0.0],colors='r',linewidths=[4.0])
plt.clabel(CS, inline=1, fontsize=10)
# Add some labels
plt.title('Two Bar Optimization Problem')
plt.xlabel('Height')
plt.ylabel('Diameter')
# Save the figure as a PNG
plt.savefig('contour1.png')
# Create a new figure to see more detail
plt.figure()
# Weight contours
CS = plt.contour(hght, diam, wght)
plt.clabel(CS, inline=1, fontsize=10)
# Stress<100
CS = plt.contour(hght, diam, strs,[90.0,100.0],colors='k',linewidths=[0.5, 4.0])
plt.clabel(CS, inline=1, fontsize=10)
# Deflection<0.25
CS = plt.contour(hght, diam, defl,[0.22,0.25],colors='b',linewidths=[0.5, 4.0])
plt.clabel(CS, inline=1, fontsize=10)
# Stress-Buckling<0
CS = plt.contour(hght, diam, strs-buck,[-5.0,0.0],colors='r',linewidths=[0.5, 4.0])
plt.clabel(CS, inline=1, fontsize=10)
# Add some labels
plt.title('Two Bar Optimization Problem')
plt.xlabel('Height')
plt.ylabel('Diameter')
# Save the figure as a PNG
plt.savefig('contour2.png')
# Show the plots
plt.show()
(:sourceend:)
Added line 49:
<iframe width="560" height="315" src="https://www.youtube.com/embed/GB0NYz-k8ZM?rel=0" frameborder="0" allowfullscreen></iframe>
Deleted line 44:
Added lines 43-46:
(:html:)
<iframe width="560" height="315" src="https://www.youtube.com/embed/uOTdLfvgYHU" frameborder="0" allowfullscreen></iframe>
(:htmlend:)
Added lines 21-23:
* [[Attach:twobar_apm_python.zip | APM Python Two Bar Files]]
Added lines 29-31:
* [[Attach:twobar_apm_matlab.zip | APM MATLAB Two Bar Files]]
Added lines 29-36:
----
!!!! Objective Function Plot
One part of the assignment asks you to select width and load as variables for a 3d optimal surface plot and plot the solution of the optimization problem to minimize deflection at each of the width / load combinations. This tutorial example shows how to do this same activity but for the alternative problem of minimizing weight.
* [[Attach:twobar_obj_plot.zip | Two Bar Objective Plot Files]]
Added line 15:
* [[Attach:twobar_matlab.pdf | Two Bar FMINCON MATLAB Tutorial]]
Changed line 17 from:
* [[Attach:twobar_matlab.pdf | Two Bar FMINCON MATLAB Tutorial]]
to:
* [[Attach:twobar_mathematica.pdf | Two Bar Mathematica Tutorial]]
Changed line 40 from:
var disqus_shortname = 'Two_Bar_Truss_Optimization'; // required: replace example with your forum shortname
to:
var disqus_shortname = 'apmonitor'; // required: replace example with your forum shortname
Changed line 40 from:
var disqus_shortname = 'Two Bar Truss Optimization'; // required: replace example with your forum shortname
to:
var disqus_shortname = 'Two_Bar_Truss_Optimization'; // required: replace example with your forum shortname
Changed lines 30-51 from:
to:
Attach:collaborative50.png This assignment can be completed in collaboration with others. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
----
----
(:html:)
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'Two Bar Truss Optimization'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
(:htmlend:)
----
----
(:html:)
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'Two Bar Truss Optimization'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
(:htmlend:)
Added line 19:
!!!! Python Tutorial
Changed lines 22-25 from:
to:
(:htmlend:)
!!!! MATLAB Tutorial
(:html:)
!!!! MATLAB Tutorial
(:html:)
Added lines 21-22:
<br>
<iframe width="560" height="315" src="https://www.youtube.com/embed/uOTdLfvgYHU" frameborder="0" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/uOTdLfvgYHU" frameborder="0" allowfullscreen></iframe>
Added lines 19-22:
(:html:)
<iframe width="560" height="315" src="https://www.youtube.com/embed/ah-Cbrim93I" frameborder="0" allowfullscreen></iframe>
(:htmlend:)
<iframe width="560" height="315" src="https://www.youtube.com/embed/ah-Cbrim93I" frameborder="0" allowfullscreen></iframe>
(:htmlend:)
Changed line 24 from:
Attach:collaborative50.png This assignment can be completed in collaboration with others. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
to:
Attach:collaborative50.png This assignment can be completed in collaboration with others. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
Changed lines 13-14 from:
* [[Attach:twobar_apmonitor.pdf | Two Bar APM MATLAB Tutorial]]
to:
* [[Attach:twobar_apm_matlab.pdf | Two Bar APM MATLAB Tutorial]]
* [[Attach:twobar_apm_python.pdf | Two Bar APM Python Tutorial]]
* [[Attach:twobar_apm_python.pdf | Two Bar APM Python Tutorial]]
Added line 14:
* [[Attach:twobar_isight.pdf | Two Bar Isight Tutorial]]
Changed lines 13-14 from:
* [[Attach:twobar_apmonitor.pdf | Two Bar APMonitor Tutorial]]
* [[Attach:twobar_matlab.pdf | Two Bar MATLAB Tutorial]]
* [[Attach:twobar_matlab.pdf | Two Bar MATLAB Tutorial]]
to:
* [[Attach:twobar_apmonitor.pdf | Two Bar APM MATLAB Tutorial]]
* [[Attach:twobar_matlab.pdf | Two Bar FMINCON MATLAB Tutorial]]
* [[Attach:twobar_matlab.pdf | Two Bar FMINCON MATLAB Tutorial]]
Deleted line 13:
Changed lines 11-16 from:
This introductory assignment is designed as a means of demonstrating the optimization capabilities of a number of software packages. Below are tutorials for solving this problem with a number of software tools.
to:
This introductory assignment is designed as a means of demonstrating the optimization capabilities of a number of software packages. Below are tutorials for solving this problem with a number of software tools. Below are a few step-by-step tutorials.
* [[Attach:twobar_apmonitor.pdf | Two Bar APMonitor Tutorial]]
* [[Attach:twobar_excel.pdf | Two Bar Excel Tutorial]]
* [[Attach:twobar_matlab.pdf | Two Bar MATLAB Tutorial]]
* [[Attach:twobar_optdesX.pdf | Two Bar OptdesX Tutorial]]
* [[Attach:twobar_apmonitor.pdf | Two Bar APMonitor Tutorial]]
* [[Attach:twobar_excel.pdf | Two Bar Excel Tutorial]]
* [[Attach:twobar_matlab.pdf | Two Bar MATLAB Tutorial]]
* [[Attach:twobar_optdesX.pdf | Two Bar OptdesX Tutorial]]
Changed line 14 from:
Attach:collaborative50.png This assignment can be completed as a collaborative assignment. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
to:
Attach:collaborative50.png This assignment can be completed in collaboration with others. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
Changed line 1 from:
(:title Two Bar Optimization Problem:)
to:
(:title Two Bar Truss Design:)
Changed line 14 from:
This assignment can be completed as a collaborative Attach:collaborative50.png assignment. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
to:
Attach:collaborative50.png This assignment can be completed as a collaborative assignment. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
Deleted lines 4-7:
This assignment can be completed as a collaborative Attach:collaborative50.png assignment. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
----
Changed lines 11-14 from:
This introductory assignment is designed as a means of demonstrating the optimization capabilities of a number of software packages. Below are tutorials for solving this problem with a number of software tools.
to:
This introductory assignment is designed as a means of demonstrating the optimization capabilities of a number of software packages. Below are tutorials for solving this problem with a number of software tools.
----
This assignment can be completed as a collaborative Attach:collaborative50.png assignment. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
----
This assignment can be completed as a collaborative Attach:collaborative50.png assignment. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
Added lines 4-7:
----
This assignment can be completed as a collaborative Attach:collaborative50.png assignment. Additional guidelines on individual, collaborative, and group assignments are provided under the [[Main/CourseStandards | Expectations link]].
----
Added lines 7-8:
[[Attach:twobar.pdf | Two Bar Assignment]]
Changed line 11 from:
to:
This introductory assignment is designed as a means of demonstrating the optimization capabilities of a number of software packages. Below are tutorials for solving this problem with a number of software tools.
Added lines 1-9:
(:title Two Bar Optimization Problem:)
(:keywords nonlinear, optimization, engineering optimization, two-bar optimization, engineering design, interior point, active set, differential, algebraic, modeling language, university course:)
(:description Engineering design of a two-bar structure to support a load. Optimization principles are used to design the system.:)
A design of the truss is specified by a unique set of values for the analysis variables: height (H), diameter, (d), thickness (t), separation distance (B), modulus of elasticity (E), and material density (rho). Suppose we are interested in designing a truss that has a minimum weight, will not yield, will not buckle, and does not deflect "excessively,” and so we decide our model should calculate weight, stress, buckling stress and deflection.
Attach:twobar.png
[[Attach:twobar.pdf | Two Bar Assignment]]
(:keywords nonlinear, optimization, engineering optimization, two-bar optimization, engineering design, interior point, active set, differential, algebraic, modeling language, university course:)
(:description Engineering design of a two-bar structure to support a load. Optimization principles are used to design the system.:)
A design of the truss is specified by a unique set of values for the analysis variables: height (H), diameter, (d), thickness (t), separation distance (B), modulus of elasticity (E), and material density (rho). Suppose we are interested in designing a truss that has a minimum weight, will not yield, will not buckle, and does not deflect "excessively,” and so we decide our model should calculate weight, stress, buckling stress and deflection.
Attach:twobar.png
[[Attach:twobar.pdf | Two Bar Assignment]]