add_to_schedule()

Adds open hours to the schedule for a place.

Synopsis

add_to_schedule(place_type, day_string, open_hour, open_minute, close_hour, close_minute)

Description

Adds a range of hours for a location to be open for a given place type.

Note that this does not mean that the place will close at the close time specified by this action’s parameters necessarily. This action only adds open hours to the schedule. If a place has a schedule that specifies that it is open after the times specified in close_hour and close_minute, the closing time will not be affected.

Parameters

place_type

The type of place for which scheduled open hours are to be added.

day_string

The days of the week for which scheduled open hours are to be added. Valid values are:

  • Everyday

  • Weekdays

  • Weekends

  • Sun

  • Mon

  • Tue

  • Wed

  • Thu

  • Fri

  • Sat

open_hour

The hour for the place to open. This can be in form of a range on a 24 hour clock (0-23), or a 12-hour time string (e.g. 12am, 9pm, etc.).

open_minute

The minute for the place to open (0-59).

close_hour

The final hour of the range for which open hours to be added. This can be in form of a range on a 24 hour clock (0-23), or a 12-hour time string (e.g. 12am, 9pm, etc.)

close_minute

The final minute of the range for which open hours to be added (0-59).

Example

agents.txt

ID
123

main.fred

simulation {
    start_date = 2022-Jan-01
    end_date = 2022-Jan-03
    locations = none
    default_model = none
}

startup {
    read_agent_file(agents.txt)
    add_to_schedule(Work,Everyday,12am,0,3pm,59)
    print("-- Work is open from 0000-1559 --")
}

agent_startup {
    join(Work)
}

place Work {
    site = 555,0,0,0
}

condition IsOpenChecker {
    start_state = Start

    state Start {
        print("Work is open at ", mod(now, 24), "?: ", is_open(Work))
        wait(8)
        next()
    }
}

condition ScheduleAdjuster {
    meta_start_state = Start

    state Start {
        wait(24)
        next(OpenLater)
    }

    state OpenLater {
        remove_from_schedule(Work, Everyday, 12am, 00, 1am, 30)
        print("-- Work is now open from 0131-1559 --")
        wait(24)
        next(StayOpenTil6pm)
    }

    state StayOpenTil6pm {
        add_to_schedule(Work, Everyday, 12, 0, 18, 0)
        print("-- Work is now open from 0131-1800 --")
        wait()
        next(Excluded)
    }
}

Executing the above results in the following output:

-- Work is open from 0000-1559 --
Work is open at 0?: 1
Work is open at 8?: 1
Work is open at 16?: 0
-- Work is now open from 0131-1559 --
Work is open at 0?: 0
Work is open at 8?: 1
Work is open at 16?: 0
-- Work is now open from 0131-1800 --
Work is open at 0?: 0
Work is open at 8?: 1
Work is open at 16?: 1

See Also

remove_from_schedule() reset_schedule()