What algorithm is appropriate for a thermostat controlling the heating of a room with floor heating? I built my own thermostat that controls the boiler heater for the radiant floor heating in my house and I would like to develop / implement a smarter temperature control algorithm. What I am specifically interested in is the ability to predict when to turn on the heating so that a certain temperature is achieved according to a schedule.

Suppose I want the temperature at 7 am to be 22 degrees Celsius. During the night I want it to be at 18C. Currently, I set the schedule up so that the heating is started at 6 am but depending on how cold it is during the night, an hour may be too little and the temperature does not rise to 22C or it may be to much and the temperature overshoots. I would like an algorithm that would automatically calculate the appropriate time at which to start heating.

I keep searching online and most results are for industrial uses and/or for heating systems that can be modulated such as electrical heaters. The heating system in my house consists of a boiler that heats the water in the floor tubing and I cannot modulate the output, I can only tell it to start or to stop via a mechanical relay that opens or closes a solenoid valve. This, I believe, renders a PID algorithm inappropriate. Fuzzy logic and just PI control may be suitable but can they be made to work with varying set points? 

Supervised machine learning is overkill for my needs and I don't want to spend weeks to train it.

What other options would I have?
Maybe approach it from a "BTU's needed over time" standpoint. I don't know the exact maths off the top of my head, but consider: 


What is the temperature differential? 
What is the heating capacity (BTU's) of the radiant flooring system? 
How long does it take to start rendering 68% of that heat to the room? 
What is the heating load of the room in BTU's? 
How efficient is the heat generated?


Then do some math on these numbers. Something like...

$t_{hours}=\dfrac{(T_{end}-T_{start})\cdot H_{demand}}{H_{supply}}\cdot \mathrm{eff}^{-1} + t_{delay}$

So for an end temperature of 22°C and a start of 18°C, heat of 50kBTU, demand of 20kBTU, 90% efficiency, and 15 minutee delay:

$\begin{align*}t_{hours} &amp;= \dfrac{(22°C-18°C)\cdot 20k_{demand}}{50k_{heat}}\cdot 0.90_{\mathrm{eff}}^{-1} + 0.25h_{delay}\\
&amp;= \dfrac{80\mathrm{k}}{50\mathrm{k}}\cdot 1.\bar{1}+ 0.25\mathrm{h}\\
&amp;= 2.02\bar{7}\mathrm{h}
\end{align*}
$

Some analysis and experimentation will be needed to arrive at realistic values but hopefully this is a start.