Page 1 of 1

Bilevel optimization using Moco

Posted: Wed Dec 13, 2023 1:54 pm
by israelluis7
Hi Moco Community,

I am interested in modelling and simulating exoskeleton assistance, and I was thinking in using Moco for this aim. In this regard I wonder if it is possible to use Moco to run a two-levels optimization. My idea is to solve the muscle redundancy in low level based on a muscle activation squared, and in the high level, solve for the optimal parameters of an exoskeleton based on a minimal energy expenditure.

For instance, let's assume the assistive moment is a sinusoid where the peak moment and peak timing are design variables, and they are optimized to minimize metabolic rates, and the assistive moment is added to support ankle during walking, where the muscle redundancy is based on minimal activation squared. There are two aims in this problem, minimize muscle activation and also metabolic rates, and they might derive in opposite muscle control in some situations. I am sure it is possible to solve the muscle redundancy and exoskeleton parameters simultaneously with the same objective, but I wonder if it is possible to solve for two "criteria" simultaneously using Moco. If it is possible, can you please point out the paper or maybe if there is an example already?

Israel

Re: Bilevel optimization using Moco

Posted: Fri Dec 15, 2023 10:45 am
by nbianco
Hi Israel,

You can optimize model parameters using the MocoParameter interface, and simultaneously minimize metabolic effort and muscle activation, but this would all happen within a single, "one-level", optimization problem. Moco doesn't support solving true bilevel optimization problems directly, but there's nothing preventing you from using Moco to solve an inner loop optimization problem within your own bilevel optimization framework.

-Nick