change search range of response optimization

2 views (last 30 days)
I am trying to use the Responce Optimizer package in simulink. I set up the search range for my all my tuning design varibles.
IT seems to be working as in hte varibles are change by some amount but it seems to be vey small.
For example if my initlal varible is lets say 500.0 it is changing by 0.1-1.0
My varibles are if different magnitudes, so i dont want them all change by 10-100 increaments
some of my varibles are of the magnitude of 1.0 or 10.0 this should not change by 100s
how cam I make the make the tunning of the varbiles by different increaments?
EDIT:
I am using R2021a, I dont know why its not letting me select this verison.

Answers (1)

Shubham
Shubham on 17 May 2024
Hi Nathaniel,
In Simulink's Response Optimizer, the step size or increment by which the variables change during optimization depends on various factors, including the optimization algorithm's settings, the scale of the problem, and the sensitivity of the objective function to changes in each variable. If you're finding that the optimization process is making very small adjustments to your variables, and you want to control the step size or influence how significantly each variable can change, there are a few approaches you can consider:
1. Scaling of Variables
One common approach is to scale your variables such that they are of a similar magnitude. This doesn't mean changing the variables themselves but rather how they are represented in the optimization problem. For variables that are naturally on the order of hundreds or thousands, you could divide them by a scaling factor so that an increment of, say, 0.1 after scaling corresponds to a larger actual change.
However, you mentioned that you do not want all variables to change by the same increments due to their differing magnitudes, which makes direct scaling less applicable.
2. Custom Optimization Settings
You can customize the optimization settings in the Response Optimizer. By adjusting parameters such as the step tolerance, you might be able to influence the optimization algorithm to make larger adjustments to the variables. Here's how you can access and modify these settings in MATLAB R2021a:
  • Open the Response Optimizer.
  • Go to the Optimization Settings.
  • Look for settings like Step Tolerance, Function Tolerance, and Optimization Algorithm. Different algorithms and tolerances can lead to different optimization behaviors.
3. Normalization within the Objective Function
Another approach is to normalize the changes within the objective or cost function itself. This involves manually adjusting how the optimization algorithm perceives the significance of changes to each variable. For instance, if you have a cost function that sums errors across different variables, you could weight these errors by the inverse of the desired step size for each variable. This would make the optimizer "see" larger errors when there are small changes in variables that you want to be more sensitive and smaller errors for variables that are less sensitive.
4. Use of Constraints
If you're not already doing so, consider using constraints to limit the range of your variables explicitly. While this doesn't directly control the increment size, it does allow you to specify a more targeted search space for the optimization, potentially leading to more meaningful adjustments within that space.
5. Manual Tuning of Variables
In cases where automatic optimization doesn't yield the desired control over variable adjustments, a hybrid approach might be necessary. You could manually adjust the more sensitive variables to a ballpark range based on your domain knowledge and then let the optimizer fine-tune them within that narrower range.
Given the complexity of optimization problems and the nuances of Simulink's Response Optimizer, there might not be a one-size-fits-all solution. It may require some experimentation with the above strategies to find the right balance for your specific model and optimization goals.
If you're experiencing limitations with the GUI or if certain options aren't available, consider scripting your optimization task using MATLAB code. The sdo.optimize function can provide more flexibility by allowing you to specify custom optimization options programmatically.
I hope this helps!

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!