2
0

SPSS Modelerのみでマッチング最適化を実行する(SPSS Modeler データ加工逆引き9-21)

Last updated at Posted at 2023-11-08

SPSS Modelerのみでマッチング最適化を実行する

スクリーンショット 2023-11-04 9.32.14.png

組み合わせは40320通り(8 * 7 * 6 * 5 * 4 * 3 * 2 * 1)

この記事では組み合わせ総当たりを紹介します。CLPEXノード(最適化ソルバー)を利用する方法は逆引き9-22を参照ください。

この記事は2023年秋のSPSSユーザーイベントで扱われたModeler詰将棋①を題材にしています

1.想定される利用目的

・想定されるすべての組み合わせから最適解を求める
・想定されるすべての組み合わせから予測モデルによるシミュレーションを実行する

2.サンプルストリームのダウンロード

3.サンプルストリームの説明

スクリーンショット 2023-11-04 9.34.32.png

a.入力するデータは以下の通りです。男性の座席1(M1)から座席8(M8)までに想定される組み合わせ40320通りがこの時点で作られています。
スクリーンショット 2023-11-04 10.32.39.png

このテーブルの作成方法は次のとおりです。

スーパーノードの中でシンプルな1から8までの8行1列のデータをM1からM8まで作成します。
スクリーンショット 2023-11-04 10.38.35.png

スクリーンショット 2023-11-04 10.41.26.png

レコード結合では重複がないように以下の条件を用います。

スクリーンショット 2023-11-04 10.38.53.png

接続時に崩れた列の順序を修正します。
スクリーンショット 2023-11-04 10.50.09.png

b.[ソート]ノードを編集します。
スクリーンショット 2023-11-04 10.52.03.png

c.[フィールド作成]ノードを編集します。逆引き4-1で紹介した連番を振ります。
スクリーンショット 2023-11-04 10.56.11.png

[プレビュー]します。 パターンIDが割り当てられました。
スクリーンショット 2023-11-04 10.56.46.png

d.マッチング対象となる女性の背番号データを入力します。
スクリーンショット 2023-11-04 11.00.54.png

e.[レコード結合]ノードを編集します。[キー]結合を選択しますが、[キー]はブランクにして40320レコードに8名の女性IDを総当たりさせます。
スクリーンショット 2023-11-04 11.02.53.png

[テーブル]を表示します。男性のパターンに女性8名の組み合わせテーブルができました。40320 * 8 で322,560とおりの総当たりのパターンが成立しました。
スクリーンショット 2023-11-04 11.06.03.png

f.[フィールド作成]ノードを編集します。
スクリーンショット 2023-11-04 16.57.51.png

g.[フィルター]ノードを編集します。
スクリーンショット 2023-11-04 17.04.51.png

[テーブル]を表示します。女性に対応する男性の編成ができました。
スクリーンショット 2023-11-04 17.06.00.png

h.男性の属性データを入力します。
スクリーンショット 2023-11-04 17.07.56.png

i.[レコード結合]ノードを編集します。
スクリーンショット 2023-11-04 17.08.13.png

j.女性の属性データを入力します。
スクリーンショット 2023-11-04 17.09.40.png

k.[レコード結合]ノードを編集します。
スクリーンショット 2023-11-04 17.09.55.png

l.[ソート]ノードを編集します。
スクリーンショット 2023-11-04 17.10.55.png

[テーブル]を表示します。このテーブルでPID毎にスコアを集計すれば最適化計算が可能になります。
スクリーンショット 2023-11-04 17.11.47.png

m.[フィールド作成]ノードを編集します。同一または隣接県に居住する制約フラグを作成しています。
スクリーンショット 2023-11-04 17.16.52.png

n.[フィールド作成]ノードを編集します。季節の好みが一致すると2点スコアされるようにしています。
スクリーンショット 2023-11-04 17.18.05.png
 
o.[フィールド作成]ノードを編集します。季節の好みが正反対の場合にはペナルティとして1点減点されます。
スクリーンショット 2023-11-04 17.18.48.png

p.[フィールド作成]ノードを編集します。制約条件として年齢差が3歳以内を満たすとフラグを立てます。
スクリーンショット 2023-11-04 17.20.11.png

q.[フィールド作成]ノードを編集します。年齢差を絶対値で求めています。
スクリーンショット 2023-11-04 17.21.21.png

r.[レコード集計]ノードを編集します。パターンID毎に集計します。
スクリーンショット 2023-11-04 17.22.20.png

S.[フィールド作成]ノードを編集します。nとoで求めた季節スコアを調整します。
スクリーンショット 2023-11-04 17.25.33.png]

[プレビュー]します。
スクリーンショット 2023-11-04 17.28.01.png

t.[条件抽出]ノードを編集します。制約条件を絞り込みます。
スクリーンショット 2023-11-04 17.28.17.png

u.[ソート]ノードを編集します。年齢差が最小を優先した上で季節スコアが高いパターンを探します。
スクリーンショット 2023-11-04 17.28.33.png

[プレビュー]します。最適なパターンが特定されました。セルをハイライトしたままメニューから条件抽出ノードを生成します。
スクリーンショット 2023-11-04 17.29.28.png

v.[条件抽出]ノードを確認します。
スクリーンショット 2023-11-04 17.29.44.png

[テーブル]を実行します。

注意事項

男性8名と女性8名でも組み合わせが32万通りになるため、20秒程度の処理時間が必要です。業務で想定されるような人数でマッチングを行うにはCLPEXのような最適化ソルバーが必要になります。逆引き9-22も参照ください。

4.参考情報

通し番号の振り方を紹介した記事

SPSS Modeler ノードリファレンス目次

SPSS Modeler 逆引きストリーム集(データ加工)

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