LoginSignup
1
0

More than 1 year has passed since last update.

SMTPlan+を動かす

Posted at

概要

SMTPlan+は,自動計画(Automated planning)の分野でPDDL(Planning Domain Definition Language)で記述された問題を解くソルバーの一つです.Githubでソースコードが公開されていますが最新の環境ではビルドできません.

issueにビルドできた環境の書き込みがあったため,それを参考にすることで私の環境でもビルドすることができました.
必要な環境を構築するための説明が結構散らばっていたので,この記事では具体的なコマンドについて備忘録を兼ねて投稿したいと思います.

SMTPlan+とは

SMTPlan+は,ロンドン大学キングス・カレッジのPlanningグループが開発したPDDLソルバーです.
SMTPlan+は,いくつかに分かれるPDDLのバージョンのうちPDDL+に対応しており,ひとつ前のバージョンであるPDDL2.1に対して,

  • Nonlinear change
  • Processes
  • Events
  • Timed Initial Literals
  • Epsilon separation
  • Cascading events

といったより複雑な内容をもつ問題を解くことが可能です.

詳細なアルゴリズムについては,プロジェクトサイト論文が参考になります.

SMTPlan+のビルド

それでは実際にビルドしていきたいと思います.

参考にしたもの

SMTPlan+は最終更新日が2019年であるためか,最新のビルド環境や依存ライブラリでは素直にビルドできません.
Githubページissueの最終投稿にビルドできた例があるので,この情報を参考にビルドしていきたいと思います.

gccやCMakeのダウングレードが必要なため,私は仮想環境を用意しビルドを行いました.

Dockerの準備

私は公式のgccのイメージをベースにしていくことにしました.gccはバージョン7.4.0である必要があります.

docker pull gcc:7.4.0
docker run -it gcc:7.4.0 

その他準備

CMakeLists.txtの書き換えが必要なので,なにかしらのエディタをインストールします.

sudo apt update
sudo apt install nano

CMake

CMakeはバージョン3.10.2である必要があります.

wget -O cmake-3.10.2.tar.gz https://cmake.org/files/v3.10/cmake-3.10.2.tar.gz
tar xzvf cmake-3.10.2.tar.gz
cd cmake-3.10.2
./bootstrap && make && make install

Boost

Boostはバージョン1.56.0である必要があります.

git clone https://github.com/boostorg/boost.git
cd boost
git checkout refs/tags/boost-1.56.0
git submodule update --init --recursive
sudo apt install python-dev
./bootstrap.sh --prefix=/usr/
./b2
sudo ./b2 install

piranha

piranhaはバージョン0.10である必要があります.

wget -O piranha-0.10.tar.gz https://github.com/bluescarni/piranha/archive/refs/tags/v0.10.tar.gz
tar xzvf piranha-0.10.tar.gz
cd piranha-0.10
sudo apt install libmpfr-dev
mkdir build
cd build
cmake ../
sudo make install

mp++

mp++はバージョン0.9である必要があります.

wget -O mppp-0.9.tar.gz https://github.com/bluescarni/mppp/archive/refs/tags/v0.9.tar.gz
tar xzvf mppp-0.9.tar.gz
cd mppp-0.9
mkdir build
cd build
cmake ../
sudo make install

z3

wget -O z3.tar.gz https://github.com/Z3Prover/z3/archive/refs/heads/master.tar.gz
tar xzvf z3.tar.gz
cd z3-master
python scripts/mk_make.py
cd build
make
sudo make install

SMTPlan

いよいよ本体です!

wget -O SMTPlan.tar.gz https://github.com/KCL-Planning/SMTPlan/archive/refs/heads/master.tar.gz
tar xzvf SMTPlan.tar.gz
cd SMTPlan-master/SMTPlan
sudo apt install flex

CMakelists.txtの書き換えを行います.12行目の

set(CMAKE_CXX_FLAGS "-std=c++0x")

を以下に書き換えます.

set(CMAKE_CXX_FLAGS "-std=c++0x -pthread")

続いてビルドを行っていきます.

mkdir build
cd build
cmake ..
make -j4

事後処理

出来た実行ファイルをパスが通っているところに置いておきたかったのでコピーしました.

cp SMTPlan-master/SMTPlan/build/SMTPlan /usr/local/bin/  

動作確認

TBD

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0