# Class TimeWindow (1.15.0)

1.15.0 (latest) 1.14.0 1.13.0 1.12.0 1.11.2 1.10.0 1.9.1 1.8.5 1.7.0 1.6.0 1.5.0 1.4.3 1.3.2 1.2.0 1.1.3 1.0.1 0.1.1

    TimeWindow(mapping=None, *, ignore_unknown_fields=False, **kwargs)

Time windows constrain the time of an event, such as the arrival
time at a visit, or the start and end time of a vehicle.

Hard time window bounds, `start_time` and `end_time`, enforce
the earliest and latest time of the event, such that
`start_time <= event_time <= end_time`. The soft time window lower
bound, `soft_start_time`, expresses a preference for the event to
happen at or after `soft_start_time` by incurring a cost
proportional to how long before soft_start_time the event occurs.
The soft time window upper bound, `soft_end_time`, expresses a
preference for the event to happen at or before `soft_end_time` by
incurring a cost proportional to how long after `soft_end_time`
the event occurs. `start_time`, `end_time`, `soft_start_time`
and `soft_end_time` should be within the global time limits (see
ShipmentModel.global_start_time
and
ShipmentModel.global_end_time)
and should respect:

::

     0 <= `start_time` <= `soft_start_time` <= `end_time` and
     0 <= `start_time` <= `soft_end_time` <= `end_time`.

.. _oneof: <https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields>

| ## Attributes ||
|---|---|
| **Name** | **Description** |
| `start_time` | `google.protobuf.timestamp_pb2.Timestamp` The hard time window start time. If unspecified it will be set to `ShipmentModel.global_start_time`. |
| `end_time` | `google.protobuf.timestamp_pb2.Timestamp` The hard time window end time. If unspecified it will be set to `ShipmentModel.global_end_time`. |
| `soft_start_time` | `google.protobuf.timestamp_pb2.Timestamp` The soft start time of the time window. |
| `soft_end_time` | `google.protobuf.timestamp_pb2.Timestamp` The soft end time of the time window. |
| `cost_per_hour_before_soft_start_time` | `float` A cost per hour added to other costs in the model if the event occurs before soft_start_time, computed as: :: max(0, soft_start_time - t.seconds) \* cost_per_hour_before_soft_start_time / 3600, t being the time of the event. This cost must be positive, and the field can only be set if soft_start_time has been set. This field is a member of `oneof`_ `_cost_per_hour_before_soft_start_time`. |
| `cost_per_hour_after_soft_end_time` | `float` A cost per hour added to other costs in the model if the event occurs after `soft_end_time`, computed as: :: max(0, t.seconds - soft_end_time.seconds) \* cost_per_hour_after_soft_end_time / 3600, t being the time of the event. This cost must be positive, and the field can only be set if `soft_end_time` has been set. This field is a member of `oneof`_ `_cost_per_hour_after_soft_end_time`. |