The Python XFOIL optimization toolbox can be used to optimize airfoils for a specific operating range, and might be useful to you for its XFOIL communication module, airfoil parametrizations, and optimization algorithms, i.e. all you need to do funky stuff with 2D airfoils.