FINAL INDEPENDENT PROJECT
Final Independent Project: -
Topic: -
Multi-objective optimal design of cycloid speed reducer based on genetic algorithm.
Platform used to Solve the problem: -
Matlab
Introduction: -
-
Cycloid speed reducers have found wide applications in the automation field as industry robots, machine tools, automatic machinery and other aspects owing to their excellent characteristics, e.g. high transmission accuracy, large reduction ratio, great load capacity, high efficiency, low backlash, long service life, high shock load capacity, etc.
-
Therefore, the research and development of the cycloid speed reducers have been investigated by many researchers, including operating principle, conditions for non-undercutting manufacturing, force analysis and efficiency, and development of new mechanisms.
Structure of Cycloid Drive: -

Fig. 1. The structure of cycloid drive (1. Input shaft, 2. Dual eccentric sleeves, 3. Pin gear housing, 4. Pivoted arm bearing, 5. Output shaft, 6. Pin, 7. Pin sleeve, 8. Pin wheel, 9. Cycloid gear, g. Cycloid gear, b. pinwheel, H. Carrier, W. Output part).
Problem Statement: -
- Taking K-H-V cycloid speed reducers as the research subject, an optimization methodology based on genetic algorithm.
-
The goal of the optimization is to simultaneously minimize volume and maximize efficiency.
-
The volume and the efficiency of the reducer are simultaneously taken as objective functions. The design variables including the short width coefficient, the diameter of the pin, the width of the cycloid gear, etc. are defined.
Formulating the Objective Functions: -
The efficiency η and the volume V of cycloid speed reducers are respectively viewed as objective functions for multi-objective optimization.
Where, efficiency η

Finally, Efficiency: -

Objective Function of Volume: -

Design Variables: -
-
The diameter of the pin wheel central circle (D_p),
-
The diameter of the pin wheel (d_rp),
-
The diameter of the pin (d_sw),
-
Short width coefficient (K_1),
-
The diameter of the pin central circle (D_w),
-
The diameter of the cycloid gear center hole (D),
-
The width of the cycloid gear (B).
-
Thus, the design parameter vector can be written as

Objective Functions: -
The two objective functions are

Initial values of Design variables: -
| Design variable | Symbol | Unit | Interval | Initial value |
| Diameter of the pin wheel central circle | D_p | mm | 140<=D_p<=155 | 144 |
| Diameter of pin wheel | d_rp | mm | 7<=d_rp<=10.4 | 10 |
| Width of cycloid gear | B | mm | 7<=B<=12 | 11 |
| Diameter of cycloid gear center hole | D | mm | 50<=D<=55 | 53.5 |
| Short width coefficient | K_1 | - | 0.65<=K_1<=0.9 | 0.6069 |
| Diameter of pin central circle | D_w | mm | 88<=D_w<=104 | 90 |
| Diameter of pin | d_sw | mm | 11<=d_sw<=14 | 12 |
Constraints: -
These constraints are inequality constraints and there is no equality constraint in the problem considered.


Methodology: -
Genetic algorithm: -
- A genetic algorithm is a search heuristic that is inspired by Charles Darwin’s theory of natural evolution. This algorithm reflects the process of natural selection where the fittest individuals are selected for reproduction in order to produce offspring of the next generation.
- The process of natural selection starts with the selection of fittest individuals from a population. They produce offspring which inherit the characteristics of the parents and will be added to the next generation. If parents have better fitness, their offspring will be better than parents and have a better chance at surviving. This process keeps on iterating and at the end, a generation with the fittest individuals will be found.
-
Five phases are considered in a genetic algorithm.
- Initial population
- Fitness function
- Selection
- Crossover
- Mutation

- Initial Population: -
The process begins with a set of individuals which is called a Population.
- Fitness Function: -
The fitness function determines how fit an individual is (the ability of an individual to compete with other individuals). It gives a fitness score to each individual. The probability that an individual will be selected for reproduction is based on its fitness score.
- Selection: -
The idea of selection phase is to select the fittest individuals and let them pass their genes to the next generation.
- Crossover: -
Crossover is the most significant phase in a genetic algorithm. For each pair of parents to be mated, a crossover point is chosen at random from within the genes.
- Mutation: -
In certain new offspring formed, some of their genes can be subjected to a mutation with a low random probability. Mutation occurs to maintain diversity within the population and prevent premature convergence.
Implementing the above problem (with no constraints) using Matlab: -
- Program for the Genetic algorithm solver (when no constraints given): -
%% Function file for GA solver function [x,fval,exitflag,output,population,score] = solver(nvars,lb,ub,PopulationSize_Data,MaxGenerations_Data,MaxStallGenerations_Data,FunctionTolerance_Data,ConstraintTolerance_Data) % Algorithm options = optimoptions('gamultiobj'); % Population size options = optimoptions(options,'PopulationSize', PopulationSize_Data); % Generations options = optimoptions(options,'MaxGenerations', MaxGenerations_Data); options = optimoptions(options,'MaxStallGenerations', MaxStallGenerations_Data); % Tolerance options = optimoptions(options,'FunctionTolerance', FunctionTolerance_Data); options = optimoptions(options,'ConstraintTolerance', ConstraintTolerance_Data); % Plotting options = optimoptions(options,'PlotFcn',{@gaplotpareto}); % Crossover function options = optimoptions(options,'CrossoverFcn', { @crossoverintermediate [] }); options = optimoptions(options,'Display', 'off'); [x,fval,exitflag,output,population,score] = gamultiobj(@efficiency,nvars,[],[],[],[],lb,ub,[],options); - Program for defining the Objective function: -
%% Creating Objective function file function output = efficiency(input) %% Variables are assigned to inputs x1 = input(1); x2 = input(2); x3 = input(3); x4 = input(4); x5 = input(5); x6 = input(6); x7 = input(7); %% Objective function for Efficiency F1 = (1- ((1-(x1-x2)*((4*0.01)/(x5*x1*43*pi)))/(1+(x1-x2)*((4*0.01)/(x5*x1*pi))))*((1-(4*0.6*x5*x7*x1)/(pi*x6*(x7+3))))*0.99*0.995^2); %% Objective function for Volume F2 = ((1/4)*pi*x3*(((x1-x5*(x1/44)-x2)^2)-((x7+3+x5*(x1/44))^2*43-x4^2))+x5*(x1/44)*43*x3); %% output output = [F1, F2]; - Program for Obtaining the solution: -
clc clear all close all %% Obtaining solution by giving inputs % number of design variables nvars = 7; format short % lower bounds lb = [140,7,7,50,0.65,88,11]; % upper bounds ub = [155,10.4,12,55,0.9,104,14]; % population size PopulationSize_Data = 50; % Generations MaxGenerations_Data = 500; MaxStallGenerations_Data = 500; % tolerance FunctionTolerance_Data = 0.001; ConstraintTolerance_Data = 0.001; %% solver [x,fval,exitflag,output,population,score] = solver(nvars,lb,ub,PopulationSize_Data,MaxGenerations_Data, ... MaxStallGenerations_Data,FunctionTolerance_Data,ConstraintTolerance_Data); optimal_solution = x optimal_objective_functions = fval %% Plotiing hold on plot(fval(:,1),fval(:,2),'o') xlabel('efficiency') ylabel('volume') - Results Obtained: -


Plot for Objective_1 (efficiency) vs Objective_2 (Volume).

Implementing the above problem with constraints using Matlab: -
- Program for the Genetic algorithm solver (when constraints given).
%% Function file for GA solver function [x,fval,exitflag,output,population,score] = solver(nvars,lb,ub,PopulationSize_Data,MaxGenerations_Data,MaxStallGenerations_Data,FunctionTolerance_Data,ConstraintTolerance_Data) % Algorithm options = optimoptions('gamultiobj'); % Population size options = optimoptions(options,'PopulationSize', PopulationSize_Data); % Generations options = optimoptions(options,'MaxGenerations', MaxGenerations_Data); options = optimoptions(options,'MaxStallGenerations', MaxStallGenerations_Data); % Tolerance options = optimoptions(options,'FunctionTolerance', FunctionTolerance_Data); options = optimoptions(options,'ConstraintTolerance', ConstraintTolerance_Data); % Plotting options = optimoptions(options,'PlotFcn',{@gaplotpareto}); % Crossover function options = optimoptions(options,'CrossoverFcn', { @crossoverintermediate [] }); options = optimoptions(options,'Display', 'off'); [x,fval,exitflag,output,population,score] = gamultiobj(@efficiency,nvars,[],[],[],[],lb,ub,@Cycloid_const,options); - Program for defining the Objective function: -
%% Creating Objective function file function output = efficiency(input) %% Variables are assigned to inputs x1 = input(1); x2 = input(2); x3 = input(3); x4 = input(4); x5 = input(5); x6 = input(6); x7 = input(7); %% Objective function for Efficiency F1 = (1- ((1-(x1-x2)*((4*0.01)/(x5*x1*43*pi)))/(1+(x1-x2)*((4*0.01)/(x5*x1*pi))))*((1-(4*0.6*x5*x7*x1)/(pi*x6*(x7+3))))*0.99*0.995^2); %% Objective function for Volume F2 = ((1/4)*pi*x3*(((x1-x5*(x1/44)-x2)^2)-((x7+3+x5*(x1/44))^2*43-x4^2))+x5*(x1/44)*43*x3); %% output output = [F1, F2]; - Program to define the Constraints: -
%% Function file for non linear Constraints function [C, Ceq] = Cycloid_const(input) %% Design Variables input x1 = input(1); x2 = input(2); x3 = input(3); x4 = input(4); x5 = input(5); x6 = input(6); x7 = input(7); %% Inserting Constraints in C C = [(x2/2)-(x1/2)*(((1-x5)^2)/(44*x5+1)); 0.65-x5; x5-0.9; 1.6-(x1/x2)*sin(pi/44); (x1/x2)*sin(pi/44)-1; 0.418*sqrt((2.1*10^5*4.4*6300)/(x3*x5*43*x1*0.8))-1000; ((1.41*4.4*9550*0.75*20)/(x5*x1*1440*x2^2))-150; 300*sqrt((x5*6300*x1)/(43*x6*x3*((x7/2)+1.5)^2*44+0.5*x5*x1*(((x7/2)+1.5))))-580; ((4.4*1.4*6300*(1.5*x3+0.75))/(0.1*32*x6*x7^3))-200; 165-x1; x1-180; 0.06*x1-x6+x4+(x7+2*1.5+((x5*x1)/44)+0.15); 0.03*x1-x6*sin(pi/32)+(x7+2*1.5+((x5*x1)/44)+0.15); 0.05*x1-x3; x3-0.1*x1; 5000-(10^6/(60*1474))*(64900/49452)^(10/3)]; Ceq = []; end - Program for Obtaining the solution: -
clc clear all close all %% Obtaining solution by giving inputs % number of design variables nvars = 7; format short % lower bounds lb = [140,7,7,50,0.65,88,11]; % upper bounds ub = [155,10.4,12,55,0.9,104,14]; % population size PopulationSize_Data = 50; % Generations MaxGenerations_Data = 500; MaxStallGenerations_Data = 500; % tolerance FunctionTolerance_Data = 0.001; ConstraintTolerance_Data = 0.001; %% solver [x,fval,exitflag,output,population,score] = solver(nvars,lb,ub,PopulationSize_Data,MaxGenerations_Data, ... MaxStallGenerations_Data,FunctionTolerance_Data,ConstraintTolerance_Data); optimal_solution = x optimal_objective_functions = fval %% Plotiing hold on plot(fval(:,1),fval(:,2),'o') xlabel('efficiency') ylabel('volume') - Results Obtained: -

Plot for Efficiency vs Volume (with constraints): -

Conclusion: -
- In the optimization based on maximum efficiency, the width of cycloid gear, which is not a function of efficiency, should be given as a constant value. The axial size of the reducer is unrestricted, which will cause larger volume or heavy weight of reducers.
- Therefore, the optimization based on maximum efficiency is suitable for the occasions where high efficiency is required, and volume of reducer is unrestricted.
- In the optimization based on minimum volume, the values the diameter of the pin wheel central circle and the width of the cycloid gear are smaller than that of the value before optimization, respectively. The results demonstrated that axial and radial sizes of the reducers are both reduced, resulting that the structure is more compact.
- In the optimization, the ranges of the width of the cycloid gear should be given. Otherwise, the cycloid gear attempts to turn thin in order to receive heavy load with small volume. This will certainly lead to bad stability and low efficiency.
- The optimization based on minimum volume is suitable for the occasions where small volume is required, and cost of the reducer is unrestricted.
- The effectiveness of this optimization was demonstrated by applying the multi-objective optimization design of the cycloid speed reducer, a moderate increase in efficiency (3.09%) and a drastic reduction in volume (33.64%) are achieved.
- The results obtained are not the conclusive result because for every run of the program the values might change.
References: -
[1] J.H. Shin, S.M. Kwon, On the lobe profile design in a cycloid reducer using instant velocity center [J], Mech. Mach. Theory 41 (5) (2006) 596–616.
[2] Y.W. Hwang, C.F. Hsieh, Geometric design using hypotrochoid and non-undercutting conditions for an internal cycloidal gear [J], ASME J. Mech. Des. 129 (4) (2007) 413–420.
[3] W.S. Wang, Z.H. Fong, Undercutting and contact characteristics of longitudinal cycloidal spur gears generated by the dual face-hobbing method [J], Mech. Mach. Theory 46 (4) (2011) 399–411.
[4] S. Li, Design and strength analysis methods of the trochoidal gear reducers [J], Mech. Mach. Theory 81 (10) (2014) 140–154.
[5] W.S. Lin, Y.P. Shih, J.J. Lee, Design of a two-stage cycloidal gear reducer with tooth modifications [J], Mech. Mach. Theory 79 (9) (2014) 184–197.
[6] M. Blagojevic, N. Marjanovic, Z. Djordjevic, et al., A new design of a two-stage cycloidal speed reducer [J], ASME J. Mech. Des. 133 (8) (2011) 11–17.
[7] D.F. Thompson, S. Gupta, A. Shukla, Tradeoff analysis in minimum volume design of multi-stage spur gear reduction units [J], Mech. Mach. Theory 35 (5) (2000) 609–627.
Google Drive link for PPT, m-files.
https://drive.google.com/drive/folders/1Fw5FddWR6yfO78-G-E1Bo-kyGxBfE4R-?usp=sharing