Run optimization to match data-fit on multiple nodes rather than a single one.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • leonardo.marin@utah.edu
    Junior Member
    • Dec 2022
    • 1

    Run optimization to match data-fit on multiple nodes rather than a single one.

    Dear FeBio team,

    Is it possible to run optimization to match experimental data (data-fit) on multiple nodes rather than a single one?

    I am working on an optimization problem where the optimization parameter is the Young's Modulus of a material, and the experimental data to match is the vertical displacement of a set of nodes. At the moment, my model works if I set the optimization with a single node, rather multiple. For example, I simply tried to add a second node to the list, and the optimization still works, but the results I get are optimized only relative to one of the two nodes, and not, for example, to the average value of the vertical displacement of the two. I have tried in some other ways, but without success.

    This is my input file to run the optimization, which works correctly, but only for one node:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <febio_optimize version="2.0">
    <Options type="levmar">
    <obj_tol>0.00001</obj_tol>
    <f_diff_scale>0.0001</f_diff_scale>
    <log_level>LOG_DEFAULT</log_level>
    <print_level>PRINT_ITERATIONS</print_level>
    </Options>
    <Parameters>
    <param name="fem.material('Trab_Mat').E">0.10,0.0001,100. 00</param>
    </Parameters>
    <Objective type="data-fit">
    <fnc type="parameter">
    <param name="fem.node_data('uy', 1118)"/>
    </fnc>
    <data>
    <pt>0.0,0.00000000</pt>
    <pt>0.1,0.00098545</pt>
    <pt>0.2,0.00196370</pt>
    <pt>0.3,0.00293456</pt>
    <pt>0.4,0.00389790</pt>
    <pt>0.5,0.00485356</pt>
    <pt>0.6,0.00580141</pt>
    <pt>0.7,0.00674135</pt>
    <pt>0.8,0.00767325</pt>
    <pt>0.9,0.00859704</pt>
    <pt>1.0,0.00951262</pt>
    </data>
    </Objective>
    </febio_optimize> zz0.fd1meaq7omqzz


    What I've tried to do, for example (added more nodes to the list): <param name="fem.node_data('uy', 1118, 1120, 1122)"/>


    Any suggestion/tip/turnaround?


    Thank you very much for your help!
    Leonardo
    Last edited by leonardo.marin@utah.edu; 08-07-2024, 09:44 AM.
  • maas
    Lead Code Developer
    • Nov 2007
    • 3613

    #2
    Hi Leonardo,

    At this time, you cannot optimize for multiple nodes, at least not in the way you are using. There is an alternative approach where you can match the end-displacement of a set of nodes. In that case, you would use the "node-data" objective function. Take a look at the documentation here and see if this might work for you. Let me know if you have any further questions.

    Best,

    Steve
    Department of Bioengineering, University of Utah
    Scientific Computing and Imaging institute, University of Utah

    Comment

    Working...
    X