警備員の配置は、最適化すると何が変わる?近い順の組み方と30現場・80人・7日分で比べた
警備員の配置の最適化とは、検定・NG関係・連勤などの条件を全部守る組み合わせの中から、通勤距離の合計がいちばん小さいものを計算で選ぶことです。人まわし帳の運営者が架空の30現場・80人・7日分で「近い順に埋める」組み方と10回比べると、最適化は直線距離の合計が平均13.9%短く、計算は1回あたり平均8秒、長くても16秒ほどでした(8スレッド、運営者のPC)。近い順は10回中5回で検定の条件を外しました。(2026年10月時点)
全体の流れと費用は派遣・警備・清掃の人材管理ガイドのページにまとめています。
要点
- 架空の30現場・80人・7日分を10回組むと、最適化は近い順より通勤の直線距離の合計が平均13.9%短くなりました。
- 近い順の組み方は、検定合格者が要る現場・日の698件のうち23件(10回中5回)で条件を外しました。
- 近い順では1週間の勤務が0日か1日の人が延べ71人出ましたが、最適化では全員を決めた日数の幅に収めました。
- 最適化の計算は1回あたり平均8秒、長くても16秒ほどでした(8スレッド、運営者のPC)。ただし距離は直線で、架空データの結果です。御社の条件で数字は変わります。
目次
警備員の配置を最適化すると、近い順の手組みと何が違いますか?
違いは、先を読んで全体で人を割り振ることです。近い順の組み方は、現場を1つずつ見て、空いている人の中から近い順に埋めます。最適化は、検定・NG関係・連勤・回数の偏りの条件を全部守る組み合わせを考えます。その中から、通勤の直線距離の合計がいちばん小さいものを選びます。
人まわし帳の運営者が架空の30現場・80人・7日分を作り、乱数を変えて10回組んだ結果が次の表です。最適化は距離が短く、近い順が外した条件も外しませんでした。
| 見たもの(10回の合計・平均) | 近い順 | 最適化 |
|---|---|---|
| 通勤の直線距離の合計 | 基準 | 平均13.9%短い(4.5〜20.8%) |
| 検定合格者がいない現場・日 | 23件(10回中5回) | 0件 |
| 勤務日数が決めた幅を外れた人 | 延べ110人・週(10回すべて) | 0人 |
| 埋まらなかった枠 | 0 | 0 |
近い順でも、希望休・行けない現場・NG関係・6連勤のように、その場で確かめられる条件は外れませんでした。外れたのは、先に別の現場へ回した人が後で必要になる条件です。
実験は、どんな条件で行いましたか?
架空の30現場と80人の隊員を40km四方に散らし、1週間7日分の配置を組みました。現場ごとの必要人数は1〜3人で、土日は約4割の現場だけが動きます。条件は次の7つで、最適化はOR-Tools(Googleの無料の計算ライブラリ)のCP-SATで解きました。
| 条件 | 中身(架空の設定) |
|---|---|
| 必要人数 | 現場・日ごとに1〜3人をちょうど埋める |
| 検定 | 30現場のうち12現場は検定合格者を1人以上。合格者は80人中22人 |
| 行けない現場 | 2割の隊員に2現場ずつ |
| NG関係 | 10組の2人は同じ日に同じ現場に入れない |
| 希望休 | 全員が週に1日。曜日ごとに11〜12人 |
| 連続勤務 | 5連勤まで |
| 回数の偏り | 勤務日数を平均±1日程度の幅に収める |
検定の条件は、警備員等の検定等に関する規則第2条を単純にしたものです。高速道路や公安委員会が必要と認めた道路などの交通誘導では、交通誘導の1級か2級の合格者を場所ごとに1人以上置きます。合格者の割合27%は、警察庁の統計の2025年12月末の保有率27.0%(161,019人÷596,985人)に合わせました。
条件を3つ・1日分だけにした最初の試しでは、最適化の距離は平均20.2%短くなりました(試しの値。このページのほかの数字とは条件が違います)。検定の条件は、近い順が10回中2回で計3現場外しました。条件と日数を増やすと、距離の差は13.9%に縮みました。
最適化で、通勤の距離はどれくらい短くなりましたか?
10回の平均で13.9%、最も差が出た回で20.8%、最も小さい回で4.5%短くなりました。距離はどの回も、7日分の割り当てごとの直線距離を足したものです。
近い順の組み方で距離が延びるのは、表の上のほうの現場が近くの人を先に取るからです。後の現場では、近くの人が別の現場に回っていて、遠くの人を呼ぶしかなくなります。最適化は全部の現場を同時に見るので、この取り合いが起きません。
1日だけを取り出しても差は見えます。乱数の種0の木曜日は、近い順が471km、最適化が372kmでした。この日の近い順は、検定合格者の要る現場の1つに合格者を置けていません。
差の幅は、回によって4.5〜20.8%と開きました。現場と隊員の位置が回ごとに違うためで、御社の地図で同じ割合になるとは限りません。
近い順の組み方は、どの条件を外しましたか?
外したのは、検定と回数の偏りの2つです。検定合格者が要る現場・日は10回で698件あり、近い順はそのうち23件(3.3%)で合格者を置けませんでした。合格者が先に近くの別の現場で使われ、後で入れ替える相手が残っていなかったためです。
回数の偏りは、もっとはっきり出ました。どの現場からも遠い人には、近い順だと順番が回りません。その結果、1週間の勤務が0日の人が延べ44人、1日の人が27人いました。反対に、6日入った人は延べ226人いました。
最適化は全員を決めた幅に収め、0日と1日の人は出ませんでした。最も多かったのは週3日の延べ213人で、週2日は延べ23人でした。
近い順に組むと、登録していても声のかからない隊員が出ます。この偏りは、1日ずつの配置表を見ていても気づきにくいものです。
最適化を管制の仕事に使うとき、どこに気をつければよいですか?
条件を言葉ではなくデータで持つことが先です。検定の有無、行けない現場、NG関係が隊員の台帳に入っていなければ、計算はできません。条件を書き出すと、管制の方が頭の中で守ってきた決まりが見えてきます。
制約の書き方は短く済みます。実験のコードで、必要人数と検定の条件を書いた所は次の4行です。
for (d, si), lst in by_site.items(): # 日・現場ごとの割り当て候補
m.Add(sum(v for _, v in lst) == sites[si]['need'][d]) # 必要人数ちょうど
if sites[si]['kentei']:
m.Add(sum(v for p, v in lst if staff[p]['kentei']) >= 1) # 検定合格者を1人以上
実験には限界もあります。データは架空で、距離は直線です。実際の通勤は電車の乗り換えや車の経路で変わります。公安委員会が必要と認める路線は都道府県ごとに違うので、現場ごとに確かめます。
実験のコードは scripts/experiments/keibi_haichi_jikken.py です。図は scripts/figs/keibi_haichi.py で作り、乱数の種を同じにすれば同じ結果になります。計算時間は運営者のパソコン(Windows 11、8スレッドで計算)での値です。
私が仕組みを作るときは、最適化の結果を「案」として出し、管制の方が直してから確定する画面にします。直した理由を記録すると、次の週の条件に足せます。急な欠勤に備える予備の人数は当日欠勤と予備要員の記事、夏の交替の枠を配置に足す話は交通誘導の熱中症対策の記事、新任教育が終わっていない隊員を配置の前に知らせる話は警備員教育の記事で扱っています。
このサイトで相談するには?
人まわし帳では、配置の組み方を御社のやり方に合わせて仕組みにします。何をどう頼むか決まっていなくても大丈夫で、準備は要りません。今の配置表の作り方をうかがい、進め方を一緒に考えます。無料で相談するからどうぞ。
よくある質問
- 最適化の計算には、高いソフトが要りますか?
- いいえ。実験に使ったOR-Toolsは無料で使えるGoogleのライブラリで、30現場・80人・7日分は普通のパソコンで1回あたり平均8秒、長くても16秒ほどで解けました(8スレッド、運営者のPC)。
- 条件が多すぎて、組めない週はどうなりますか?
- 最適化は「この条件では組めない」と答えを返します。実験の条件を決める途中で試した、希望休が同じ曜日に偏った週では、人が足りず解なしになりました。
- 最適化の配置案は、そのまま使えますか?
- いいえ。案として出し、管制の方が見て直す使い方をおすすめします。隊員の体調や現場の事情など、データにない条件があるからです。
- 距離の代わりに交通費を小さくできますか?
- はい。最小にする値を距離から交通費や移動時間に替えるだけです。経路の時間を使うときは、地図のサービスから時間を取ってくる作業が加わります。
出典
- 警備員等の検定等に関する規則 第2条(e-Gov 法令検索)(2026年10月16日確認)
- 警察庁生活安全局生活安全企画課「令和7年における警備業の概況」(2025年12月末現在、検定合格証明書の保有者161,019人・警備員596,985人)(2026年10月16日確認)
- Google OR-Tools「CP-SAT Solver」(公式ドキュメント)(2026年10月16日確認)