1.はじめに
みなさん、こんにちは。前回に引き続き、IBM Bob + CPLEXで最適化問題に挑戦していこうと思います。
今回のお題は人員配置の最適化です。このお題については、過去問い合わせを受けたことがあり、取り組んでみたいと思っていました。
本記事で作成したOPLファイル、サンプルデータ、READMEファイルをGitHubにアップロードしました。
ご自由にダウンロードしてください。
2. 人員配置の最適化問題とは
一言で言えば**「誰を、いつ、どの場所に配置すれば、全体の効率や満足度が最大化するか?」**を数学的な手法を使って解く問題のことです。
人員配置の問題は、以下のようなパターンに分けられることが多いみたいです。
① スケジューリング(勤務シフト)の最適化
コンビニ、病院、コールセンターなどで最も一般的なものです。
ナース・スケジューリング問題(Nurse Scheduling Problem / NSP)などが有名ですね。
目的: 必要な時間帯に必要な人数を揃える。
制約: 「夜勤の次は休み」「週に40時間以内」「ベテランを必ず1人入れる」など。
② プロジェクト・タスク割り当ての最適化
IT開発や建設現場などで見られるパターンです。
目的: 各メンバーのスキル(Javaができる、設計が得意など)に合わせて、納期内に終わるよう仕事を振る。
制約: 予算、個人の稼働率、タスク間の依存関係。
③ 拠点・エリア配置の最適化
作業員、営業担当のエリア分けや、警備員の配置などです。
目的: 移動時間を最小限にする、または担当エリアの売上ポテンシャルを均等にする。
3. Bobでプログラムを作成する
さっそくプログラムを作成していきます。
今回もOPLで書いてもらいます。
3.1 要件をBobにインプットする
もう、ざっくりと"人員配置・スケジュール配置の最適化問題を解きたい!"とお願いしてみました。
するといろいろ提案してくれます。
今回は、プロジェクトにチームのメンバーを割り当てる最適化問題を解いてもらおうと思います。
先ほど提案を受けた中にあった内容から選び、制約条件と目標を教えます。
3.2 プログラム作成 その1
承認したら、あとは自動でプログラムとサンプルデータまで作成してくれます。
3.3 CPLEXで実行 その1
実行してみるとエラーになりました。
エラーの内容をBobに教えると解決策を探してプログラムを修正してくれます。
3.4 CPLEXで実行 その2
修正後のプログラムとサンプルデータで実行しました。すると解がないという結果になりました。
制約条件や目標の設定次第では、ありえる結果ですね。
が、サンプルなので、解があるようなデータにしてもうおうと思います。
3.5 Bobでサンプルデータを再作成してもらう
解が見つからなかったという結果を伝えると、サンプルデータを更新してくれます。
せっかくなので、プロジェクト数やメンバー数も増やしてもらいました。
サンプルデータの例
3.6 CPLEXで実行 その3
実行すると解がみつかりました。
メンバーそれぞれが、どのプロジェクトにアサインされるのかがフラグで示されます。
4 感想
今回も、OPLはまったく理解していませんが実装し解を求めるところまではできました。
解がないとなる場合があったり、本当に正しい解なのか?この実装方法が最適なのか?が分かっていないので、やはりきちんと基礎は勉強する必要がありますね。
今回もですが、要件の提案からプログラムの実装、エラー修正、サンプルデータ作成まで、ほぼ自動でやってくれて、便利すぎます。
5 おわりに
IBM BobやClaude Codeのようなagentic codingツールの進化はすごいですね。
エンジニアの端くれとしても、うまく使いこなして取り残されないように頑張っていきたいと思いますし、
エンジニアの役割についても少しずつアップデートしていく必要があると考えさせられる時代ですね。
では、また次回!!
参考
SPSS Modeler ノードリファレンス目次
SPSS Modeler 逆引きストリーム集
SPSS funさん記事集
IBM 斎藤さんの記事集
SPSS連載ブログバックナンバー
SPSSヒモトクブログなどは以下のTechXchangeのコミュニティに統合されました。
ご興味がある方は、ぜひiBM IDを登録して参加してみてください!!!お待ちしています。
IBM TechXchange Data Science Japan











