4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Watsonで建築計画を立てる! Model Builderでカンタン最適化

Last updated at Posted at 2019-09-25

はじめに

Watsonで数独を解く! Decision Optimizerを使ってみた
Watsonで巡回セールスマン問題を解く

に引き続きWatsonの新サービスDecision Optimaizer紹介の第三弾です。
前2回は、Python APIを使うことでモデル定義を行いましたが、今回は新機能Model BuilderModeling Assitantを使って、コーディングなしに簡単にモデル構築を行ってみます。

なお、これから紹介するシナリオは、Decision Optimizeチュートリアルを参考に、一部手順を修正したものとなります。

問題定義

家の建築プロジェクトを対象とします。このプロジェクトは下の表にあるような、計10のタスクから構成されます。それぞれの工程に必要な日数も表に記載があります。
また、次のような制約条件があります。

  • 10個のタスクすべてを1回ずつ行う必要がある。
  • 作業はJoe, Jim, Jackの3名で行う。
  • 各タスクは1名の作業員でしか行えない。
  • 作業員は同時に最大1つのタスクしか行えない。
  • 該当タスクは、表の「前工程」が完了していないと着手できない。
タスク名 (日本語訳) 所要日数 前工程
masonry (基礎) 35
carpentry (内装) 15 masonry
plumbing (配管) 40 masonry
ceiling (天井) 15 masonry
roofing (屋根) 5 carpentry
painting (塗装) 10 ceiling
windows (窓) 5 roofing
facade (外装) 10 roofing, plumbing
garden (庭) 5 roofing, plumbing
moving (引渡し) 5 windows,facade,garden,painting

この制約条件を満たした上で、「最短日数で建築を行うにはどうしたらいいか」というのが、これから解く例題の問題設定となります。

事前準備

事前準備としてはWatson Studioの環境セットアップと、csVファイルのダウンロードが必要です。

前者については、下記リンク先に書いた手順をそのまま実施して下さい。オプション設定のうち、Watson Machine Learningとの関連づけも必要になるので、注意してください。

無料でなんでも試せる! Watson Studioセットアップガイド

後者については、以下の2つのCSVファイルをダウンロードして下さい。

https://github.com/makaishi2/sample-data/raw/master/data/build_activities.csv
https://github.com/makaishi2/sample-data/raw/master/data/build_members.csv

モデルの作成

それでは、実際のモデル作成を始めましょう。

スクリーンショット 2019-09-25 11.20.27.png

最初に上のWatson Studioの管理画面から、画面上部の「Add to project」をクリックします。

スクリーンショット 2019-09-25 11.20.37.png

上のようなメニューが出てくるので、一番下にある「Decision Optimization」を選択します。

スクリーンショット 2019-09-25 11.21.15.png

New Decision Optimization model」のパネルが表示されるので、「House Building」など適当な名前を入力して、画面右下の「Create」ボタンをクリックします。
下のようなModel Builderの初期画面が表示されるはずです。

スクリーンショット 2019-09-25 11.21.51.png

データの準備(Prepare data)

事前にダウンロードした2つのCSVファイルを上の赤枠の領域にdrag and dropします。

スクリーンショット 2019-09-30 9.52.32.png

build_actibities.csvbuild_members.csvの2つのファイルにチェックをつけて、「Import」リンクをクリックします。

スクリーンショット 2019-09-30 9.56.05.png

中央のプレビュー画面で取り込んだ2つのCSVファイルの内容を確認します。
build_membersには3名の作業者のリストが、build_activitiesには、10個の作業タスクが、作業日数(Durations in days)と前提タスク(Proceeding activities)とともに入っていることがわかります。
これで、データ準備は完了です。次にモデル構築作業に入ります。
そのため、画面左側のメニューから「Run model」を選んで下さい。

スクリーンショット 2019-09-25 12.53.50.png

上の画面になったら、真ん中の「Use modeling assistant」を選択します。

スクリーンショット 2019-09-25 12.54.15.png

上記の画面になったら、「Scheduling」を選択して下さい。

スクリーンショット 2019-09-30 10.01.33.png

上の画面では、入力とするCSVファイルを指定します。
上の「TASKS」はbuild_activitiesを、下の「RESOURCES」はbuild_membersを指定して下さい。

スクリーンショット 2019-09-30 10.02.42.png

上のダイアログが表示されたら、2箇所にチェックの付いた、デフォルトの状態で「Continue」とします。

スクリーンショット 2019-09-30 10.02.52.png

上の画面が表示されたら、「Finish」をクリックして下さい。

スクリーンショット 2019-09-25 12.55.14.png

この画面が解説用のものなので、閉じるアイコンをクリックして閉じます。

ルールの詳細定義

スクリーンショット 2019-09-30 10.06.08.png

上のような画面が表示されるので、この画面でまた定義できていないルールの詳細を定義していきます。
まず、オレンジの線が出ている2箇所は、決めるべきことが未決定であることを示しているので、こちらを設定します。

上の「must be defined」のアンダーラインをクリックします。

スクリーンショット 2019-09-30 10.07.25.png

このような画面が出てきます。それぞれのタスク遂行日数の情報をどこから取ってくるかを聞いているので「Duraion in days」を選択します。

次に「a date and time」のアンダーラインをクリックします。

スクリーンショット 2019-09-25 20.44.54.png

ここで指定すべきことは、タスクの開始日です。例えば「2019/10/01」などと指定してEnterキーを押します。

スクリーンショット 2019-09-30 10.09.58.png

この段階で、画面は上のようになったはずです。必須入力のオレンジのラインは全部解決しましたが、まだ追加で設定すべき項目が2つあるので、それぞれについて説明します。

①時間の単位の指定については「days」を設定して下さい。

②ここのプラスアイコンをクリックして、先行タスクとの依存関係の制約を追加します。

スクリーンショット 2019-09-30 10.14.10.png

上の画面のように新しい制約が追加されるので、黄色のアンダーラインをクリックして、先行項目として「Preceding activities」を選択して下さい。

スクリーンショット 2019-09-30 10.20.02.png

この段階で、モデルの制約は上の画面のようになっているはずです。
お疲れ様でした。これで必要な制約の設定はすべて完了したことになります。

モデルの実行

上記の制約設定がすべて完了したら、画面右上の「Run Model」のボタンをクリックします。

スクリーンショット 2019-09-25 21.06.19.png

すると、上のような「Running Scenario 1」の画面に遷移します。

スクリーンショット 2019-09-30 10.18.26.png

しばらく待っていると、上のように問題の解決結果(今回のケースでは90日)が表示されます。
また、詳細項目リストで、「誰がいつからどのタスクを実施するか」が規定されていることもわかります。

スクリーンショット 2019-09-30 10.26.07.png

画面左下の「Visualization」、引き続いて「Gantt」をクリックすると、上の画面のようにガントチャートも表示可能です。

スキルレベルも考慮した最適化

引き続き、house_expertise.csvも考慮した最適化計画を作ってみます。
(T.D.B)  (後日追記予定)

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?