## Step Cone Pulley Design Optimization

## Main.StepConePulley History

Hide minor edits - Show changes to output

Deleted lines 169-187:

----

(: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 line 150 from:

m.Equation(weight == p*w*(pi/4)*(sum(Inter[0:~~4~~])))

to:

m.Equation(weight == p*w*(pi/4)*(sum(Inter[0:5])))

Added lines 85-88:

'''Acknowledgement'''

Thanks to [[https://www.linkedin.com/in/adam-martin-b6ba77177/|Adam Martin]] for providing the problem statement and the solution.

Changed lines 105-106 from:

a = 1.67 ~~#feet~~

p = 168.5#density lb/ft^3

p = 168.5

to:

a = 1.67 # feet

p = 168.5 # density lb/ft^3

p = 168.5 # density lb/ft^3

Changed lines 108-110 from:

s = 75000~~#420 #~~ stress lbf/ft^2

t = 0.0092 #ft

t = 0.0092 #ft

to:

s = 75000 # stress lbf/ft^2

t = 0.0092 # ft

t = 0.0092 # ft

Deleted line 137:

Changed line 19 from:

The diameters of the input pulley are found by using the ratio between the input shaft rpm and the target output rpm.

to:

The diameters of the input pulley (''d'_in_''') are found by using the ratio between the input shaft rpm and the target output rpm.

Changed line 19 from:

The diameters of the input pulley~~ {`(d_in)`}~~ are found by using the ratio between the input shaft rpm and the target output rpm.

to:

The diameters of the input pulley are found by using the ratio between the input shaft rpm and the target output rpm.

Changed line 19 from:

The diameters of the input pulley {`(d_~~{~~in~~,i}~~)`} are found by using the ratio between the input shaft rpm and the target output rpm.

to:

The diameters of the input pulley {`(d_in)`} are found by using the ratio between the input shaft rpm and the target output rpm.

Changed line 19 from:

The diameters of the input pulley {`(d_{in})`} are found by using the ratio between the input shaft rpm and the target output rpm.

to:

The diameters of the input pulley {`(d_{in,i})`} are found by using the ratio between the input shaft rpm and the target output rpm.

Changed line 19 from:

The diameters of the input pulley {`~~\left~~(d_{in}~~\right~~)`} are found by using the ratio between the input shaft rpm and the target output rpm.

to:

The diameters of the input pulley {`(d_{in})`} are found by using the ratio between the input shaft rpm and the target output rpm.

Changed lines 17-18 from:

{$ W = \rho w \frac{\pi}{4} \left(d_1^2 + d_2^2 + d_3^2 + d_4^2 + d_5^2 + d_{in}~~_1~~^2 + d_{in}~~_2~~^2 + d_{in}~~_3~~^2 + d_{in}~~_4~~^2 + d_{in}~~_5~~^2\right) $}

to:

{$ W = \rho w \frac{\pi}{4} \left(d_1^2 + d_2^2 + d_3^2 + d_4^2 + d_5^2 + d_{in,1}^2 + d_{in,2}^2 + d_{in,3}^2 + d_{in,4}^2 + d_{in,5}^2\right) $}

Changed lines 21-22 from:

{$ d_{in}~~_i~~ = d_i \frac{No_i}{N_{in} $}

to:

{$ d_{in,i} = d_i \frac{No_i}{N_{in}} $}

Changed line 27 from:

{$ C_i \simeq \frac{\pi d_i}{2}\~~bigg~~(1 + \frac{No_i}{N_{in}}\~~bigg~~) + \frac{\~~bigg~~(\displaystyle\frac{No_i}{ N_{in}}-1\~~bigg~~)^2d_i^2}{4a},\qquad i = 1,2,3,4,5$}

to:

{$ C_i \simeq \frac{\pi d_i}{2}\left(1 + \frac{No_i}{N_{in}}\right) + \frac{\left(\displaystyle\frac{No_i}{ N_{in}}-1\right)^2d_i^2}{4a},\qquad i = 1,2,3,4,5$}

Changed lines 17-18 from:

{$ W = \rho w \frac{\pi}{4} (d_1^2 + d_2^2 + d_3^2 + d_4^2 + d_5^2 + d_{in}_1^2 + d_{in}_2^2 + d_{in}_3^2 + d_{in}_4^2 + d_{in}_5^2 $}

to:

{$ W = \rho w \frac{\pi}{4} \left(d_1^2 + d_2^2 + d_3^2 + d_4^2 + d_5^2 + d_{in}_1^2 + d_{in}_2^2 + d_{in}_3^2 + d_{in}_4^2 + d_{in}_5^2\right) $}

Changed lines 21-22 from:

{$ d_{in}_i = d_i \frac{No_i}{N_{in~~}~~} $}

to:

{$ d_{in}_i = d_i \frac{No_i}{N_{in} $}

Changed line 59 from:

[[Attach:~~tubular~~.pdf | Full ~~Tubular~~ Design Assignment (PDF)]]

to:

[[Attach:step_cone_pulley.pdf | Full Step Cone Pulley Design Assignment (PDF)]]

Changed lines 11-12 from:

%width=~~550px~~%Attach:pulley_diagram1.png

to:

%width=400px%Attach:pulley_diagram1.png

Changed line 23 from:

%width=~~550px~~%Attach:pulley_diagram2.png

to:

%width=400px%Attach:pulley_diagram2.png

Changed lines 9-14 from:

The pulley is made up of an aluminum alloy with the density {`(\rho)`} of 168.5 {~~`lb/~~ft^~~3`~~}. The belt used is made of Polyamide (A-2) which has a thickness {`(t)`} of 0.11 in. and a maximum stress {`(s)`} of 75000 {~~`lbf/~~ft^~~2`~~}. The coefficient of friction {`(\mu)`} for this model is 0.8. The fixed distance ~~{`~~(a)~~`}~~ between the centers of the shafts is 1.67 ~~{`ft`}~~. The tension of the tight side of the belt should be at least 2 times that of the the slack side of the belt. The input shaft has a speed of 350 rpm ~~{`~~(Ni)~~`}~~ and the output shaft should be capable of running at speeds of 950 rpm, 650 rpm, 450 rpm, 250 rpm, and 150 rpm. ~~The ~~design variables ~~will be ~~{`d_i`}, the diameter of the ''i''th step, and {`w`} the width of the belt and each step. The objective of this system is to minimize the weight of the step-cone pulley.

The weight is found by the following equation

{$~~f(X) =~~ \rho w~~(~~\pi~~/~~4~~)~~(d_1^2 + d_2^2 + d_3^2 + d_4^2 + d_5^2 + d_{in}_1^2 + d_{in}_2^2 + d_{in}_3^2 + d_{in}_4^2 + d_{in}_5^2~~)~~$}

The weight is found by the following equation

{$

to:

The pulley is made up of an aluminum alloy with the density {`(\rho)`} of 168.5 {`\frac{lb}{ft^3}`}. The belt used is made of Polyamide (A-2) which has a thickness {`(t)`} of 0.11 in. and a maximum stress {`(s)`} of 75000 {`\frac{lbf}{ft^2}`}. The coefficient of friction {`(\mu)`} for this model is 0.8. The fixed distance (''a'') between the centers of the shafts is 1.67 ''ft''. The tension of the tight side of the belt should be at least 2 times that of the the slack side of the belt. The input shaft has a speed of 350 rpm (''Ni'') and the output shaft should be capable of running at speeds of 950 rpm, 650 rpm, 450 rpm, 250 rpm, and 150 rpm.

%width=550px%Attach:pulley_diagram1.png

The design variables are {`d_i`}, the diameter of the ''i''th step, and {`w`} the width of the belt and each step. The objective of this system is to minimize the weight of the step-cone pulley.

The weight (''W'') is found by the following equation

{$ W = \rho w \frac{\pi}{4} (d_1^2 + d_2^2 + d_3^2 + d_4^2 + d_5^2 + d_{in}_1^2 + d_{in}_2^2 + d_{in}_3^2 + d_{in}_4^2 + d_{in}_5^2 $}

%width=550px%Attach:pulley_diagram1.png

The design variables are {`d_i`}, the diameter of the ''i''th step, and {`w`} the width of the belt and each step. The objective of this system is to minimize the weight of the step-cone pulley.

The weight (''W'') is found by the following equation

{$ W = \rho w \frac{\pi}{4} (d_1^2 + d_2^2 + d_3^2 + d_4^2 + d_5^2 + d_{in}_1^2 + d_{in}_2^2 + d_{in}_3^2 + d_{in}_4^2 + d_{in}_5^2 $}

Changed lines 21-22 from:

{$ d_{in}_i = d_i\~~bigg(\~~frac{No_i}{N_{in}}~~\bigg)~~ $}

to:

{$ d_{in}_i = d_i \frac{No_i}{N_{in}} $}

%width=550px%Attach:pulley_diagram2.png

%width=550px%Attach:pulley_diagram2.png

Changed lines 31-32 from:

{$ \theta_i = \pi - 2sin^{-1}\~~bigg~~[\frac{\bigg(\displaystyle\frac{No_i}{ N_{in}}-1\bigg)d_i}{2a}\~~bigg~~] $}

to:

{$ \theta_i = \pi - 2sin^{-1}\left[\frac{\bigg(\displaystyle\frac{No_i}{ N_{in}}-1\bigg)d_i}{2a}\right] $}

Changed lines 53-54 from:

{$ \frac{(T_{1i} - T_{2i}~~)~~\~~pi~~ d_{in}~~_i~~(350)}{33000} $}

to:

{$ \frac{\left(T_{1i} - T_{2i}\right) \pi d_{in,i}(350)}{33000} $}

Changed lines 57-58 from:

{$ e^{\mu\theta_i} \geq 2 $}

to:

{$ e^{ \mu \theta_i} \geq 2 $}

Changed line 82 from:

to:

'''Reference'''

Added lines 1-179:

(:title Step Cone Pulley Design Optimization:)

(:keywords nonlinear, optimization, engineering optimization, structure optimization, engineering design, gekko, tutorial, python:)

(:description Engineering design of a step cone pulley to stay within constraints and meet an optimal criteria. Optimization principles are used to design the system.:)

A step-cone pulley as shown below in the diagram is used to transmit a power of 0.65 horsepower.

%width=550px%Attach:pulley_diagram.png

The pulley is made up of an aluminum alloy with the density {`(\rho)`} of 168.5 {`lb/ft^3`}. The belt used is made of Polyamide (A-2) which has a thickness {`(t)`} of 0.11 in. and a maximum stress {`(s)`} of 75000 {`lbf/ft^2`}. The coefficient of friction {`(\mu)`} for this model is 0.8. The fixed distance {`(a)`} between the centers of the shafts is 1.67 {`ft`}. The tension of the tight side of the belt should be at least 2 times that of the the slack side of the belt. The input shaft has a speed of 350 rpm {`(Ni)`} and the output shaft should be capable of running at speeds of 950 rpm, 650 rpm, 450 rpm, 250 rpm, and 150 rpm. The design variables will be {`d_i`}, the diameter of the ''i''th step, and {`w`} the width of the belt and each step. The objective of this system is to minimize the weight of the step-cone pulley.

The weight is found by the following equation

{$f(X) = \rho w(\pi/4)(d_1^2 + d_2^2 + d_3^2 + d_4^2 + d_5^2 + d_{in}_1^2 + d_{in}_2^2 + d_{in}_3^2 + d_{in}_4^2 + d_{in}_5^2)$}

The diameters of the input pulley {`\left(d_{in}\right)`} are found by using the ratio between the input shaft rpm and the target output rpm.

{$ d_{in}_i = d_i\bigg(\frac{No_i}{N_{in}}\bigg) $}

The belt lengths required for the desired output speeds are determined by the following equation:

{$ C_i \simeq \frac{\pi d_i}{2}\bigg(1 + \frac{No_i}{N_{in}}\bigg) + \frac{\bigg(\displaystyle\frac{No_i}{ N_{in}}-1\bigg)^2d_i^2}{4a},\qquad i = 1,2,3,4,5$}

The angle of the lap of the belt over the ''i''th pulley step is:

{$ \theta_i = \pi - 2sin^{-1}\bigg[\frac{\bigg(\displaystyle\frac{No_i}{ N_{in}}-1\bigg)d_i}{2a}\bigg] $}

The tension on the tight side of the ''i''th step is given by:

{$ T_{1i} = stw $}

The tension of the loose side of the ''i''th step is given by

{$ T_{2i} = \frac{T_{1i}}{e^{\mu\theta_i}} $}

The belt length values are subject to the following constraints:

{$ C_1 - C_2 = 0 $}

{$ C_1 - C_3 = 0 $}

{$ C_1 - C_4 = 0 $}

{$ C_1 - C_5 = 0 $}

The constraint on the power transmitted is given by:

{$ \frac{(T_{1i} - T_{2i})\pi d_{in}_i(350)}{33000} $}

The constraint on tension ratio can be given by:

{$ e^{\mu\theta_i} \geq 2 $}

[[Attach:tubular.pdf | Full Tubular Design Assignment (PDF)]]

Turn in a report with the following sections:

# Title Page with Summary. The Summary should be short (less than 50 words), and give the main optimization results.

# Procedure: Give a brief description of your model. You are welcome to refer to the assignment which should be in the Appendix. Also include:

## A table with the analysis variables, design variables, analysis functions and design functions.

# Results: Briefly describe the results of optimization (values). Also include:

## A table showing the optimum values of variables and functions, indicating binding constraints and/or variables at bounds (highlighted)

## A table giving the various starting points which were tried along with the optimal objective values reached from that point.

# 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:

## 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.

## A βzoomed inβ contour plot of the design space (mostly feasible space) for diameter and thickness, with the feasible region shaded and optimum marked.

# Appendix:

## Listing of your model with all variables and equations

## 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.)

# Reference

* Singiresu S Rao. Engineering Optimization: Theory and Practice. John Wiley & Sons, 2009.

----

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]].

----

'''Solution Help'''

%width=150px%Attach:gekko.png

See [[https://gekko.readthedocs.io/en/latest/|GEKKO documentation]] and [[https://apmonitor.com/wiki/index.php/Main/GekkoPythonOptimization|additional example problems]].

(:source lang=python:)

from gekko import GEKKO

m = GEKKO()

# Constants

pi = 3.14159

a = 1.67 #feet

p = 168.5 #density lb/ft^3

u = 0.8

s = 75000#420 # stress lbf/ft^2

t = 0.0092 #ft

# Variables

w = m.Var(lb=0.01,ub=0.5,name='w')

d = [m.Var(lb=1/5,name='d'+str(i)) for i in range(5)]

N_o = [950, 650, 450, 250, 150]

N_in = 350

weight = m.Var()

# Intermediates

# Diameter for the ith step of the input pulley

d_in = [m.Intermediate(d[i]*(N_o[i]/N_in),\

name='d_in'+str(i)) for i in range(5)]

# Intermediate for objective function

Inter = [m.Intermediate(d[i]**2 + d_in[i]**2,\

name='inter'+str(i)) for i in range(5)]

# Belt lengths

C = [m.Intermediate((pi*d[i])/2*(1 + N_o[i]/N_in) \

+ ((((N_o[i]/N_in) - 1)**2)*d[i]**2)/(4*a) \

+ 2*a,name='c'+str(i)) for i in range(5)]

# Angles of lap of the belt over the ith pulley step

O = [m.Intermediate(pi - 2*m.asin((((N_o[i]/N_in) \

- 1)*d[i])/(2*a)),name='o'+str(i)) for i in range(5)]

# Tensions on the tight side of the ith step (limitation on max tension)

#s = m.Intermediate(420/(t*w))

T1 = [m.Intermediate(s*t*w,name='t1_'+str(i)) for i in range(5)]

# Tensions on the slack side of the ith step

T2 = [m.Intermediate(T1[i]/(m.exp(u*O[i])),\

name='t2_'+str(i)) for i in range(5)]

# Equations

# Weight, Objective Function

m.Equation(weight == p*w*(pi/4)*(sum(Inter[0:4])))

# Constraints

belt_length = [m.Equation(C[0] - C[i + 1] == 0) for i in range (4)]

tension_ratio = [m.Equation(m.exp(u*O[i]) >= 2) for i in range(5)]

power_transmitted = [m.Equation(((T1[i]-T2[i])*pi*d_in[i]*350)/33000 \

>= 0.65) for i in range(5)]

#max_tension = [m.Equation(T1[i]<=720) for i in range(5)]

# Objective and Solve

m.Obj(weight)

m.options.IMODE = 3

m.options.SOLVER = 1

m.solve()

print('Optimal weight: ' + str(weight[0]))

print('Optimal diameter: ' + str(d))

print('Optimal width: ' + str(w[0]))

(:sourceend:)

----

(: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:)

(:keywords nonlinear, optimization, engineering optimization, structure optimization, engineering design, gekko, tutorial, python:)

(:description Engineering design of a step cone pulley to stay within constraints and meet an optimal criteria. Optimization principles are used to design the system.:)

A step-cone pulley as shown below in the diagram is used to transmit a power of 0.65 horsepower.

%width=550px%Attach:pulley_diagram.png

The pulley is made up of an aluminum alloy with the density {`(\rho)`} of 168.5 {`lb/ft^3`}. The belt used is made of Polyamide (A-2) which has a thickness {`(t)`} of 0.11 in. and a maximum stress {`(s)`} of 75000 {`lbf/ft^2`}. The coefficient of friction {`(\mu)`} for this model is 0.8. The fixed distance {`(a)`} between the centers of the shafts is 1.67 {`ft`}. The tension of the tight side of the belt should be at least 2 times that of the the slack side of the belt. The input shaft has a speed of 350 rpm {`(Ni)`} and the output shaft should be capable of running at speeds of 950 rpm, 650 rpm, 450 rpm, 250 rpm, and 150 rpm. The design variables will be {`d_i`}, the diameter of the ''i''th step, and {`w`} the width of the belt and each step. The objective of this system is to minimize the weight of the step-cone pulley.

The weight is found by the following equation

{$f(X) = \rho w(\pi/4)(d_1^2 + d_2^2 + d_3^2 + d_4^2 + d_5^2 + d_{in}_1^2 + d_{in}_2^2 + d_{in}_3^2 + d_{in}_4^2 + d_{in}_5^2)$}

The diameters of the input pulley {`\left(d_{in}\right)`} are found by using the ratio between the input shaft rpm and the target output rpm.

{$ d_{in}_i = d_i\bigg(\frac{No_i}{N_{in}}\bigg) $}

The belt lengths required for the desired output speeds are determined by the following equation:

{$ C_i \simeq \frac{\pi d_i}{2}\bigg(1 + \frac{No_i}{N_{in}}\bigg) + \frac{\bigg(\displaystyle\frac{No_i}{ N_{in}}-1\bigg)^2d_i^2}{4a},\qquad i = 1,2,3,4,5$}

The angle of the lap of the belt over the ''i''th pulley step is:

{$ \theta_i = \pi - 2sin^{-1}\bigg[\frac{\bigg(\displaystyle\frac{No_i}{ N_{in}}-1\bigg)d_i}{2a}\bigg] $}

The tension on the tight side of the ''i''th step is given by:

{$ T_{1i} = stw $}

The tension of the loose side of the ''i''th step is given by

{$ T_{2i} = \frac{T_{1i}}{e^{\mu\theta_i}} $}

The belt length values are subject to the following constraints:

{$ C_1 - C_2 = 0 $}

{$ C_1 - C_3 = 0 $}

{$ C_1 - C_4 = 0 $}

{$ C_1 - C_5 = 0 $}

The constraint on the power transmitted is given by:

{$ \frac{(T_{1i} - T_{2i})\pi d_{in}_i(350)}{33000} $}

The constraint on tension ratio can be given by:

{$ e^{\mu\theta_i} \geq 2 $}

[[Attach:tubular.pdf | Full Tubular Design Assignment (PDF)]]

Turn in a report with the following sections:

# Title Page with Summary. The Summary should be short (less than 50 words), and give the main optimization results.

# Procedure: Give a brief description of your model. You are welcome to refer to the assignment which should be in the Appendix. Also include:

## A table with the analysis variables, design variables, analysis functions and design functions.

# Results: Briefly describe the results of optimization (values). Also include:

## A table showing the optimum values of variables and functions, indicating binding constraints and/or variables at bounds (highlighted)

## A table giving the various starting points which were tried along with the optimal objective values reached from that point.

# 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:

## 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.

## A βzoomed inβ contour plot of the design space (mostly feasible space) for diameter and thickness, with the feasible region shaded and optimum marked.

# Appendix:

## Listing of your model with all variables and equations

## 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.)

# Reference

* Singiresu S Rao. Engineering Optimization: Theory and Practice. John Wiley & Sons, 2009.

----

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]].

----

'''Solution Help'''

%width=150px%Attach:gekko.png

See [[https://gekko.readthedocs.io/en/latest/|GEKKO documentation]] and [[https://apmonitor.com/wiki/index.php/Main/GekkoPythonOptimization|additional example problems]].

(:source lang=python:)

from gekko import GEKKO

m = GEKKO()

# Constants

pi = 3.14159

a = 1.67 #feet

p = 168.5 #density lb/ft^3

u = 0.8

s = 75000#420 # stress lbf/ft^2

t = 0.0092 #ft

# Variables

w = m.Var(lb=0.01,ub=0.5,name='w')

d = [m.Var(lb=1/5,name='d'+str(i)) for i in range(5)]

N_o = [950, 650, 450, 250, 150]

N_in = 350

weight = m.Var()

# Intermediates

# Diameter for the ith step of the input pulley

d_in = [m.Intermediate(d[i]*(N_o[i]/N_in),\

name='d_in'+str(i)) for i in range(5)]

# Intermediate for objective function

Inter = [m.Intermediate(d[i]**2 + d_in[i]**2,\

name='inter'+str(i)) for i in range(5)]

# Belt lengths

C = [m.Intermediate((pi*d[i])/2*(1 + N_o[i]/N_in) \

+ ((((N_o[i]/N_in) - 1)**2)*d[i]**2)/(4*a) \

+ 2*a,name='c'+str(i)) for i in range(5)]

# Angles of lap of the belt over the ith pulley step

O = [m.Intermediate(pi - 2*m.asin((((N_o[i]/N_in) \

- 1)*d[i])/(2*a)),name='o'+str(i)) for i in range(5)]

# Tensions on the tight side of the ith step (limitation on max tension)

#s = m.Intermediate(420/(t*w))

T1 = [m.Intermediate(s*t*w,name='t1_'+str(i)) for i in range(5)]

# Tensions on the slack side of the ith step

T2 = [m.Intermediate(T1[i]/(m.exp(u*O[i])),\

name='t2_'+str(i)) for i in range(5)]

# Equations

# Weight, Objective Function

m.Equation(weight == p*w*(pi/4)*(sum(Inter[0:4])))

# Constraints

belt_length = [m.Equation(C[0] - C[i + 1] == 0) for i in range (4)]

tension_ratio = [m.Equation(m.exp(u*O[i]) >= 2) for i in range(5)]

power_transmitted = [m.Equation(((T1[i]-T2[i])*pi*d_in[i]*350)/33000 \

>= 0.65) for i in range(5)]

#max_tension = [m.Equation(T1[i]<=720) for i in range(5)]

# Objective and Solve

m.Obj(weight)

m.options.IMODE = 3

m.options.SOLVER = 1

m.solve()

print('Optimal weight: ' + str(weight[0]))

print('Optimal diameter: ' + str(d))

print('Optimal width: ' + str(w[0]))

(:sourceend:)

----

(: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:)