MV-3022: Optimize a 4-Bar Model
Tutorial Level: Intermediate In this tutorial you will setup an optimization problem using MotionView's Optimization Wizard for a 4-bar model.
- Defining point coordinates as design variables
- Defining a response type 'Root Mean Square Deviation' for matching curves
- Using the responses as objectives
- Running the optimization and post-processing the results
- [Optional] Infeasible Designs in MotionSolve optimization
- Introduction
- In this tutorial, the locations of the joints of a 4-bar mechanism are
optimized to obtain a desired motion of the coupler. MotionSolve's DSA (Design Sensitivity Analysis)
capability is used to calculate sensitivities.
Figure 1. 4 bar model with joint types Table 1. Point X Y A -45 45 B 65 260 C 300 500 D 515 -85
Review the Model
In this step, you will review the 4-bar model in MotionView.
- Open the file mv_3022_initial_4bar_opt.mdl in MotionView.
-
Review the entities in the model.
Add Design Variables
- In the Project Browser, right-click on Model and select Optimization Wizard from the context menu.
-
In the Design Variables page, click on the
Points tab.
The points are listed in Figure 3:
Figure 3. Optimization Wizard – Points Tab -
For points A, B, C, and D, make the x and y coordinates design variables. Click
the
(Filter datamembers) icon.
-
In the Filter dialog, click to turn off the
Z check box.
Figure 4. - Click OK.
- In the Model Tree, select Point A, Point B, Point C, and Point D. Then click Add.
-
Modify the upper and lower bounds of the design variables according to Table 2:
You have finished the process of setting design variables.
Table 2. DV Lower Bound Upper Bound Point A(DV) - X -50 50 Point A(DV) - Y -50 50 Point B(DV) - X 20 80 Point B(DV) - Y 180 280 Point C(DV) - X 240 380 Point C(DV) - Y 400 620 Point D(DV) - X 180 520 Point D(DV) - Y -100 20
Add Response Variables
Now you will add response variables to the optimization.
- Trajectory of Coupler CM – DX
- Trajectory of Coupler CM – DY
- Click on the Responses page.
-
Click on the
button.
-
Change the Label to
'rms2_dx'
. - Click OK to create a response variable.
- Once the response variable is created, under Response Type, choose Root Mean Square Deviation.
- Double-click the Curve collector and choose Desired Coupler Path DX for the Desired Curve user input. This is the target curve for Couple-DX.
-
For Response Expression, type the expression
`DX({b_bc.cm.id})`
(DX of CM coupler body). -
Follow the steps again to create one more Root Mean Square
Deviation response. Use Table 3 to fill in the
details.
The completed Responses page should appear as shown in Figure 5:
Table 3. RV Desired Curve Response Expression rms2_dx Desired Coupler Path DX `DX({b_bc.cm.id})`
rms2_dy Desired Coupler Path DY `DY({b_bc.cm.id})`
Figure 5. Completed Responses page
Add Objectives and Constraints
In this step you will add two objectives to the problem.
- Navigate to the Goals page.
-
Under Objectives, click
.
This will add an objective with the response rv_rms2_dx. -
For Weight choose
1.0
retain the Type as min (you want to minimize the response). - Repeat these steps to add another objective. Choose rv_rms2_dy for the second objective.
-
For Weight choose
1.0
retain the Type as min.There are no constraints in this problem, so you have now finished model setup. The model is ready to solve.Figure 6. Defining objectives
Run the Optimization
Now you will run the optimization.
- Navigate to the Solutions page.
- Activate the Plot Optimization Summary check box.
-
Click on Save & Optimize to start the
optimization.
Once the optimization process is complete, the text window displays the optimized design variables values, final value of the responses and optimized cost function.
Figure 7. Optimization text window after the optimization is completed Table 4. DV Expected From Optimizer p_0.x 0 -0.0660 p_0.y 0 -0.2796 p_1.x 40 39.97 p_1.y 200 199.71 p_2.x 360 360.07 p_2.y 600 600.26 p_3.x 400 400.44 p_3.y 0 -0.0406
Post-Process
In this step you will post-process the results of the optimization run.
-
Once the solution is finished, navigate to the Review
Results page.
The Summary tab lists the history of design variables, responses and objective functions in a tabular format. In this tutorial, the optimized design variables are from iteration 27.
Figure 8. Summary tab listing design variables, responses and cost function iteration-wise -
Click the Plot tab. Plot Overall
Objective versus Iteration
variable.
The Plot tab helps to visualize variation of design variables, response variables and cost function using graphs. You can choose to plot any number of variables along the y-axis with respect to a variable along the x-axis.
Figure 9. Plot of overall objective (log scale) vs. iteration number Note: You can also see how a particular design variable varied across an iteration. For example, select p_b.x (Point B-X) in the Y list and click Apply.Figure 10. -
Animate the configuration generated during any iteration.
- In the Animation tab, from the Iteration drop-down menu choose the iteration number you want to animate (for this tutorial, choose Iteration 27.
- Click Load Result to load the animation corresponding to the iteration you chose.
Figure 11. Animation tab in the Post Processing page - Load the results from Iteration 27.
- Use the Archive Model location browser to choose a file path.
- Click Export.
-
Observe how the path of the coupler for the optimized result compares with the
desired target path.
Identify Infeasible Designs/Possible Recovery (Optional)
In this step, you will use a powerful feature in MotionSolve to obtain the optimal design by recovering from a failed iteration.
It is not uncommon for a mechanical system to be limited by some sort of physical constraints. In this four bar example, the Grashof constraints have to be satisfied in order to make the input link a crank. When optimizer chooses a new design, those constraints are likely to be violated regardless of whether they are added as optimization constraints or not. The optimizer in MotionSolve has a recovery mode to help recover from such infeasible design and let optimization proceed. To demonstrate how the optimizer recovers in this tutorial, you will change the initial design and see how it works.
-
Return to the Design Variables page and change the
nominal value, upper and lower bounds as shown in Figure 15:
Figure 15. Value of Design Variables The four bar mechanism should look like the example in Figure 16:Figure 16. Four bar mechanism after changing the value of Dvs - Retain the Responses, Objectives and Constraints you defined earlier in the tutorial.
-
Run an optimization with a different Output file in the Solutions page as
4bar_opt_for_recover.py.
The number of iterations will change due to a different initial design.Important: Pay attention to the last column ‘Reduced Step’ in the solver output:In this example, the optimizer has found infeasible design in iteration 2-7; it is then told to reduce the step size until a feasible design is found.
Figure 17. Solver output when recovery mode is invoked -
Check the output files. In most cases, the output files could tell you why
solver fails at a specific point and how you can avoid it if possible.
Figure 18. Subfolders that contain the infeasible designs - dvValues.txt: Value of design variables
- 4bar_opt_for_recover.abf: MotionSolve output file
- 4bar_opt_for_recover.h3d: Animation file (provided only when available)
- 4bar_opt_for_recover.log: MotionSolve log file
- 4bar_opt_for_recover.mrf: MotionSolve output file
- 4bar_opt_for_recover.xml: MotionSolve xml input file
Figure 19. Output for each infeasible design -
Load 4bar_opt_for_recover.h3d in folder
Infeasible Point 1 -- iter-2.
You can see that the system enters a lock-up position before the solver crashes:
Figure 20. -
Check the result.
The result you see in the example is very close to what you get in STEP 5 and the cost function is reduced significantly. This shows you can get the optimal design even with infeasible design encountered in the intermediate step. However, the optimality is not guaranteed in some cases. When that happens, you can improve the result by adding proper constraints based on your investigation in previous steps. For four bar mechanism, you can add Grashof constraints. An example of how to do this in MotionSolve is included.