pub enum ProblemInstance {
Qap(usize, Vec<Vec<usize>>, Vec<Vec<usize>>),
Pfsp(usize, usize, Vec<Vec<usize>>),
Lop(usize, Vec<Vec<usize>>),
}
Expand description
This enum contains problem definitions.
Variants§
Qap(usize, Vec<Vec<usize>>, Vec<Vec<usize>>)
Quadratic Assignment Problem (QAP)
Pfsp(usize, usize, Vec<Vec<usize>>)
Permutation Flowshop Scheduling Problem (PFSP)
Lop(usize, Vec<Vec<usize>>)
Linear Ordering Problem (LOP)
Implementations§
Source§impl ProblemInstance
impl ProblemInstance
Sourcepub fn size(&self) -> usize
pub fn size(&self) -> usize
Returns the size of the instance. All soltions must be of the length of the problem’s size.
Sourcepub fn load(path: &str) -> Result<Self, Error>
pub fn load(path: &str) -> Result<Self, Error>
Loads a ProblemInstance
from a file given as a path.
§Errors
Returns an Error::Io
error if an error occurs loading the problem
instance from the given path.
Sourcepub fn evaluate<T>(
&self,
solutions: &PermuPopulation<T>,
fitness_vec: &mut Vec<usize>,
) -> Result<(), Error>
pub fn evaluate<T>( &self, solutions: &PermuPopulation<T>, fitness_vec: &mut Vec<usize>, ) -> Result<(), Error>
Evaluates each solution of a given PermuPopulation
and stores the fitness values inside a
given fitness vector.
§Example
use permu_rs::permutation::PermuPopulation;
use permu_rs::problems::ProblemInstance;
let paths = ["PFSP/tai100_20_0.fsp",
"QAP/tai100a.dat",
"/LOP/N-be75eec_150.lop"];
for name in paths.iter() {
let path = format!("instances/{}", name);
let instance = ProblemInstance::load(&path).unwrap();
let pop = PermuPopulation::<u16>::random(100, instance.size());
let mut fitness = vec![0; 100];
instance.evaluate(&pop, &mut fitness).unwrap();
}
Auto Trait Implementations§
impl Freeze for ProblemInstance
impl RefUnwindSafe for ProblemInstance
impl Send for ProblemInstance
impl Sync for ProblemInstance
impl Unpin for ProblemInstance
impl UnwindSafe for ProblemInstance
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