pub struct SPProblem {
pub instance: SPInstance,
pub layout: Layout,
/* private fields */
}
Expand description
Strip Packing Problem
Fields§
§instance: SPInstance
§layout: Layout
Implementations§
Source§impl SPProblem
impl SPProblem
pub fn new( instance: SPInstance, strip_width: fsize, cde_config: CDEConfig, ) -> Self
Sourcepub fn modify_strip_in_back(&mut self, new_width: fsize)
pub fn modify_strip_in_back(&mut self, new_width: fsize)
Adds or removes width in the back of the strip.
Sourcepub fn modify_strip_at_front(&mut self, new_width: fsize)
pub fn modify_strip_at_front(&mut self, new_width: fsize)
Adds or removes width at the front of the strip.
Sourcepub fn modify_strip_centered(&mut self, new_width: fsize)
pub fn modify_strip_centered(&mut self, new_width: fsize)
Adds or removes width, dividing it equally at the front and back of the current items.
Sourcepub fn modify_strip(&mut self, rect: AARectangle)
pub fn modify_strip(&mut self, rect: AARectangle)
Modifies the shape of the strip to a new rectangle. All items that fit in the new strip are kept, the rest are removed.
Sourcepub fn occupied_range(&self) -> Option<(fsize, fsize)>
pub fn occupied_range(&self) -> Option<(fsize, fsize)>
Returns the horizontal range occupied by the placed items. If no items are placed, returns None.
Sourcepub fn occupied_width(&self) -> fsize
pub fn occupied_width(&self) -> fsize
Returns the width occupied by the placed items.
pub fn strip_width(&self) -> fsize
pub fn strip_height(&self) -> fsize
Trait Implementations§
Source§impl ProblemGeneric for SPProblem
impl ProblemGeneric for SPProblem
Source§fn place_item(&mut self, p_opt: PlacingOption) -> (LayoutIndex, PItemKey)
fn place_item(&mut self, p_opt: PlacingOption) -> (LayoutIndex, PItemKey)
Places an item into the problem instance according to the given
PlacingOption
.
Returns the index of the layout where the item was placed.Source§fn remove_item(
&mut self,
layout_index: LayoutIndex,
pik: PItemKey,
commit_instantly: bool,
) -> PlacingOption
fn remove_item( &mut self, layout_index: LayoutIndex, pik: PItemKey, commit_instantly: bool, ) -> PlacingOption
Removes a placed item (with its unique key) from a specific
Layout
.
Returns a PlacingOption
that can be used to place the item back in the same configuration.
For more information about commit_instantly
, see crate::collision_detection::cd_engine::CDEngine::deregister_hazard
.Source§fn create_solution(&mut self, _old_solution: Option<&Solution>) -> Solution
fn create_solution(&mut self, _old_solution: Option<&Solution>) -> Solution
Saves the current state of the problem as a
Solution
.Source§fn restore_to_solution(&mut self, solution: &Solution)
fn restore_to_solution(&mut self, solution: &Solution)
Restores the state of the problem to a previous
Solution
.fn layouts(&self) -> &[Layout]
fn layouts_mut(&mut self) -> &mut [Layout]
Source§fn template_layouts(&self) -> &[Layout]
fn template_layouts(&self) -> &[Layout]
Template layouts are empty and immutable.
For every unique bin in the problem instance, there is a template layout.
When an item is placed in a template layout, it is cloned into a real layout.
Source§fn missing_item_qtys(&self) -> &[isize]
fn missing_item_qtys(&self) -> &[isize]
The quantity of each item that is requested but currently missing in the problem instance, indexed by item id.
Source§fn template_layout_indices_with_stock(
&self,
) -> impl Iterator<Item = LayoutIndex>
fn template_layout_indices_with_stock( &self, ) -> impl Iterator<Item = LayoutIndex>
Returns the
LayoutIndex
of all template layouts that have remaining stock.fn bin_qtys(&self) -> &[usize]
fn instance(&self) -> &dyn InstanceGeneric
Source§fn placed_item_qtys(&self) -> impl Iterator<Item = usize>
fn placed_item_qtys(&self) -> impl Iterator<Item = usize>
The quantity of each item that is currently placed in the problem instance, indexed by item id.
fn usage(&mut self) -> fsize
fn used_bin_cost(&self) -> u64
Source§fn layout_indices(&self) -> impl Iterator<Item = LayoutIndex>
fn layout_indices(&self) -> impl Iterator<Item = LayoutIndex>
Returns the
LayoutIndex
of all layouts.fn get_layout(&self, index: impl Borrow<LayoutIndex>) -> &Layout
Source§fn flush_changes(&mut self)
fn flush_changes(&mut self)
Makes sure that the all collision detection engines are completely updated with the changes made to the layouts.
Auto Trait Implementations§
impl Freeze for SPProblem
impl RefUnwindSafe for SPProblem
impl Send for SPProblem
impl Sync for SPProblem
impl Unpin for SPProblem
impl UnwindSafe for SPProblem
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more