You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

62 lines
2.5 KiB

$ratesStr = @("0.01", "0.05", "0.10", "0.20", "0.50")
$outputFile = "compare\em_summary_v2.dat"
# ヘッダー書き込み
@"
# 10
# :
# 1: MutationRate - (MUTATION_RATIO)
# 2: MeanBest -
# 3: MinBest - (Best)
# 4: OptRate(%) - (: 35.63)
#
# MutationRate, MeanBest, MinBest, OptRate(%)
"@ | Out-File -FilePath $outputFile -Encoding ASCII
$tsp_h = "tsp.h"
$content = Get-Content -Path $tsp_h -Raw
foreach ($rateStr in $ratesStr) {
# tsp.h の MUTATION_RATIO 行を置換
$newContent = $content -replace '#define MUTATION_RATIO [\d\.]+', "#define MUTATION_RATIO $rateStr"
Set-Content -Path $tsp_h -Value $newContent -Encoding Default
# コンパイル
gcc tsp.c tsp_jikken.c tsp_public.c tsp_private.c -o tsp.exe -lm
# 実行
$output = .\tsp.exe check.dat
# 出力の解析
$bestLengths = @()
foreach ($line in $output) {
if ($line -match '^#') { continue }
$parts = $line -split ','
if ($parts.Length -ge 4) {
$bestLengths += [double]$parts[3].Trim()
}
}
if ($bestLengths.Count -gt 0) {
$meanBest = ($bestLengths | Measure-Object -Average).Average
$minBest = ($bestLengths | Measure-Object -Minimum).Minimum
$optCount = ($bestLengths | Where-Object { $_ -le 35.631 }).Count
$optRate = ($optCount / $bestLengths.Count) * 100
# ファイルに追記 (カルチャ依存を回避して文字列操作)
$meanBestStr = [math]::Round($meanBest, 2).ToString("0.00", [System.Globalization.CultureInfo]::InvariantCulture)
$minBestStr = [math]::Round($minBest, 2).ToString("0.00", [System.Globalization.CultureInfo]::InvariantCulture)
$optRateStr = [math]::Round($optRate, 0).ToString("0", [System.Globalization.CultureInfo]::InvariantCulture)
$lineOut = "{0}, {1}, {2}, {3}" -f $rateStr, $meanBestStr, $minBestStr, $optRateStr
Add-Content -Path $outputFile -Value $lineOut -Encoding ASCII
Write-Host "Completed rate $rateStr"
} else {
Write-Host "Error parsing output for rate $rateStr"
}
}
# tsp.h を 0.20 に戻す
$newContent = $content -replace '#define MUTATION_RATIO [\d\.]+', "#define MUTATION_RATIO 0.20"
Set-Content -Path $tsp_h -Value $newContent -Encoding Default
Write-Host "All experiments completed."