A screenshot of the new schedule editor.
A screenshot of the new schedule editor.


I just added a new annual hourly schedule editor to my online tools. This tool has been in the works for quite a while as it has taken me several iterations to settle on the right combination of workflows and user interface. It’s worthy of some discussion though as I have not seen other similar tools out there and it involved making some opinionated design choices that probably only real-life application will be able to judge.

A Two-Layered Approach

One design decision with the most potential ramifications is to have used a two-layered approach to schedule creation instead of the three-layered approach used in EnergyPlus. A three-layered approach involves first assembling daily profiles into a series of week types, each with 12 different day types (weekdays, weekends, holidays, design-days, etc), and then each week type is assigned to a specific range of dates over the year.

A two-layered approach involves splitting the year into 53 (or sometimes 54) weeks, each with additional day types added at the end (holidays, design-days, etc). Daily profiles are then assigned directly to both the actual days of the year as well as the additional days, as shown in Figure 2.

Layout of the week/day grid.
Figure 2: The week/day grid layout for a two-layered approach.


I chose this latter approach because it is a bit more intuitive and much easier to visualise without having to reference multiple components and assemble them in your head. Whilst this may seem a trivial criteria, I think visualisation is critical. Not only does a good visualisation make it easier for a novice to understand, it also means that advanced users need only a quick glance to recognise an exiting schedule or gain a pretty comprehensive understanding of a new one. It also makes discerning the differences between two schedules a lot easier by direct visual comparison.


The only downside is that, when automatically extracting Schedule:Week components as part of an EnergyPlus/OpenStudio export, the date boundaries output in the associated Schedule:Year component will always start on a Monday and end on a Sunday (except the very first and last ones, which will always be 1,1 and 12,31 regardless).

Whilst this is fine for the majority of situations, I fully understand that there will always be some specific instances where the daily profile of a holiday needs to be different if it occurs on a Monday or Tuesday instead of any other day later in the same week. However, in situations where this might be important, it is highly likely that the analyst is very aware of the relevant date boundaries. Thus, once the export schedule is generated and displayed in the Export Schedule Data dialog, all that is required is a manual edit of two dates in the Schedule:Year before actually exporting it, as shown below. The rest of the generated schedule information remains unchanged.

  MY_Week_000, 1,1, 3,24,      !- Change from Sun(3,24) to Tue(3,19)
  MY_Week_001, 3,25, 9,22,     !- Change from Mon(3,25) to Wed(3,20)
  MY_Week_000, 9,23, 12,31;

Requiring manual edits to a schedule may seem an inappropriate solution, however this is my first take at the design of such a tool and I am certainly open to suggestions for a better approach. Although, without such a tool even with its flaws, the analyst would most likely be writing the entire schedule by hand anyway.

Click here to comment on this page.