There is a software called Eureqa that does exactly this. Search also for Formulize, Nutonian, DataRobot.
The working principle is symbolic regression. A formula can be written as a tree. To see examples, search for 'abstract syntax tree' in Google image search. Such trees can be evaluated by recursive tree traversal. Input: tree with variables to which your data points are assigned. Output: A scalar or vector (in the case of parallel trees).
Now the machine learning comes in: use Genetic Algorithms to vary the tree, and optimize it so that it fits the data as best as possible.
for such a study, you can use sensitivity analysis methods such as Morris method or Sobol indices (variance decomposition), depending on the number of evaluations of your model you can do.
Here is a great book on the subject : http://www.andreasaltelli.eu/file/repository/A_Saltelli_Marco_Ratto_Terry_Andres_Francesca_Campolongo_Jessica_Cariboni_Debora_Gatelli_Michaela_Saisana_Stefano_Tarantola_Global_Sensitivity_Analysis_The_Primer_Wiley_Interscience_2008_.pdf
These studies come under the purview of "soft-computing" which implies that there are non hard and fast rule for deriving relationships, it varies with actual data. So there is no single algorithm which works best under all conditions.
Evidently ANN is a network that tries to map the predefined inputs to desired outputs and the rest three are optimization techniques that are used to ensure that this mapping can be achieved in a most efficient manner...
The NARX (nonlinear autorregressive with exogenous input) model is one of the best option for modelling dynamic systems. You also can use the Hammerstein-Wiener model.
Then you just can choice your prefer nonlinear function.
you can try all models and then estimate metrics and choose the best. also you can look and try a lot of classification and regression models in python library scikit-learn