Crates.io | dogs |
lib.rs | dogs |
version | 1.3.0 |
source | src |
created_at | 2021-01-10 13:10:18.569962 |
updated_at | 2021-08-14 13:19:42.8219 |
description | Discrete Optimization Global Search framework. Implements various search algorithms that can be found in combinatorial optimization or heuristic search. |
homepage | |
repository | |
max_upload_size | |
id | 338601 |
size | 199,289 |
Implements various search algorithms within a unified paradigm (so far, mostly anytime tree search algorithms). See this thesis for more information about anytime tree search algorithms.
Bounding decorator: measures dual bounds
LDS decorator: limits the exploration of the tree to the nodes with few discrepancies
G-cost dominance decorator: implements g-cost dominance
Pruning decorator: prunes nodes that are dominated by the best-known solution
Statistics decorator: reports various statistics of the search
Possible bug in "is_optimal" if the time limit is exceeded before the search makes some heuristic fathoming. In this case, the algorithm will report "optimal" while it is not.
Each component (Search algorithm, decorator, ... can produce a JSON object) This JSON object can then be written in a file or combined with others by higher components.
Use Iterator trait for partial expansion (more idiomatic)
Performance improvement for the PruningDecorator
Add Decorator trait and base implementation for unwrap()
improve LazyComputable usage (trait?)
Some examples are available for various problems. For some of them, the DOGS implementation is state-of-the-art.
The sequential ordering problem (SOP) git repository, reference paper
The permutation flowshop (makespan and flowtime minimization) git repository, reference paper
See rust getting started page.
sudo apt install -y linux-tools-common linux-tools-generic
cargo install flamegraph
echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid
. Possibly, sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf'
may allow you to do not use the previous command in every terminal.Cargo.toml
:[profile.release]
debug = true
cargo flamegraph ARGUMENTS
. For instance (SOP): cargo flamegraph insts/R.700.1000.15.sop 30
Visualize the flamegraph (here by using Firefox): firefox flamegraph.svg
.
We recommend using use heaptrack.
Call heaptrack PROG
Analyze data heaptrack_gui DATA.gz
We recommend using Valgrind
valgrind --tool=callgrind --dump-instr=yes --collect-jumps=yes --simulate-cache=yes [PROGRAM] [ARGS]
for f in `ls DIRNAME/*`; do COMMAND "${f}"; done
This project uses cargo-criterion.
While cargo-criterion is installed, you can just call it by: cargo criterion