Add: init
This commit is contained in:
parent
a72c64bd4e
commit
d197f59c61
113
metslib-0.5.3-boost.patch
Normal file
113
metslib-0.5.3-boost.patch
Normal file
@ -0,0 +1,113 @@
|
||||
diff -up ./metslib/mets.hh.boost ./metslib/mets.hh
|
||||
--- ./metslib/mets.hh.boost 2011-05-05 08:38:51.000000000 -0400
|
||||
+++ ./metslib/mets.hh 2016-02-01 19:52:22.848282043 -0500
|
||||
@@ -106,7 +106,15 @@
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
#include <algorithm>
|
||||
-#if defined (METSLIB_HAVE_UNORDERED_MAP)
|
||||
+
|
||||
+#if defined (METSLIB_TR1_BOOST)
|
||||
+# include <boost/random/uniform_int.hpp>
|
||||
+# include <boost/random/uniform_real.hpp>
|
||||
+# include <boost/random/variate_generator.hpp>
|
||||
+# include <boost/random/mersenne_twister.hpp>
|
||||
+# include <boost/random/linear_congruential.hpp>
|
||||
+# include <boost/unordered_map.hpp>
|
||||
+#elif defined (METSLIB_HAVE_UNORDERED_MAP)
|
||||
# include <unordered_map>
|
||||
# include <random>
|
||||
#elif defined (METSLIB_HAVE_TR1_UNORDERED_MAP)
|
||||
diff -up ./metslib/metslib_config.hh.boost ./metslib/metslib_config.hh
|
||||
--- ./metslib/metslib_config.hh.boost 2011-05-05 08:38:51.000000000 -0400
|
||||
+++ ./metslib/metslib_config.hh 2016-02-01 19:48:09.724145145 -0500
|
||||
@@ -16,4 +16,5 @@
|
||||
# define METSLIB_HAVE_TR1_UNORDERED_MAP 1
|
||||
# endif
|
||||
#endif
|
||||
+#define METSLIB_TR1_BOOST 1
|
||||
#endif
|
||||
diff -up ./metslib/model.hh.boost ./metslib/model.hh
|
||||
--- ./metslib/model.hh.boost 2011-05-05 08:38:51.000000000 -0400
|
||||
+++ ./metslib/model.hh 2016-02-01 19:46:24.481900865 -0500
|
||||
@@ -244,7 +244,11 @@ namespace mets {
|
||||
template<typename random_generator>
|
||||
void random_shuffle(permutation_problem& p, random_generator& rng)
|
||||
{
|
||||
-#if defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
+#if defined (METSLIB_TR1_BOOST)
|
||||
+ boost::uniform_int<size_t> unigen;
|
||||
+ boost::variate_generator<random_generator&,
|
||||
+ boost::uniform_int<size_t> >gen(rng, unigen);
|
||||
+#elif defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
std::uniform_int<size_t> unigen;
|
||||
std::variate_generator<random_generator&,
|
||||
std::uniform_int<size_t> >gen(rng, unigen);
|
||||
@@ -263,7 +267,9 @@ namespace mets {
|
||||
template<typename random_generator>
|
||||
void perturbate(permutation_problem& p, unsigned int n, random_generator& rng)
|
||||
{
|
||||
-#if defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
+#if defined (METSLIB_TR1_BOOST)
|
||||
+ boost::uniform_int<> int_range;
|
||||
+#elif defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
std::uniform_int<> int_range;
|
||||
#else
|
||||
std::tr1::uniform_int<> int_range;
|
||||
@@ -527,7 +533,9 @@ namespace mets {
|
||||
|
||||
|
||||
/// @brief Generates a stochastic subset of the neighborhood.
|
||||
-#if defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
+#if defined (METSLIB_TR1_BOOST)
|
||||
+ template<typename random_generator = boost::minstd_rand0>
|
||||
+#elif defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
template<typename random_generator = std::minstd_rand0>
|
||||
#else
|
||||
template<typename random_generator = std::tr1::minstd_rand0>
|
||||
@@ -555,7 +563,10 @@ namespace mets {
|
||||
|
||||
protected:
|
||||
random_generator& rng;
|
||||
-#if defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
+
|
||||
+#if defined (METSLIB_TR1_BOOST)
|
||||
+ boost::uniform_int<> int_range;
|
||||
+#elif defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
std::uniform_int<> int_range;
|
||||
#else
|
||||
std::tr1::uniform_int<> int_range;
|
||||
diff -up ./metslib/simulated-annealing.hh.boost ./metslib/simulated-annealing.hh
|
||||
--- ./metslib/simulated-annealing.hh.boost 2011-05-05 08:38:51.000000000 -0400
|
||||
+++ ./metslib/simulated-annealing.hh 2016-02-01 19:46:24.481900865 -0500
|
||||
@@ -133,7 +133,11 @@ namespace mets {
|
||||
double stop_temp_m;
|
||||
double current_temp_m;
|
||||
double K_m;
|
||||
-#if defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
+#if defined (METSLIB_TR1_BOOST)
|
||||
+ boost::uniform_real<double> ureal;
|
||||
+ boost::mt19937 rng;
|
||||
+ boost::variate_generator< boost::mt19937, boost::uniform_real<double> > gen;
|
||||
+#elif defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
std::uniform_real<double> ureal;
|
||||
std::mt19937 rng;
|
||||
std::variate_generator< std::mt19937, std::uniform_real<double> > gen;
|
||||
diff -up ./metslib/tabu-search.hh.boost ./metslib/tabu-search.hh
|
||||
--- ./metslib/tabu-search.hh.boost 2011-05-05 08:38:51.000000000 -0400
|
||||
+++ ./metslib/tabu-search.hh 2016-02-01 19:46:24.482900905 -0500
|
||||
@@ -314,7 +314,13 @@ namespace mets {
|
||||
|
||||
protected:
|
||||
typedef std::deque<move*> move_list_type;
|
||||
-#if defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
+#if defined (METSLIB_TR1_BOOST)
|
||||
+ typedef boost::unordered_map<
|
||||
+ mana_move*, // Key type
|
||||
+ int, //insert a move and the number of times it's present in the list
|
||||
+ mana_move_hash,
|
||||
+ dereferenced_equal_to<mana_move*> > move_map_type;
|
||||
+#elif defined (METSLIB_HAVE_UNORDERED_MAP) && !defined (METSLIB_TR1_MIXED_NAMESPACE)
|
||||
typedef std::unordered_map<
|
||||
mana_move*, // Key type
|
||||
int, //insert a move and the number of times it's present in the list
|
||||
13
metslib-0.5.3-cpp17.patch
Normal file
13
metslib-0.5.3-cpp17.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff -up ./metslib/abstract-search.hh.cpp17 ./metslib/abstract-search.hh
|
||||
--- ./metslib/abstract-search.hh.cpp17 2022-12-06 18:47:40.335305410 -0500
|
||||
+++ ./metslib/abstract-search.hh 2022-12-06 18:48:08.774436936 -0500
|
||||
@@ -106,8 +106,7 @@ namespace mets {
|
||||
/// An exception mets::no_moves_error can be risen when no move is
|
||||
/// possible.
|
||||
virtual void
|
||||
- search()
|
||||
- throw(no_moves_error) = 0;
|
||||
+ search() = 0;
|
||||
|
||||
/// @brief The solution recorder instance.
|
||||
const solution_recorder&
|
||||
14
metslib-0.5.3-noarch.patch
Normal file
14
metslib-0.5.3-noarch.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff -up ./metslib.pc.in.noarch ./metslib.pc.in
|
||||
--- ./metslib.pc.in.noarch 2013-08-10 11:03:19.804295046 -0400
|
||||
+++ ./metslib.pc.in 2013-08-10 11:03:33.005806016 -0400
|
||||
@@ -1,9 +1,8 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
-libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: METS tabu search generic library.
|
||||
Description: METS Tabu Search Metaheuristic C++ generic library.
|
||||
Version: @VERSION@
|
||||
-Cflags: -I${includedir}/@GENERIC_LIBRARY_NAME@-@GENERIC_API_VERSION@ -I${libdir}/@GENERIC_LIBRARY_NAME@-@GENERIC_API_VERSION@/include
|
||||
+Cflags: -I${includedir}/@GENERIC_LIBRARY_NAME@-@GENERIC_API_VERSION@
|
||||
BIN
metslib-0.5.3.tgz
Normal file
BIN
metslib-0.5.3.tgz
Normal file
Binary file not shown.
94
metslib.spec
Normal file
94
metslib.spec
Normal file
@ -0,0 +1,94 @@
|
||||
# This is really a noarch package, we're just building on all arches so we
|
||||
# can run unit tests across all arches. The debuginfo will always be empty
|
||||
# (no executables or libraries,) so we can disable it
|
||||
%global debug_package %{nil}
|
||||
|
||||
Name: metslib
|
||||
Version: 0.5.3
|
||||
Release: 1%{?dist}
|
||||
Summary: Metaheuristic modeling framework and optimization toolkit in modern C++
|
||||
|
||||
License: GPLv3+ or CPL
|
||||
URL: https://projects.coin-or.org/metslib
|
||||
Source0: http://www.coin-or.org/download/source/%{name}/%{name}-%{version}.tgz
|
||||
# Removes all "libdir" paths from .pc file (which are unneeded). Not upstream
|
||||
Patch0: %{name}-0.5.3-noarch.patch
|
||||
# Port metslib to use boost random functionality instead of outdated tr1
|
||||
# Based on https://github.com/PointCloudLibrary/pcl/commit/57ace9a92d1667eaa6193262032ff688e222ce0f
|
||||
# Not upstream
|
||||
Patch1: %{name}-0.5.3-boost.patch
|
||||
# Update abstract-search.hpp to remove deprecated exception specification
|
||||
# Not upstream
|
||||
Patch2: %{name}-0.5.3-cpp17.patch
|
||||
|
||||
BuildRequires: make
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: boost-devel
|
||||
BuildRequires: graphviz
|
||||
|
||||
%description
|
||||
%{summary}.
|
||||
|
||||
%package devel
|
||||
Summary: Metaheuristic modeling framework and optimization toolkit in modern C++
|
||||
Provides: %{name}-static = %{version}-%{release}
|
||||
BuildArch: noarch
|
||||
Requires: boost-devel
|
||||
|
||||
%description devel
|
||||
METSlib is a metaheuristic modeling framework and optimization toolkit in
|
||||
modern C++ released as Free/Libre/Open Source Software.
|
||||
|
||||
Model and algorithms are modular: any search algorithm can be applied to the
|
||||
same model. On the other hand no assumption is made on the model, you can
|
||||
work on any problem type: timetabling, assignment problems, vehicle routing,
|
||||
bin-packing and so on.
|
||||
|
||||
Once you have implemented your model in the problem framework, the library
|
||||
makes easy testing different Tabu Search strategies or even different
|
||||
algorithms (Simulated Annealing or other local search based algorithms) with
|
||||
a few lines of code.
|
||||
|
||||
%package doc
|
||||
Summary: Documentation for %{name}
|
||||
BuildArch: noarch
|
||||
|
||||
%description doc
|
||||
The %{name}-doc package provides documentation for the %{name} library.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p0
|
||||
%patch1 -p1 -b .boost
|
||||
%patch2 -p1 -b .cpp17
|
||||
# Disable -O3 optimization for unit tests
|
||||
sed -i 's| -O3||g' configure
|
||||
|
||||
%build
|
||||
export CXXFLAGS="%{optflags} --std=gnu++14"
|
||||
%configure
|
||||
make %{?_smp_mflags}
|
||||
doxygen doxydoc/doxygen.conf
|
||||
|
||||
%install
|
||||
%make_install
|
||||
# Move pkgconfig file to /usr/share/pkgconfig (since package is noarch)
|
||||
mkdir -p %{buildroot}%{_datadir}
|
||||
mv %{buildroot}%{_libdir}/pkgconfig %{buildroot}%{_datadir}
|
||||
|
||||
%check
|
||||
export CXXFLAGS="%{optflags}"
|
||||
make test
|
||||
|
||||
%files devel
|
||||
%doc AUTHORS COPYING NEWS README
|
||||
%{_includedir}/*
|
||||
%{_datadir}/pkgconfig/*.pc
|
||||
|
||||
%files doc
|
||||
%doc doxydoc/html COPYING
|
||||
|
||||
%changelog
|
||||
* Mon May 2 2023 will_niutao <niutao2@huawei.com> - 0.5.3-1
|
||||
- Init for openEuler
|
||||
Loading…
x
Reference in New Issue
Block a user