Surrogate Optimization in Simulink Design Optimization - MATLAB & Simulink - MathWorks 日本 (2024)

This example uses:

  • Simulink Design OptimizationSimulink Design Optimization
  • Parallel Computing ToolboxParallel Computing Toolbox
  • Global Optimization ToolboxGlobal Optimization Toolbox

Open Live Script

This example shows how to use surrogate optimization in Simulink® Design Optimization™ to optimize the design of a hydraulic cylinder.

This example requires Parallel Computing Toolbox™ software.

Surrogate Optimization

Solving optimization problems involves using different values of the design variables and evaluating the objective function multiple times, especially if the objective function is sufficiently nonsmooth such that a derivative-based solver is not suitable. In such cases, you might need to use a derivative-free solver such as patternsearch, but these solvers tend to require running the objective function many more times. Using such a solver can be time consuming if the objective function is computationally expensive to evaluate. One way to overcome this problem is surrogate optimization. This approach creates a surrogate of the expensive objective function. The surrogate can be evaluated quickly and gives results very similar to the original objective function. Surrogate optimization also tries many starting points, which helps find a global optimum, rather than converging on a solution that, while locally optimal, might not be the global optimum.

Hydraulic Cylinder Model

This example shows how to use surrogate optimization to optimize the response of a hydraulic cylinder. Open the model.

open_system('sdoHydraulicCylinder')

The hydraulic cylinder model is based on the Simulink model sldemo_hydcyl. The model includes:

Specify Design Variables

Now, specify the design variables to tune: the cylinder cross-sectional area Ac and the piston spring constant K.

DesignVars = sdo.getParameterFromModel('sdoHydraulicCylinder',{'Ac','K'});DesignVars(1).Value = 1e-3;DesignVars(1).Minimum = 0.0003;DesignVars(1).Maximum = 0.0013;DesignVars(1).Scale = 0.001;DesignVars(2).Value = 50000;DesignVars(2).Minimum = 10000;DesignVars(2).Maximum = 100000;DesignVars(2).Scale = 1;

Specify Design Requirements

Next, specify design requirements to satisfy the following conditions during optimization:

  • The pressure stays under 1,750,000 N/m.

  • The piston position step response satisfies a rise time of 0.04 seconds and a settling time of 0.05 seconds.

Requirements = struct;Requirements.MaxPressure = sdo.requirements.SignalBound(... 'BoundMagnitudes', [1750000 1750000], ... 'BoundTimes', [0 0.1]);Requirements.PistonResponse = sdo.requirements.StepResponseEnvelope(... 'FinalValue', 0.04, ... 'PercentSettling', 1, ... 'RiseTime', 0.04, ... 'SettlingTime', 0.05);

Signal Logging

Next, specify model signals to log during model simulation. These signals are needed to evaluate the design requirements, that is, to determine whether they are satisfied.

Simulator = sdo.SimulationTest('sdoHydraulicCylinder');PistonPosition_Info = Simulink.SimulationData.SignalLoggingInfo;PistonPosition_Info.BlockPath = 'sdoHydraulicCylinder/Cylinder Assembly';PistonPosition_Info.OutputPortIndex = 2;PistonPosition_Info.LoggingInfo.LoggingName = 'PistonPosition';PistonPosition_Info.LoggingInfo.NameMode = 1;Pressures_Info = Simulink.SimulationData.SignalLoggingInfo;Pressures_Info.BlockPath = 'sdoHydraulicCylinder/Cylinder Assembly';Pressures_Info.LoggingInfo.LoggingName = 'Pressures';Pressures_Info.LoggingInfo.NameMode = 1;Simulator.LoggingInfo.Signals = [... PistonPosition_Info; ... Pressures_Info];

Create Optimization Objective Function

Create a function that is called at each optimization iteration to evaluate the design requirements. Use an anonymous function with one argument that calls sdoHydraulicCylinder_optFcn.

optimfcn = @(P) sdoHydraulicCylinder_optFcn(P,Simulator,Requirements);

The sdoHydraulicCylinder_optFcn function uses the simulator and requirements objects to evaluate the design. Type edit sdoHydraulicCylinder_optFcn to examine the function in more detail.

Optimization Using Derivative-Based Solver

Now, try solving this optimization problem using a derivative-based solver. Specify optimization options.

Options = sdo.OptimizeOptions;Options.Method = 'fmincon';Options.UseParallel = true;Options.OptimizedModel = Simulator;

Run the optimization by calling sdo.optimize with the objective function handle, parameters to optimize, and options.

[Optimized_DesignVars,Info] = sdo.optimize(optimfcn,DesignVars,Options);
Configuring parallel workers for optimization...Analyzing and transferring files to the workers ...done.Analyzing and transferring files to the workers ...done.Parallel workers configured for optimization. Optimization started 2023-May-04, 13:37:43 max First-order Iter F-count f(x) constraint Step-size optimality 0 5 0.001 0.3033 1 10 0.00123343 0.3726 0.233 100 2 20 0.00117522 0.3545 0.0582 100 3 28 0.00121802 0.3678 0.0428 100 4 39 0.00117879 0.3556 0.0392 100 5 48 0.00120789 0.3646 0.0291 100 6 60 0.00119077 0.3593 0.0171 100 7 72 0.00119977 0.3621 0.00901 100 8 80 0.00119977 0.3621 0.00089 100Converged to an infeasible point.fmincon stopped because the size of the current step is less thanthe value of the step size tolerance but constraints are notsatisfied to within the value of the constraint tolerance.Removing data from parallel workers...Data removed from parallel workers.

At the end of optimization iterations, the "max constraint" column is still positive, indicating that the derivative-based solver does not satisfy all of the requirements.

Optimization Options Using Surrogate Solver

Since the derivative-based solver does not satisfy all the requirements, try surrogateopt as a derivative-free solver. Specify optimization options.

Options = sdo.OptimizeOptions;Options.Method = 'surrogateopt';Options.MethodOptions.MaxFunctionEvaluations = 100;Options.UseParallel = true;Options.OptimizedModel = Simulator;

Run the optimization by calling sdo.optimize with the objective function handle, parameters to optimize, and options.

[Optimized_DesignVars,Info] = sdo.optimize(optimfcn,DesignVars,Options);
Configuring parallel workers for optimization...Analyzing and transferring files to the workers ...done.Analyzing and transferring files to the workers ...done.Parallel workers configured for optimization. Optimization started 2023-May-04, 13:38:35 Current Current F-count f(x) max constraint f(x) max constraint Trial type 1 0.001 0.303264 0.001 0.303264 initial 2 0.001 0.303264 0.0003 0.411103 random 3 0.001 0.303264 0.0008 1.02568 random 4 0.001 0.303264 0.00055 0.578226 random 5 0.001 0.303264 0.00105 1.25679 random 6 0.001 0.303264 NaN Inf random 7 0.001 0.303264 0.001175 2.14476 random 8 0.001 0.303264 NaN Inf random 9 0.000925 0.252177 0.000925 0.252177 random 10 0.000925 0.252177 NaN Inf random 11 0.000925 0.252177 0.0011125 0.333109 random 12 0.000925 0.252177 NaN Inf random 13 0.000925 0.252177 0.0008625 0.724191 random 14 0.000925 0.252177 NaN Inf random 15 0.000925 0.252177 0.0009875 1.65452 random 16 0.000925 0.252177 0.0007375 4.26818 random 17 0.000925 0.252177 0.0012375 0.399354 random 18 0.000925 0.252177 0.00076875 0.985955 random 19 0.000925 0.252177 0.00126875 1.39122 random 20 0.000925 0.252177 0.00051875 0.487797 random 21 0.000925 0.252177 0.00101875 1.23392 random 22 0.000925 0.252177 NaN Inf random 23 0.00089375 0.226608 0.00089375 0.226608 random 24 0.00089375 0.226608 NaN Inf random 25 0.00089375 0.226608 0.00114375 3.56038 random 26 0.00089375 0.226608 NaN Inf random 27 0.00089375 0.226608 0.00095625 8.44124 random 28 0.00089375 0.226608 NaN Inf random 29 0.00089375 0.226608 0.00120625 0.325598 random 30 0.00058125 0.0293624 0.00058125 0.0293624 random 31 0.00058125 0.0293624 NaN Inf adaptive 32 0.00058125 0.0293624 NaN Inf adaptive 33 0.00058125 0.0293624 NaN Inf adaptive 34 0.00058125 0.0293624 NaN Inf adaptive 35 0.00058125 0.0293624 NaN Inf adaptive 36 0.00058125 0.0293624 NaN Inf adaptive 37 0.00058125 0.0293624 NaN Inf adaptive 38 0.00058125 0.0293624 0.000382646 0.259073 adaptive 39 0.00058125 0.0293624 0.000872844 0.18585 adaptive 40 0.00058125 0.0293624 NaN Inf adaptive 41 0.00058125 0.0293624 NaN Inf adaptive 42 0.00058125 0.0293624 NaN Inf adaptive 43 0.00058125 0.0293624 0.000346006 0.100726 adaptive 44 0.00058125 0.0293624 0.00043983 0.372926 adaptive 45 0.00058125 0.0293624 0.000510274 0.598923 adaptive 46 0.00058125 0.0293624 0.000510805 0.276542 adaptive 47 0.00058125 0.0293624 0.000616738 0.353985 adaptive 48 0.00058125 0.0293624 0.000651695 0.138744 adaptive 49 0.00058125 0.0293624 0.000652226 1.69733 adaptive 50 0.000582031 0.0286493 0.000582031 0.0286493 adaptive Current Current F-count f(x) max constraint f(x) max constraint Trial type 51 0.000582031 0.0286493 0.000581641 0.0290052 adaptive 52 0.000582031 0.0286493 0.000581445 0.0291836 adaptive 53 0.000582031 0.0286493 0.00058125 0.0292252 adaptive 54 0.000582031 0.0286493 0.000581348 0.029273 adaptive 55 0.000582031 0.0286493 0.00108125 0.821321 random 56 0.000582031 0.0286493 NaN Inf random 57 0.000582031 0.0286493 0.00083125 2.64838 random 58 0.000582031 0.0286493 NaN Inf random 59 0.000582031 0.0286493 0.00106562 0.768714 random 60 0.000582031 0.0286493 0.000315625 5.20466 random 61 0.000582031 0.0286493 0.000815625 0.725618 random 62 0.000582031 0.0286493 0.000440625 0.067243 random 63 0.000582031 0.0286493 0.000940625 0.901158 random 64 0.000582031 0.0286493 0.000690625 0.475563 random 65 0.000582031 0.0286493 0.00119062 1.14814 random 66 0.000582031 0.0286493 NaN Inf random 67 0.000582031 0.0286493 0.000878125 1.89266 random 68 0.000582031 0.0286493 0.000628125 7.48485 random 69 0.000582031 0.0286493 0.00112812 0.359996 random 70 0.000582031 0.0286493 NaN Inf random 71 0.000582031 0.0286493 0.00125312 0.367383 random 72 0.000582031 0.0286493 NaN Inf random 73 0.000582031 0.0286493 0.00100312 2.73758 random 74 0.000582031 0.0286493 NaN Inf random 75 0.000582031 0.0286493 0.00103437 0.258263 random 76 0.000582031 0.0286493 0.000784375 1.32496 random 77 0.000582031 0.0286493 0.00128437 3.05351 random 78 0.000582031 0.0286493 0.000659375 1.20157 random 79 0.000582031 0.0286493 0.00115937 1.52728 random 80 0.000582031 0.0286493 NaN Inf random 81 0.000582031 0.0286493 0.000909375 1.28986 random 82 0.000582031 0.0286493 0.000721875 0.11391 random 83 0.000582031 0.0286493 0.00122187 0.780649 random 84 0.000582031 0.0286493 NaN Inf random 85 0.000582031 0.0286493 0.0003 0.0907138 adaptive 86 0.000582031 0.0286493 NaN Inf adaptive 87 0.000582031 0.0286493 NaN Inf adaptive 88 0.000582031 0.0286493 NaN Inf adaptive 89 0.000357693 -0.000458298 0.000357693 -0.000458298 adaptive 90 0.000357693 -0.000458298 0.000445736 0.0595388 adaptive 91 0.000357693 -0.000458298 0.000472898 0.0296971 adaptive 92 0.000357693 -0.000458298 NaN Inf adaptive 93 0.000357693 -0.000458298 0.000467197 0.0100422 adaptive 94 0.000357693 -0.000458298 0.000349748 0.0373376 adaptive 95 0.000357693 -0.000458298 0.000355658 0.0328266 adaptive 96 0.000357693 -0.000458298 0.000332693 0.0625643 adaptive 97 0.000357693 -0.000458298 0.000357693 -0.000458298 best valueThe current solution is feasible. surrogateopt stopped because it exceeded the function evaluation limit set by the 'MethodOptions.MaxFunctionEvaluations' property in the sdo.OptimizeOptions object.If the solution needs to be improved, you could try increasing the function evaluation limit.Removing data from parallel workers...Data removed from parallel workers.

Using surrogateopt, all the design requirements are satisfied, as indicated by a negative value in the "max constraint" column.

Update the model with the optimized parameter values.

sdo.setValueInModel('sdoHydraulicCylinder',Optimized_DesignVars);

In this example, a solver using surrogates successful on an optimization problem where a derivative-based solver is unsuccessful. The surrogateopt solver is a global solver that tries many starting points. By using a surrogate of the model, surrogateopt needs to run the model only a moderate number of times.

See Also

sdo.OptimizeOptions | sdo.optimize

Related Topics

  • Single Hydraulic Cylinder Simulation
  • Surrogate Optimization Using the Response Optimizer App
Surrogate Optimization in Simulink Design Optimization
- MATLAB & Simulink
- MathWorks 日本 (2024)

References

Top Articles
French Linen SC06 Painting the Past krijtverf
Painting the Past Matt Emulsion Krijtverf French Linen (SC06) 2.5 L | bol
Spasa Parish
Rentals for rent in Maastricht
159R Bus Schedule Pdf
Sallisaw Bin Store
Black Adam Showtimes Near Maya Cinemas Delano
Espn Transfer Portal Basketball
Pollen Levels Richmond
11 Best Sites Like The Chive For Funny Pictures and Memes
Things to do in Wichita Falls on weekends 12-15 September
Craigslist Pets Huntsville Alabama
Paulette Goddard | American Actress, Modern Times, Charlie Chaplin
Red Dead Redemption 2 Legendary Fish Locations Guide (“A Fisher of Fish”)
What's the Difference Between Halal and Haram Meat & Food?
R/Skinwalker
Rugged Gentleman Barber Shop Martinsburg Wv
Jennifer Lenzini Leaving Ktiv
Justified - Streams, Episodenguide und News zur Serie
Epay. Medstarhealth.org
Olde Kegg Bar & Grill Portage Menu
Cubilabras
Half Inning In Which The Home Team Bats Crossword
Amazing Lash Bay Colony
Juego Friv Poki
Dirt Devil Ud70181 Parts Diagram
Truist Bank Open Saturday
Water Leaks in Your Car When It Rains? Common Causes & Fixes
What’s Closing at Disney World? A Complete Guide
New from Simply So Good - Cherry Apricot Slab Pie
Drys Pharmacy
Ohio State Football Wiki
Find Words Containing Specific Letters | WordFinder®
FirstLight Power to Acquire Leading Canadian Renewable Operator and Developer Hydromega Services Inc. - FirstLight
Webmail.unt.edu
2024-25 ITH Season Preview: USC Trojans
Metro By T Mobile Sign In
Restored Republic December 1 2022
Lincoln Financial Field Section 110
Free Stuff Craigslist Roanoke Va
Wi Dept Of Regulation & Licensing
Pick N Pull Near Me [Locator Map + Guide + FAQ]
Crystal Westbrooks Nipple
Ice Hockey Dboard
Über 60 Prozent Rabatt auf E-Bikes: Aldi reduziert sämtliche Pedelecs stark im Preis - nur noch für kurze Zeit
Wie blocke ich einen Bot aus Boardman/USA - sellerforum.de
Infinity Pool Showtimes Near Maya Cinemas Bakersfield
Dermpathdiagnostics Com Pay Invoice
How To Use Price Chopper Points At Quiktrip
Maria Butina Bikini
Busted Newspaper Zapata Tx
Latest Posts
Article information

Author: Moshe Kshlerin

Last Updated:

Views: 6579

Rating: 4.7 / 5 (77 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Moshe Kshlerin

Birthday: 1994-01-25

Address: Suite 609 315 Lupita Unions, Ronnieburgh, MI 62697

Phone: +2424755286529

Job: District Education Designer

Hobby: Yoga, Gunsmithing, Singing, 3D printing, Nordic skating, Soapmaking, Juggling

Introduction: My name is Moshe Kshlerin, I am a gleaming, attractive, outstanding, pleasant, delightful, outstanding, famous person who loves writing and wants to share my knowledge and understanding with you.