1. A method for optimizing and controlling the energy consumption of a building, the method comprising: generating, by a first computing device, thermal response coefficients for the building based on energy characteristics of the building and weather data associated with the location of the building, including: receiving, by the first computing device, an indoor air temperature of the building; inferring, by the first computing device, physical structure data of the building based upon the location of the building; determining, by the first computing device, a transient temperature within one or more walls of the building based upon indoor air temperature and the weather data associated with the location of the building; and adjusting, by the first computing device, the physical structure data based upon the transient temperature; and generating, by the first computing device, the thermal response coefficients for the building based upon the adjusted physical structure data; predicting, by the first computing device, an energy response of the building for each of a plurality of different points in time during a day, wherein each energy response is based upon the thermal response coefficients and forecasted weather conditions associated with the location of the building for one of the points in time; selecting, by the first computing device, minimal energy requirements of the building based on an energy consumption cost associated with the building; determining, by the first computing device, a series of temperature set points for the building for each of the plurality of different points in time based on the corresponding energy response and the minimal energy requirements; transmitting, by the first computing device, the series of temperature set points to a thermostat of the building; and adjusting, by the thermostat, operating parameters of the thermostat using each series of temperature set points when a time value stored in the thermostat matches the point in time associated with each series of temperature set points.