Tutorial 3, Part 1: Optimization of a linear truss structure
Truss structure Optimization goal is to minimize the mass of the structure (initial mass is 8393 lbs) Maximum stress is 25000 psi (limit stress=40166/global safety factor=1.6) Maximum displacement is 20 in Design variables: cross section areas of trusses 0.1 in² ≤ Xi=ai ≤ 20 in² Load parameters: F=100000 lbf Material parameters: E=107 psi, =0.2, =0.1 lbs/in³ Element length: L=360 in Responses from linear finite element analysis are mass, displacements at loading points and stresses for each element Parametric optimizer like oS are running a black box CAE-process, therefore the gradients are determined with single side or central differences. Tutorial 3, Part 1: Optimization
Task description Parameterization of the problem Definition and evaluation of DOE scheme Definition and evaluation of MOP Single objective, constraint optimization Gradient based optimization Adaptive response surface method Evolutionary algorithm Multi objective optimization Pareto optimization with evolutionary algorithm Tutorial 3, Part 1: Optimization
Project manager Open the project manager Define project name 1. 2. 3. Open the project manager Define project name Create a new project directory Copy optiSLang Examples/10bar_truss into project directory Tutorial 3, Part 1: Optimization
Parameterization of the problem 1. 2. 3. 4. 5. Start a new parametrize workflow Define workflow name Create a new problem specification Enter problem file name Start parametrize editor Tutorial 3, Part 1: Optimization
Parameterization of the problem 1. 2. 3. Click “open file” icon in parametrize editor Browse for the SLang input file 10bar_truss.s Choose file type as INPUT Tutorial 3, Part 1: Optimization
Parameterization of the problem 2. 1. 3. Mark value of a1 in the input file Define a1 as input parameter Define parameter name Tutorial 3, Part 1: Optimization
Parameterization of the problem 1. 2. Open parameter in parameter tree Enter lower and upper bounds (0.1 … 20.0) Set settings as default for other parameters 3. Tutorial 3, Part 1: Optimization
Parameterization of the problem Repeat the procedure for the other cross section areas Lower and upper bounds are automatically set to 0.1 … 20.0 Tutorial 3, Part 1: Optimization
Parameterization of the problem 2. 1a. 1b. 3b. Open output file of solver 10bar_response.out Mark output value in editor Define mass as output parameter Repeat for displacements and stress values (take care of sign) Tutorial 3, Part 1: Optimization
Parameterization of the problem 2. 1. Mark final string Define it as success string Tutorial 3, Part 1: Optimization
Parameterization of the problem 3. 1. 2. Open objective section (double click) Create new objective function Define mass as objective Tutorial 3, Part 1: Optimization
Parameterization of the problem 2. 3. 1. Open constraint section (double click) Create inequality constraint equation for each displacement value 1-|disp_node/20| (scaled to one) Create inequality constraint equation for each stress value 1-|stress_element/25000| (scaled to one) Tutorial 3, Part 1: Optimization
Parameterization of the problem Close parametrization editor Check overview for inputs Check overview for outputs Tutorial 3, Part 1: Optimization
Parameterization of the problem Check overview for objectives Check overview for constraints Tutorial 3, Part 1: Optimization
Design Of Experiments (DOE) 2. 1. 2. 3. Start a new DOE workflow Define workflow name and workflow identifier Enter problem file name Tutorial 3, Part 1: Optimization
Design Of Experiments (DOE) 1. 3. Enter solver call (slang –b 10bar_truss.s) Start DOE evaluation Generate 100 Latin Hypercube samples Tutorial 3, Part 1: Optimization
Design Of Experiments (DOE) 2. 1. 4. 3. 1. 2. Check input samples Check input distributions Check input correlations Continue to evaluate response values Tutorial 3, Part 1: Optimization
Design Of Experiments (DOE) Reload file in optimization mode to find best design from DOE samples as possible start value for optimization task Best design with valid constraints: mass = 3285 (39% of initial mass) Tutorial 3, Part 1: Optimization
Meta-Model of Optimal Prognosis (MOP) 2. 1. 3. 4. 5. Start a new MOP workflow Define workflow name Define workflow identifier Choose DOE result file Choose optional problem file Tutorial 3, Part 1: Optimization
Meta-Model of Optimal Prognosis (MOP) 1. 4. 2. 3. 5. CoP settings (sample splitting or cross validation) Investigated approximation models DCoP - accepted reduction in prediction quality to simplify model Filter settings Selection of inputs and outputs Tutorial 3, Part 1: Optimization
Meta-Model of Optimal Prognosis (MOP) MOP indicates only a1, a3, a8 as important variables for maximum stress and displacements, but all inputs are important for objective function Tutorial 3, Part 1: Optimization
Meta-Model of Optimal Prognosis (MOP) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 max_stress max_disp stress10 stress9 stress8 stress6 stress5 stress4 stress3 stress2 stress1 disp4 disp2 mass MOP filter For single stress values used in constraint equations, each input variable occurs at least twice as important parameter Reduction of number of inputs seems not possible Tutorial 3, Part 1: Optimization
Gradient-based optimization 2. 1. 2. 3. 4. Start a new Gradient-based workflow Define workflow name and workflow identifier Enter problem file name Choose optimization method Enter solver call (slang –b 10bar_truss.s) Start gradient workflow Tutorial 3, Part 1: Optimization
Gradient-based optimization 3. 1. 2. Decrease size of diffentiation interval Choose single sided differences to reduce number of solver calls Choose best valid sample from DOE workflow as start value 3. Tutorial 3, Part 1: Optimization
Gradient-based optimization Best design with valid constraints: mass = 1595 (19% of initial mass) Elements 2,5,6 and 10 are set to minimum Stresses in remaining elements reach maximum value 153 solver calls (+100 from DOE) Tutorial 3, Part 1: Optimization
Adaptive response surface 2. 1. 2. 3. Start a new ARSM workflow Define workflow name and workflow identifier Enter problem file name Enter solver call (slang –b 10bar_truss.s) Start ARSM workflow Tutorial 3, Part 1: Optimization
Adaptive response surface 2. 1. 2. 3. GA & NLPQL as optimization method Approximation settings: keep polynomial regression Advanced settings: no recycle of previous support points Tutorial 3, Part 1: Optimization
Adaptive response surface Best design with valid constraints: mass = 1613 (19% of initial mass) Elements 2,6 and are set to minimum, 5 and 10 are close to minimum 360 solver calls Tutorial 3, Part 1: Optimization
Evolutionary algorithm (global search) 2. 1. 2. 3. 4. Start a new NOA workflow Define workflow name and workflow identifier Enter problem file name Choose optimization algorithm (EA with global search as default) Enter solver call (slang –b 10bar_truss.s) and start workflow Tutorial 3, Part 1: Optimization
Evolutionary algorithm (global search) 1. Choose start population size Keep defaults for Selection, Crossover and Mutation Tutorial 3, Part 1: Optimization
Evolutionary algorithm (global search) Best design with valid constraints: mass = 2087 (25% of initial mass) 392 solver calls Tutorial 3, Part 1: Optimization
Evolutionary algorithm (local search) 1. 2a. 2b. Keep defaults for Start population, Selection, Crossover and Mutation Choose start design from global EA optimization Tutorial 3, Part 1: Optimization
Evolutionary algorithm (local search) Best design with valid constraints: mass = 2049 (24% of initial mass) 216 solver calls (+392 from global search) Tutorial 3, Part 1: Optimization
Overview optimization results Method Settings Mass Solver calls Constraints violated Initial - 8393 DOE LHS 3285 100 75% NLPQL diff. interval 0.01%, single sided 1595 153(+100) 42% ARSM defaults (local) 1613 360 80% EA global defaults 2087 392 56% EA local 2049 216(+392) 79% PSO global 2411 400 36% GA global 2538 381 25% SDI local 1899 70% Parametric optimizer like oS are running a black box CAE-process, therefore the gradients are determined with single side or central differences. NLPQL with small differentiation interval with best DOE as start design is most efficient Local ARSM gives similar parameter set EA/GA/PSO with default settings come close to global optimum GA with adaptive mutation has minimum constraint violation Tutorial 3, Part 1: Optimization
Parameterization of second objective 1. 2. 3. 4. Start a new parametrize workflow Define workflow name Create a copy and modify it Open truss.pro and enter new problem file name Tutorial 3, Part 1: Optimization
Parameterization of second objective 2. 1. 4. 3. Create a new objective Enter name, activate and enter function obj2 = max_stress Delete stress constraints Close editor and check objectives Tutorial 3, Part 1: Optimization
Pareto optimization with EA 2. 1. 2. 3. 4. Start a new Pareto workflow Define workflow name and workflow identifier Enter problem file name Choose EA as optimization algorithm Enter solver call (slang –b 10bar_truss.s) and start workflow Tutorial 3, Part 1: Optimization
Pareto optimization with EA 1. Find optimal designs for start population: Open ARSM optimization results in statistic mode Select anthill plot mass vs. max_stress Select some designs around the optimum which seem to be Pareto optimal Remember the design numbers Tutorial 3, Part 1: Optimization
Pareto optimization with EA 1. 2. Select “specify start population” Increase minimum and maximum number of generations Keep defaults for Selection, Crossover and Mutation Tutorial 3, Part 1: Optimization
Pareto optimization with EA 2. 1. 1. Import design from ARSM optimization Choose 20 designs (preferred designs from anthill plot and the remaining from the designs with minimal mass) Tutorial 3, Part 1: Optimization
Pareto optimization with EA Pareto front Tutorial 3, Part 1: Optimization