Energy supply and demand optimisation: mathematical modelling using Gurobi Python