#ifndef ROSA_BENCH_GRASPELS_BAD_GRASPELS_H #define ROSA_BENCH_GRASPELS_BAD_GRASPELS_H #include namespace rosa { /* GRASP * loop * * s = init() * * s = ls(s) * * best = select(s, best) * ---- * return best */ template using SkelNRGraspStructure = alsk::S, Select >; template using SkelNRGraspLinks = alsk::L(alsk::arg::P<0>, alsk::arg::P<1>), Solution(alsk::arg::P<0>, alsk::arg::P<1>), Solution(alsk::arg::R<0> const&, alsk::arg::P<1>) >, Solution(Solution const&, Solution const&) >; /* *** */ template< typename Problem, typename Solution, typename RNG, typename Init, typename LS, typename Select > using SkelNRGrasp = alsk::BuildSkeleton::skeleton< tmp::Pack, tmp::Pack >; } namespace rosa { /* ELS * best = ls(s) -- SEls * loop -- SElsOuterLoop * * loop -- SElsInnerLoop * * * s = mutate(best) -- SElsGen * * * s = ls(s) * * * ibest = select(s, ibest) * * ---- * * best = select(s, best) // with acceptation criteria? * ---- * return best */ template< typename InitLS, typename Mutate, typename LS, typename InnerSelect, typename OuterSelect > using SkelNRElsStruct = alsk::S, InnerSelect >, OuterSelect > >; template using SkelNRElsLinks = alsk::L(Solution const&, RNG&), Solution(alsk::arg::P<0>), alsk::L const&, alsk::arg::P<1>), alsk::L), alsk::L(alsk::arg::P<0>, alsk::arg::P<1>), Solution(alsk::arg::P<0>, alsk::arg::P<1>), Solution(alsk::arg::R<0> const&) >, Solution(Solution const&, Solution const&) >, Solution(Solution const&, Solution const&) > >; template< typename Solution, typename RNG, typename InitLS, typename Mutate, typename LS, typename InnerSelect, typename OuterSelect = InnerSelect > using SkelNREls = alsk::BuildSkeleton::skeleton< tmp::Pack, tmp::Pack >; } #endif