[[20220225175154]] 『VBAを使って平均的なグループ分け』(JJ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAを使って平均的なグループ分け』(JJ)

VBAを使って力が均等なグループを複数作りたいです。
また、同じグループには同じ名前のカードが入らないようにしたいと考えています。

カードA,パワー90*3枚
カードB,パワー70*2枚
カードC,パワー50*4枚
カードD,パワー30*3枚
カードE,パワー20*2枚
カードF,パワー10*2枚

例えば上記の計16枚を、1グループ4枚ずつカードのダブりがない様に、
かつ各グループのパワーがある程度近くなる様に、4グループ作りたいと考えています。

最初は強い順に並べた後、
4枚ずつ右から並べ、次は左から並べ、、、
とジグザグに配置していたのですが、それだとどうしてもダブりが出てしまい・・・・。

カードの枚数を種類が増えれば、その分グループも増やせる様にしたいです。
お知恵をいただけましたら幸いです。

< 使用 Excel:Excel2016mac、使用 OS:MacOSX >


Excel2016macにはソルバーがついていますか?
ついていれば、ソルバーを使うとよいと思います。

(γ) 2022/02/25(金) 18:33


ソルバーの目標となる値の求め方がいまいち思い付かず…
全てのカードの強さの平均値と各グループのカードの平均値の差の合計を
1番小さくなるようにすれば良いのでしょうか
(JJ) 2022/02/25(金) 22:02

>全てのカードの強さの平均値と各グループのカードの平均値の差の合計を
「全てのカードの強さの平均値」と「各グループのカードの強さ」の差の絶対値の合計
としてみたらいかがでしょう。
絶対値を使うので非線形にはなるのですが。
(γ) 2022/02/25(金) 22:06

「グループの強さ平均値(強さ合計/グループ数)」と「各グループのカードの強さ」の差の絶対値の合計
というのが正確でした。
(γ) 2022/02/25(金) 22:18

つまり今回で言うと
「全てのカードの強さの合計/4(4グループのため)」強さの平均値
「グループの合計/4(4枚1組のため)」各グループの強さ
の差の絶対値ということですか?

(JJ) 2022/02/25(金) 22:30


その例でいうと
=ΣABS(グループiの強さ - 190)
ということです。
やってみれば、おのずと自然なものに落ち着くはずです。

(γ) 2022/02/25(金) 22:49


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.