jagua_rs::entities::problems::problem_generic

Trait ProblemGeneric

Source
pub trait ProblemGeneric: ProblemGenericPrivate {
Show 17 methods // Required methods fn place_item(&mut self, p_opt: PlacingOption) -> (LayoutIndex, PItemKey); fn remove_item( &mut self, layout_index: LayoutIndex, pik: PItemKey, commit_instantly: bool, ) -> PlacingOption; fn create_solution(&mut self, old_solution: Option<&Solution>) -> Solution; fn restore_to_solution(&mut self, solution: &Solution); fn layouts(&self) -> &[Layout]; fn layouts_mut(&mut self) -> &mut [Layout]; fn template_layouts(&self) -> &[Layout]; fn missing_item_qtys(&self) -> &[isize]; fn bin_qtys(&self) -> &[usize]; fn instance(&self) -> &dyn InstanceGeneric; // Provided methods fn placed_item_qtys(&self) -> impl Iterator<Item = usize> { ... } fn usage(&mut self) -> fsize { ... } fn used_bin_cost(&self) -> u64 { ... } fn layout_indices(&self) -> impl Iterator<Item = LayoutIndex> { ... } fn template_layout_indices_with_stock( &self, ) -> impl Iterator<Item = LayoutIndex> { ... } fn get_layout(&self, index: impl Borrow<LayoutIndex>) -> &Layout { ... } fn flush_changes(&mut self) { ... }
}
Expand description

Trait for public shared functionality of all problem variants.

Required Methods§

Source

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

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

Saves the current state of the problem as a Solution.

Source

fn restore_to_solution(&mut self, solution: &Solution)

Restores the state of the problem to a previous Solution.

Source

fn layouts(&self) -> &[Layout]

Source

fn layouts_mut(&mut self) -> &mut [Layout]

Source

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]

The quantity of each item that is requested but currently missing in the problem instance, indexed by item id.

Source

fn bin_qtys(&self) -> &[usize]

Source

fn instance(&self) -> &dyn InstanceGeneric

Provided Methods§

Source

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.

Source

fn usage(&mut self) -> fsize

Source

fn used_bin_cost(&self) -> u64

Source

fn layout_indices(&self) -> impl Iterator<Item = LayoutIndex>

Returns the LayoutIndex of all layouts.

Source

fn template_layout_indices_with_stock( &self, ) -> impl Iterator<Item = LayoutIndex>

Returns the LayoutIndex of all template layouts that have remaining stock.

Source

fn get_layout(&self, index: impl Borrow<LayoutIndex>) -> &Layout

Source

fn flush_changes(&mut self)

Makes sure that the all collision detection engines are completely updated with the changes made to the layouts.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§