Happy to join this community. Thank you in advance for your kind help! :)
Intro
I have a physical device characterized by its internal parameters, of which I know the nominal values. I also have the theoretical model of the device, that differs from the physical device because fabrication tolerances change the internal parameters.
I would like to extract the internal parameters of the device by fitting the model onto it.
The device also has additional inputs that alter its behavior. The additional inputs can be used to generate more data to fit the model. However, the device is "slow" to test, meaning it requires a few seconds to generate the data.
Physical System
The device is basically an electrical filter that alters an input spectrum in frequency $ S_{IN}(f) $ into $ S_{OUT}(f) $, and is decribed by its Transfer Function $ T(f) = \frac{S_{OUT}(f)}{S_{IN}(f)}$.
The device $T(f)$ depends on the internal parameters $k_1, k_2 ... k_N $, of which I know the nominal value, but change due to fabrication tolerances.
The behavior of the device can be altered by changing additional inputs $\phi_1, \phi_2 ... \phi_M $.
In summary, the transfer function is defined in frequency and is dependent on the fixed parameter $k$ and the controllable parameters $\phi$: $T(k_1, k_2 ... k_N, \phi_1, \phi_2 ... \phi_M)(f)$
Model
I have a completely defined model of the device, that also models possible non-idealities of the physical system. However, while it is easy to compute the transfer function by knowing $k_{1...N}, \phi_{1...N} $, it is hard to infer the parameters by just observing $T(f)$.
Questions and discussion
What would be the best way to extract the internal parameters of the filter?
Things I tried:
Least Squares Fitting. This is challenging because there are a lot of internal parameters that just generate a single $T(f)$. I would need to generate multiple $T(f)$ by changing the inputs $\phi_{1...N}$, which would all be based on the same parameters $k_{1...N}$. Then, I would need somehow tell the LSF to fit all the curves at the same time, by communicating which inputs generated which $T(f)$. I ignore how to do this in SciPy.
Neural Networks. I have tried training a CNN that has $T(f), \phi_1, \phi_2 ... \phi_M$ as the inputs and $k_1, k_2 ... k_N $ as the outputs. Did not have much success, but does not feel smart, because I happen to know the theoretical model of the device.
Active Learning. This intrigued me, but it looks like it is mainly for classification problems.
I think the way to go would be to find an algorithm that tries to fit the model by playing around with the inputs and testing the device to check the quality of the fit.
Do you know something that could achieve the task?