The original calibration of plasticity for a necking dogbone (work in 2020) is here: Necking of a metal dogbone, Smaller model The test data for that example is synthetic test data, so there is a known, exact answer:
Note: All of the work shown below was performed using a development version of the material calibration app.
Some of the run-times shown below may be slow because of using a development version of 3DX. This is NOT a released feature of R2024x, but something hidden behind an environment variable. This feature was released with R2025x GA, upgraded to the public cloud on Saturday, Nov 16, 2024. This work has the potential to significantly improve calibration run-times, especially for longer running FE mode calibrations.
If you open the 3dxml file attached here to this post, it will look like this: (you need to set 3DX unit preference for stress to psi)
Image #1
If you were to click on Calibrate from this (above) starting point, it will succeed (as per the 2020 post).
Now change the value of "B" from 50,000 psi to 14,500 psi. Cache the parameters. Turn "Compute parameter sensitivities" off.
Click on Evaluate, it will look like this:
Image #2
Click on Calibrate. The calibration finishes, but does not look good. A Hooke-Jeeves calibration ends the same way. A Powell calibration takes a long time and ends the same way.
If a customer were to experience this behavior, certainly I would tell them that optimizations can be sensitive to the choice of initial parameters. We know this and we try our best to have the software create good/reasonable initial parameter values.
So, this shines a light on the topic of how to discern the best starting parameter values ?
- Try changing a few parameters “by hand” and running a few Evaluate runs prior to the actual calibration.
- Traditional Isight folks might say run a DOE prior to starting your optimization work.
- Supply min/max bounds and use a Particle Swarm (etc.) optimizer
- Use Neural Network surrogates to get better starting values, but again one needs to supply min/max bounds.
So (2) & (3) can be a challenge because knowing what bounds to set is often quite difficult.
Using the same starting parameters as shown in the 2nd image, here are the bounds I chose. It certainly helps to know a bit about your equations. It also helps when parameters have a direct correlation to parts of the test data. So, it may be easy to conclude that the value for E is good and deselect it as a design variable, for this example I chose to keep it as a design variable and to add bounds. It is easy to select bounds for A, as long as you know that A is the virgin yield. It is a little less easy to select an upper bound for B. I have set bounds on the 4 parameters and performed a surrogate based calibration using all the default surrogate settings.
Now, under the Optimization Controls, select to "Use surrogates". Use all default values.
Must set min / max bounds on all active parameters, see image below for values. Cache parameters. Click "Calibrate".
The curve looks pretty close, and the parameter values look good as well. The run-time, 515s looks great.
FWIW, a Particle Swarm calibration will succeed, but using the default controls, it will take a very long time. Starting from the same initial parameters (Image #2 plus add min/max bounds), the Particle Swarm calibration takes 53,195s, or 14.77 hours. A Differential Evolution calibration succeeds nicely in 9,172s, 903 function evals.
This zip file contains the 3dxml file:
Added on April 14, 2025:
This is using the current public cloud, R2025 HotFix 1.23 (FD01). This image is a repeat of the Evaluate shown in Image #2 above.
With this starting point a Calibration using surrogates takes 580 secs.
Under "Advanced optimization settings", you will notice the "Num parallel evaluations" setting:
I have 6 cpus on my laptop, so I start from Image #2 and again perform a calibration, this time setting "Num parallel evaluations" =6. The Calibration time drops to 310 secs.