pub struct TimeWindow {
pub start_time: Option<Timestamp>,
pub end_time: Option<Timestamp>,
pub soft_start_time: Option<Timestamp>,
pub soft_end_time: Option<Timestamp>,
pub cost_per_hour_before_soft_start_time: Option<f64>,
pub cost_per_hour_after_soft_end_time: Option<f64>,
}
Expand description
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][google.maps.routeoptimization.v1.ShipmentModel.global_start_time]
and
[ShipmentModel.global_end_time][google.maps.routeoptimization.v1.ShipmentModel.global_end_time])
and should respect:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
Fields§
§start_time: Option<Timestamp>
The hard time window start time. If unspecified it will be set to
ShipmentModel.global_start_time
.
end_time: Option<Timestamp>
The hard time window end time. If unspecified it will be set to
ShipmentModel.global_end_time
.
soft_start_time: Option<Timestamp>
The soft start time of the time window.
soft_end_time: Option<Timestamp>
The soft end time of the time window.
cost_per_hour_before_soft_start_time: Option<f64>
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.
cost_per_hour_after_soft_end_time: Option<f64>
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.
Implementations§
Source§impl TimeWindow
impl TimeWindow
Sourcepub fn cost_per_hour_before_soft_start_time(&self) -> f64
pub fn cost_per_hour_before_soft_start_time(&self) -> f64
Returns the value of cost_per_hour_before_soft_start_time
, or the default value if cost_per_hour_before_soft_start_time
is unset.
Sourcepub fn cost_per_hour_after_soft_end_time(&self) -> f64
pub fn cost_per_hour_after_soft_end_time(&self) -> f64
Returns the value of cost_per_hour_after_soft_end_time
, or the default value if cost_per_hour_after_soft_end_time
is unset.
Trait Implementations§
Source§impl Clone for TimeWindow
impl Clone for TimeWindow
Source§fn clone(&self) -> TimeWindow
fn clone(&self) -> TimeWindow
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for TimeWindow
impl Debug for TimeWindow
Source§impl Default for TimeWindow
impl Default for TimeWindow
Source§impl Message for TimeWindow
impl Message for TimeWindow
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8>where
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8>where
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8>where
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8>where
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
.Source§impl PartialEq for TimeWindow
impl PartialEq for TimeWindow
impl Copy for TimeWindow
impl StructuralPartialEq for TimeWindow
Auto Trait Implementations§
impl Freeze for TimeWindow
impl RefUnwindSafe for TimeWindow
impl Send for TimeWindow
impl Sync for TimeWindow
impl Unpin for TimeWindow
impl UnwindSafe for TimeWindow
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request