A similar method to what Jens Kubieziel♦ already mentioned is not completely restarting the server, but using Tor's ControlPort to change the bandwidth limits at certain times of the day.
This can be achieved by the following cronjobs:
0 6 * * * echo -en "authenticate\r\nsetconf relaybandwidthrate=100000 relaybandwidthburst=200000\r\nquit\r\n" | nc localhost 9051
0 20 * * * echo -en "authenticate\r\nsetconf relaybandwidthrate=200000 relaybandwidthburst=400000\r\nquit\r\n" | nc localhost 9051
This way Tor will remain running, no restart of Tor is needed.
0 6 * * *
means the the minute 0 of the 6th hour of the day (so 6am) and
0 20 * * *
the 20th hour (20 - 12, cause PM is 8, so 8am).
The idle setting might be harder, because how much bandwidth is often unrelated to people sitting in front of the computer. Web surfing, as long as you don't stream videos or something like that often requires way less bandwidth than a download for example and while people download something it might be that they leave their computers. Tor would need a way to find out what the currently available bandwidth is, which can be hard. Different users have have different behaviors and to cover them all or at least a major portion can be tricky, also you may not want to decrease your limits, if you just have a small spike (e.g. because a Youtube video is loading).
Another problem is the connection limit, because of the available network connection or the amount of RAM or CPU-power provided by the system. For that MaxAdvertisedBandwidth
might be set lower, which in case of a Rapberry Pi behind a quick network might make sense. If you set this option to a lower value you still provide the same amount of bandwidth, but have fewer users connecting to your relay, which might lower RAM usage and provide a better experience for people conning through your relay.