Building a surrogate model of a complex physically-based model

I work in the air quality modelling field, and particuarly in building metamodels - surrogate models of complex physically-based models.
I read with interest about the ‘Surrogates.jl’ package, but I would need some help to see how to use this for my case study
where could I start to find some help on this?

How many parameters are you trying to fit with your surrogate, and in what domain? Is your function smooth in these parameters? (These are basic starting questions for any consideration of surrogate models.)

You need to start by asking a more specific question, in order to explain where you got stuck.



and thanks a lot for your reply…sorry, I will try now to be more precise in my request…

so, my current surrogate model (written in python, see Application of the SHERPA source-receptor relationships, based on the EMEP MSC-W model, for the assessment of air quality policy scenarios - ScienceDirect)
works like this

  • I have results from a physical based model, as a raster of 500x700 pixels (input and output)…linking emissions to concentrations of air pollutants
  • the surrogate model I use is based on a concept derived by GWR (geographical weighted regression) models, with coefficients that differ cell by cell
  • so, as number of coefficients, I have 10 coefficients per cell (to define the shape of ‘bell-shape’ function used to implement the GWR and to link the emissions to the concentrations) … so in total for the domain, I have 500x700x10 coefficients
  • the function is smooth, but it is spatially changing (but this is what I am doing now … and I would like to see if there are pre-defined surrogate in Julia, to test other options)

in terms of specific questions…at this stage I am trying to explore/understand if it could be useful to port my python code to Julia (to improve in terms of simplified code - speed - possibility to test other modelling options)

thanks in advance for your help

Surrogates.jl uses the standard meaning of “surrogate model”, which is essentially a kind of black-box fit/regression interpolating from data (either experimental or generated by a more expensive numerical simulation), e.g. polynomial regression or neural networks. It provides a number of different possible surrogate models, and some other possibilities are implemented by other packages.

However, it sounds like your “SHERPA” model is a very problem-specific simplified-physics model for some kind of chemical-transfer equations. This is not something you are likely to find implemented for you in a package — you will probably need to implement it yourself much like you did in Python. Of course, for individual steps of the process you are likely to find existing packages to help you (e.g. the SHERPA paper mentions a sequence of linear regressions, and Julia comes built-in with linear regression), much like you probably used scipy and numpy functionality in Python.

1 Like

Thanks a lot for the reply and clarifications, bests, Enrico