OptaPlanner

OptaPlanner 備忘録

XStream の input ファイルが reference を XPATH で書いている場合 <com.example.MySolution> <id>1</id> <locationList> <com.example.model.Location> <id>0</id> <name>xxxx</name> </com.rekeep.domain.model.Location> </locationList> <officeList> <com.example.model.Office> <id>0</id> </com.example.model.office></officelist>

Local Search アルゴリズム

今までちょっとアルゴリズムをスルー気味だったので、ちょっとまとめておきます。Local Search は Tabu Search / Simulated Annealing / Late Acceptance がいい感じに働いてくれるので、Benchmarker 使って、まずはざっくりこの3つを比較して、一つ選べばい…

Repeated Planning

ここ、ちょっと掘り下げます。 http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.html#repeatedPlanning長期的に Solver を回しっぱなしのときに、problem facts が変化したらどうするのか?3つのパターンが考えられる…

スコアリングルールを書く

http://d.hatena.ne.jp/tokobayashi/20150312 で、Cheap time scheduling には DRL が無いと書きましたが、それを追加するための JIRA がオープンされています。Add Drools score rules for example CheapTime Scheduling https://issues.jboss.org/browse/P…

OptaPlanner examples その14

Cheap time scheduling http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.html#cheapTimeScheduling遂にラスト!タスクをマシンに割り当て、消費電力を最小化します。CloudBalance や MachineReassignment に似てます…

OptaPlanner examples その13

Traveling tournament problem (TTP) http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.html#travelingTournament各都市の野球チームが、それぞれ都市を訪れ、総当たりでホームアンドアウェイの球場で対戦します。トー…

OptaPlanner examples その12

Employee rostering http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.html#nurseRostering従業員のシフト最適化です。"Nurse Rostering Competition" ていう競技があって (http://www.kuleuven-kulak.be/nrpcompetiti…

OptaPlanner examples その11

Exam timetabling http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.html#examinationここから "Difficult examples" です。どんだけ difficult なのかドキドキしますね。試験を部屋と時間に割り当てる問題です。Cours…

OptaPlanner examples その10

Hospital bed planning http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.html#pas患者を病室のベッドに割り当てます。患者によっては特別な設備が必要だったり、別性の患者は同じ部屋には割り当てない、など。ディナ…

OptaPlanner examples その9

Project job scheduling http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.html#projectJobSchedulingプロジェクトのWBSをガントチャートにし、依存関係/リソースを考慮して最適な順序に並べる。あー、むかし人力でや…

OptaPlanner examples その8

Vehicle routing http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.html#vehicleRouting複数のトラックで顧客を回り、集荷して倉庫に戻ります。巡回セールスマン問題のリアル版ですね。さらに TimeWindowedCustomer の…

OptaPlanner examples その7

Machine Reassignment http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.html#machineReassignmentCloud Balancing を複雑化したバージョンです。Google ROADEF 2012 の課題だそうです。 http://challenge.roadef.org/…

OptaPlanner examples その6

Course timetabling ここから「Real examples」です。要素が増えて複雑になってきます。http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.html#curriculumCourse今回は講義を時間と部屋に割り振る最適化です。 CourseS…

OptaPlanner examples その5

Tennis club scheduling OptaPlanner training (http://d.hatena.ne.jp/tokobayashi/20141027) をやってないひとはここを読む前に、先に training をやりましょう! ここまでが「Basic examples」です。今回は日時、人、リソースを要素としたプランニングの…

Geoffrey来日

OptaPlanner リード開発者の Geoffrey De Smet が来日して、色々話を聞けました。めっちゃいいひとです。 ドキュメント バンバン改善してるから latest を見てね。 http://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single/index.ht…

OptaPlanner examples その4

Dinner party パーティの席決めです。様々な条件を考慮して各テーブルに参加者を最適な組み合わせで配置する。。。そう、結婚式で一度だけ経験しましたよ。 このサンプルでは、男女が交互に並ぶ、隣同士が共通の趣味を持つ、1テーブルに職業を適正なバランスで…

OptaPlanner examples その3

TPS (Traveling Salesman Problem) 巡回セールスマン問題。組合せ最適化問題の代表例です。 http://ja.wikipedia.org/wiki/%E5%B7%A1%E5%9B%9E%E3%82%BB%E3%83%BC%E3%83%AB%E3%82%B9%E3%83%9E%E3%83%B3%E5%95%8F%E9%A1%8C TravelingSalesmanTour : @Planning…

OptaPlanner examples その2

次の example に行く前にベンチマークを見てみます。各 example にはベンチマーク用のアプリがついています。例えば NQueensBenchmarkApp を実行すると、ブシャーっとベンチマークが実行され、レポートHTMLが生成されます。htmlは local/data 以下に出力され…

OptaPlanner examples その1

さて、OptaPlanner トレーニング(http://d.hatena.ne.jp/tokobayashi/20141027)をやったことで、自分のモデリング能力の無さを痛感しました。これを克服するにはまず既存のサンプルのモデルをよく読むところから始めねばならない。 N Queens これはもうや…

OptaPlanner トレーニング

http://www.optaplanner.org/learn/training.html から optaplanner-training-6.2.0.CR1-training-2.zip をダウンロードし、instructions/training.html を開いてみよう。まだ Lab 201 までしか作られていないが、手を動かすとっかかりにはとてもよさそう。…

OptaPlanner N queens を考える その3

中身を覗いてみよう編だ。まず logback.xml でクラス名を出しておこう。 <pattern>%d [%t] %-5p [%c] %m%n</pattern>するとキーポイントになるクラスが出てくるかなー。 TRACE [org.optaplanner.core.impl.domain.solution.descriptor.SolutionDescriptor] Model annotations pa…

OptaPlanner N queens を考える その2

アルゴリズム編だ!その1でやったように、optaplanner-examples の NQueensHelloWorld で実験します。src/main/resources/org/optaplanner/examples/nqueens/solver/nqueensSolverConfig.xml が設定の肝です。 Construction Heuristic まずは初期状態を決め…

OptaPlanner N queens を考える その1

OptaPlanner がどのように動いているか、サンプル「N queens」を題材に考えます。チェスのクイーンをN個、お互いがぶつからないように配置する問題です。 実行 http://www.optaplanner.org/ から OptaPlanner 6.1.0.Final をダウンロード unzip examples/run…

OptaPlanner 6.0.1 User Guide ナナメ読み

かなりのボリュームです。まずはざくっとナナメ読み。http://docs.jboss.org/drools/release/6.0.1.Final/optaplanner-docs/html_single/index.html 1. Planner introduction 何のためのソフトウェアか、という話です。 OptaPlanner is a lightweight, embed…

Drools Planner でウィッシュリストから出産祝いを送る

注:このエントリは実際に行われた出産祝いとは何の関係もありません Drools Planner は難しい問題を解いてくれるソフトウェアです。 1.1. What is Drools Planner? http://docs.jboss.org/drools/release/5.5.0.Final/drools-planner-docs/html_single/inde…