flplab 利用手順書

需要地点と施設候補を地図上に置き、目的関数と制約を選んで実行すると、 「どの施設を開設し、どの需要地点をどの施設に割り当てるのが最適か」を 厳密に計算して見せるデモ用ツールです。インストールは不要で、ブラウザだけで動きます。

内部の仕組み・数理モデルを詳しく知りたい方へ この手順書は操作方法だけを説明しています。flplab が内部でどのような数理モデルを組み立て、 どういう層構造で計算しているかは flplab 内部構造解説 にまとめてあります。

1. 起動と終了

  1. flplab フォルダの start.ps1 を右クリックして「PowerShell で実行」、 または PowerShell で次を実行します。
    .\start.ps1
    自動的にブラウザが開き、http://127.0.0.1:8000/index.html が表示されます (8000 番が使用中なら 8001, 8002… と自動的にずれます)。
  2. 終了するときは、開いた PowerShell のウィンドウで Ctrl + C を押します。
index.html を直接ダブルクリックしないでください file:// で開くと計算エンジン(Web Worker と WebAssembly)が動作しません。 必ず start.ps1 経由で開いてください。
社内プロキシ環境の場合 ブラウザのプロキシ設定で 127.0.0.1 / localhost が除外されているか確認してください。 プロキシ経由になると自分の PC に到達できず、画面が表示されません。

2. 画面の見方

エリア役割
上部ツールバー シナリオの選択・保存・書き出し/読み込み、比較ビューと感度分析の開閉、地図の表示切り替え
左パネル モデル、目的関数、施設数、制約、ソルバ設定、最適化実行 ボタン
中央の地図 需要地点(丸)と施設候補(角丸四角)の配置、計算結果(開設施設・割当線・カバー円)
右パネル 計算結果のサマリ(総コストなどの指標と、開設施設ごとの内訳)
下部のドロワー ▲ 需要地点・施設候補一覧 をクリックすると開く、表形式の一覧編集画面
いま何を解こうとしているかは、左パネル上部に文章で出ます モデル選択のすぐ下にある青い枠に、現在の目的関数と制約の組み合わせが 「〜を最小化する問題です。開設する施設数は…」という形で表示されます。 目的関数や制約を変更すると、その場で文章も書き換わります。設定を触った結果 何を解く設定になったのかは、まずここを読んでください。

3. 基本的な使い方(最短ルート)

  1. ツールバーの「シナリオ」から、用意されたシナリオ(例:「都心20需要×10施設候補」)を選びます。
  2. 左パネルの「モデル」で解きたい問題の型を選びます(4章)。
  3. 左パネル下部の 最適化実行 を押します。
  4. 計算中は地図の上にオーバーレイが出ます。経過時間とソルバの実行ログが流れ、 長すぎる場合は 中断 で止められます。
  5. 計算が終わると画面右上に完了通知が出て、右パネルに指標、地図に開設施設と割当線が表示されます。
パラメータを変えただけでは再計算されません 設定を変更すると「パラメータが変更されました。再実行してください。」と表示されます。 厳密解の計算には時間がかかるため、計算は 最適化実行 を押したときだけ行います。

4. モデルの選び方

左パネル上部の「モデル」から、代表的な6つの型を選べます。選ぶと、目的関数と制約が その型に応じた初期値へまとめて切り替わります。

モデル何を最小化/最大化するか特徴
UFLP
(容量なし施設配置)
総コスト最小
(固定費+輸送費)
施設の容量制約なし。最も基本的な型
CFLP
(容量制約付き施設配置)
総コスト最小各施設が扱える需要量に上限がある
p-Median総距離最小開設施設数を決めたうえで、移動距離の合計を最小化
p-Center最大距離最小最も不利な需要地点の距離を最小化(公平性を重視)
Set Covering総コスト最小全需要地点をカバー半径内に収める、最小コストの配置
Maximal Covering
(MCLP)
カバー需要最大施設数の上限内で、カバーできる需要量を最大化
モデルを選ぶと表示が「(カスタム)」に戻りますが、これは仕様です

このプルダウンは「選んだ瞬間にパラメータを一括設定するボタン」であり、 選んだモデルを排他的なモードとして覚えているわけではありません。 選択後に制約チェックボックスを自由に足し引きできるよう、意図的にこうしてあります。

パラメータ自体(目的関数・制約)はきちんと反映されています。 反映されたかどうかは、プルダウンの下の説明文と、制約チェックボックスの状態で確認してください。

モデルを選ばず、目的関数と制約を自分で組み合わせて独自の設定を作ることもできます。 その場合、説明文には「6モデルの標準的な組み合わせとは異なる、カスタムな設定です」と表示されます。

5. 目的関数・施設数・制約の設定

目的関数

「総コスト最小」「総距離最小」「最大距離最小」「カバー需要最大」から1つ選びます。

施設数

制約(チェックボックスで個別に ON/OFF)

制約内容
容量制約各施設が対応できる需要量に上限を設けます。
最大距離制約需要地点から割り当てられる施設までの距離に上限(km)を設けます。
需要分割を許可1つの需要地点を複数の施設で分担できるようにします。
予算制約開設する施設の固定費の合計に上限(円)を設けます。
カバー制約
(Set Covering / MCLP)
各需要地点から半径(km)以内に開設施設が1つ以上あることを制約にします。
カバー制約を有効にすると、一部の制約が画面から消えます カバー制約を使う型(Set Covering / MCLP)は「どの需要地点をどの施設に割り当てるか」を 扱わない別の構造の問題になります。そのため、割当を前提とする 「容量制約」「最大距離制約」「需要分割を許可」は表示されなくなります。

ソルバ設定

6. 需要地点・施設候補の編集

地図上での操作

操作結果
空いている場所をクリック需要地点を追加
Shift を押しながらクリック施設候補を追加
マーカーにマウスを乗せる需要量・割当先・開設状況などをツールチップで表示
マーカーをクリック吹き出しが開き、需要量・重み(需要地点)や固定費・容量(施設候補)を編集
マーカーをドラッグその地点を移動
マーカーを右クリックその地点を削除

一覧ドロワーでの操作

画面下部の ▲ 需要地点・施設候補一覧 をクリックすると、表形式の一覧が開きます。

7. 施設の強制開設・強制閉鎖

「この施設は必ず開ける」「この施設は絶対に開けない」という条件を置いて計算したい場合に使います。 地図上のマーカーの吹き出し、または一覧ドロワーの「強制」列から設定します。

設定したら 最適化実行 を押すと、その条件を守った最適解が求まります。 「既存拠点を残す前提でどうなるか」「この拠点を閉じたらいくら悪化するか」を見るのに使えます。

8. 計算結果の見方

右パネルに次の指標が表示されます。

指標意味
ステータス「最適」なら文字通りの最適解。それ以外は下の注意を参照。
総コスト / 固定費 / 輸送費総コストの内訳。目的関数が総コスト最小以外でも参考値として計算されます。
開設数開設した施設数 / 施設候補の総数。
平均距離 / 最大距離需要地点から担当施設までの距離。
カバー率カバーできている需要量の割合。
求解時間ソルバが計算に要した時間。

その下に、開設された施設ごとの内訳(担当件数・固定費・容量制約がある場合は稼働率)が並びます。 行にマウスを乗せると地図上の対応する割当線がハイライトされ、逆に地図のマーカーに マウスを乗せても連動します。

「実行不可能」と表示されたとき 制約が厳しすぎて、条件を満たす配置が存在しない状態です。 容量・予算・最大距離・カバー半径などを緩めるか、施設候補を増やして再実行してください。

9. 地図の表示切り替え(割当線・カバー円)

ツールバー右側のチェックボックスで、地図上の補助表示を切り替えられます。

カバー円が出ないモデルがあります(仕様です)

カバー円は「半径」というパラメータを持つ制約が有効なときだけ描かれます。つまり カバー制約 または 最大距離制約 のどちらかを有効にしている場合です。

UFLP・CFLP・p-Median・p-Center をそのまま解く場合、モデルの中に半径という概念が 存在しないため、描くべき円がありません。この状態では「カバー円を表示」チェックボックスは 押せない状態になり、マウスを乗せると理由が表示されます。

また、Set Covering と MCLP は「どの需要地点をどの施設に割り当てるか」を扱わない型のため、 これらのモデルでは割当線が引かれません(カバーできているかどうかだけを問う問題であり、 担当関係を決めていないため)。こちらも仕様です。

10. シナリオの保存・書き出し・読み込み

ボタン動作
保存 名前を付けてブラウザ内に保存します。保存したものは「シナリオ」プルダウンの「保存済み」から呼び出せます。
JSON出力 現在のシナリオを JSON ファイルとしてダウンロードします。共有やバックアップに使います。
JSON読込 JSON ファイルを選ぶと、そのシナリオを読み込みます。
「保存」はこの PC のブラウザの中だけに残ります 別の PC や別のブラウザに持っていくときは JSON出力 を使ってください。 ブラウザの閲覧データを消すと、保存したシナリオも消えます。

11. 案の比較

2つの設定とその結果を並べて見比べる機能です。

  1. ツールバーの 比較を開く を押します。
  2. 1つ目の設定で 最適化実行 して結果を出したうえで、 現在を案Aに保存 を押します。
  3. 比較ビューを閉じてパラメータを変更し、再度 最適化実行 したうえで 現在を案Bに保存 を押します。
  4. 総コスト・平均距離・最大距離・カバー率・開設数の差分(案B − 案A)と、2枚の地図が並びます。
  5. 閉じる で比較ビューを終了します。
保存する前に計算を済ませてください 解が出ていない状態で保存すると、差分表の代わりに「解が入っていません」という案内が出ます。 最適化実行 で結果を出してから保存し直してください。

12. 感度分析

「施設数を変えたら総コストがどう変わるか」を自動で調べてグラフ化します。

  1. ツールバーの 感度分析 を押します。
  2. 「最大施設数」を指定し、感度分析を実行 を押します。
  3. 施設数 1 件から指定した最大数まで 1 件ずつ増やしながら計算し、 結果を折れ線グラフと表に追加していきます。
  4. 閉じる で終了します。

施設候補が多いシナリオでは時間がかかります。途中でやめたいときは 中断 を押してください。それまでに計算できた点は残ります。

13. よくあるつまずき

症状原因と対処
地図の背景(道路や地名)が表示されず、灰色の格子になる インターネットに接続できない環境などで地図タイルを取得できないと、 自動的に簡易表示へ切り替わります。計算そのものには影響しません。
「実行不可能」と表示される 制約が厳しすぎて解が存在しません。制約を緩めるか施設候補を増やしてください。
計算が終わらない ソルバ設定の「制限時間(秒)」を確認してください。時間内に終わらない場合は そこまでの最良解で打ち切られ、ステータスに「制限時間で打ち切り」と表示されます。 中断 でいつでも止められます。
カバー円が表示されない 仕様です。9章を参照してください。
割当線が表示されない Set Covering / MCLP では担当関係を決めないため引かれません(9章)。 それ以外のモデルなら「割当線を表示」のチェックを確認してください。
モデルを選んだのに「(カスタム)」に戻る 仕様です。4章を参照してください。
画面が真っ白、または動作がおかしい start.ps1 を再起動し、ブラウザで再読み込み(Ctrl + R)してください。