##
## 血統支配率を計算するIronRubyスクリプト
##
## 実行方法
## 1. IronRubyをインストールする
## 2. このスクリプトを文字コードUTF-8で保存する(ファイル名を仮に"hoge.rb"とする)
## 3. hoge.rbをKOEI.WP7_2012.dll、KOEI.WP7_2012.Configuration.V100.dllと同じフォルダに入れる
## 4. コマンドプロンプトを立ち上げる
## 5. コマンドを実行する
## > ir.exe -Ku hoge.rb
##
require 'KOEI.WP7_2012'
require 'KOEI.WP7_2012.Configuration.V100'
include KOEI::WP7_2012
## 対象の地域
TARGET_COUNTRY = :JAPAN
def get_country( bokuzyou_num )
if bokuzyou_num < 214 && bokuzyou_num != 27 && bokuzyou_num != 28 then
return :JAPAN
elsif bokuzyou_num < 233 && bokuzyou_num != 28 then
return :USA
else
return :EURO
end
end
def get_tanetsuke_price( tanetsuke )
return ( ( tanetsuke >> 1 ) * 100 ) + ( ( tanetsuke & 0x01 ) == 1 ? 50 : 0 )
end
config = Configuration::V100.new
wp = WP7.new( config.ProcessName, config )
family_line_dic = []
tanetsuke_total = 0.0
dam_total = 0.0
sire_total = 0.0
geneki_total = 0.0
wp.HFamilyLineTable.RecordCount.times do |num|
family_line_dic.push({
:family_line_num => num,
:tanetsuke => 0.0,
:geneki_len => 0.0,
:dam_len => 0.0,
:par => 0.0,
:sire_len => 0.0,
})
end
wp.HSireTable.RecordCount.times do |num|
data = wp.HSireTable.GetData( num, Datastruct::HSireData.new )
next if data.intai != 0
abl_data = wp.HAblTable.GetData( data.abl_num, Datastruct::HAblData.new )
next if get_country( abl_data.bokuzyou ) != TARGET_COUNTRY
blood_data = wp.HBloodTable.GetData( data.blood_num, Datastruct::HBloodData.new )
next if blood_data.father_num == wp.Config.IgnoreBloodNumber
price = get_tanetsuke_price( data.tanetsuke )
tanetsuke_total += price
sire_total += 1
family_line_dic[ blood_data.family_line_num ][ :sire_len ] += 1
family_line_dic[ blood_data.family_line_num ][ :tanetsuke ] += price
end
wp.HDamTable.RecordCount.times do |num|
data = wp.HDamTable.GetData( num, Datastruct::HDamData.new )
next if data.intai != 0
abl_data = wp.HAblTable.GetData( data.abl_num, Datastruct::HAblData.new )
next if get_country( abl_data.bokuzyou ) != TARGET_COUNTRY
blood_data = wp.HBloodTable.GetData( data.blood_num, Datastruct::HBloodData.new )
next if blood_data.father_num == wp.Config.IgnoreBloodNumber
dam_total += 1
family_line_dic[ blood_data.family_line_num ][ :dam_len ] += 1
end
wp.HRaceTable.RecordCount.times do |num|
data = wp.HRaceTable.GetData( num, Datastruct::HRaceData.new )
next if data.intai == 1
abl_data = wp.HAblTable.GetData( data.abl_num, Datastruct::HAblData.new )
next if get_country( abl_data.bokuzyou ) != TARGET_COUNTRY
father = wp.HSireTable.GetData( data.father_num, Datastruct::HSireData.new )
blood_data = wp.HBloodTable.GetData( father.blood_num, Datastruct::HBloodData.new )
geneki_total += 1
family_line_dic[ blood_data.family_line_num ][ :geneki_len ] += 1
end
# 605 名前:名無しさんの野望[sage] 投稿日:2012/03/03(土) 04:53:28.53 ID:A7TqSQY6 [3/3]
# ウイポスカウター使って確立したい種牡馬の支配率計算したくて、
# あれ? そもそも2010あたりからの系統支配率ってどういう計算してるのかな?、
# と思っていろいろ計算してみた。(既出だったらスマンw)
#
# おそらく、
# 系統支配率 = (種付け料割合 + 種牡馬数割合 + 繁殖牝馬数割合 + 現役競走馬数割合) / 4
# に近い式になってると思う。
#
# 「近い」というのは、↑で計算すると近くはなるんだが誤差が少々…何だろな…。
#
family_line_dic.each_with_index do |row|
par = 0.0
par += row[:tanetsuke] / tanetsuke_total
par += row[:sire_len] / sire_total
par += row[:dam_len] / dam_total
par += row[:geneki_len] / geneki_total
par /= 4.0
row[:par] = par
end
family_line_dic.sort{|a,b| b[:par]<=>a[:par]}.each_with_index do |row|
data = wp.HFamilyLineTable.GetData( row[:family_line_num], Datastruct::HFamilyLineData.new )
name = ""
next if data.name_1 == 0
(1..14).each do |n|
break if (s = eval("data.name_#{n}")) == 0
name += Helper::KoeiCode.ToString(s)
end
puts sprintf( "%6.1f%% | %s系", row[:par] * 100, name )
end
__END__
実行結果
2013年スタート 2013年1月1週 日本の支配率
24.9% | サンデーサイレンス系
13.4% | ミスタープロスペクター系
8.9% | ノーザンダンサー系
5.9% | ヘイルトゥリーズン系
3.5% | ダンジグ系
3.3% | ニジンスキー系
3.2% | リファール系
3.2% | グレイソヴリン系
3.0% | ブライアンズタイム系
2.4% | ブラッシンググルーム系
2.0% | サドラーズウェルズ系
2.0% | パーソロン系
1.8% | ネヴァーベンド系
1.8% | プリンスローズ系
1.7% | ニアークティック系
1.6% | ストームキャット系
1.6% | プリンスリーギフト系
1.6% | ヌレイエフ系
1.5% | ボールドルーラー系
1.4% | ヒンドスタン系
1.3% | リボー系
1.3% | カロ系
1.2% | ダマスカス系
1.0% | マンノウォー系
1.0% | ブランドフォード系
1.0% | ノーザンテースト系
0.9% | サーゲイロード系
0.8% | ダンテ系
0.8% | オーエンテューダー系
0.7% | トムフール系
0.6% | レイズアネイティヴ系
0.5% | ヒムヤー系
0.1% | トウルビヨン系
0.1% | ファイントップ系
0.1% | ハンプトン系
0.1% | ネイティヴダンサー系
0.0% | ハイペリオン系
0.0% | リュティエ系
0.0% | エタン系
0.0% | エルバジェ系
0.0% | ナスルーラ系
0.0% | ロイヤルチャージャー系
0.0% | ヘロド系
0.0% | レッドゴッド系
0.0% | ザボス系
0.0% | モスボロー系
0.0% | セントサイモン系
0.0% | オリオール系
0.0% | ネアルコ系
0.0% | フェアウェイ系
0.0% | スインフォード系
0.0% | テディ系
0.0% | ボワルセル系
0.0% | カーレッド系
0.0% | ロックフェラ系
0.0% | ゲインズボロー系
0.0% | ザテトラーク系
0.0% | エクリプス系
0.0% | マッチェム系
0.0% | ベンドア系