SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
ナンプレマラソン
自分のやった事
@Mi_Sawa
最初
●
Benchmark2をベースに改良.
– 原型(近くに少ない数字を入れる)は 11,900 点
– 1回だけじゃなくて100回くらい繰り返すようにする.
– 近くの度合い(マンハッタン距離, 縦横が合っているか)で
重み付けを変える.
● 11,900 点→ 45,019 点
● やった! 4倍くらいになった! これで勝つる!!
気づく
● 試してなかったけど, 最初から入ってる所以外を規則的に
入れるのってどうなんだろう?
– (x, y) に (x+y)%9+1 を入れてみる.
● 45,019 点 → 117,544 点!
● なんてこった, さっきのはまだスタートラインでは
なかったのか.
● 規則的に入れる方針に変える.
きそくてき(横ベース)
● 規則的つってもどう入れればよいのか.
– まず, 横をなるべく規則的に並べてみよう.
– 縦と3x3は無視して, 適当にDPっぽく, なるべくいい感
じの規則で入れる.
●
117,544 点 → 122,873 点.
– 横だけ考えても, 自由度結構高いので, 縦でもいい感
じのを選ぼう. それを, 何度もやる.
● 122,873 点 → 123,779 点.
– 縦は殆ど効いてなかった.
きそくてき
● そういえば, (x+y)%9+1 って, 最適じゃないじゃん.
– 最適なパターン作るか. → 証明出来んけどこれだろ.
●
123,779 点 → 151,864 点
● 今までの努力とは一体なんだったのか…
最適パターン
● 固定されている 1/6 って結構少ないんじゃね?
– パターンから”ずらす”代償は大きそう.
– パターンそのままが, 本当の最適解にかなり近いので
は!? (まちがい)
● 最適パターンは, 置換やずらしを含めると何通りもある.
– この中の最適解を, 適当に頑張って効率的に探索す
る.
– 151,864 点 → 153,568 点
MIP(1)
● そういえば普通に整数制約付きの線型計画問題として定式化できるよ
なぁ. まぁ普通に解くのは無理なのはいいとして, どんくらいヤバいんだろ
う?
– 明らかにヤバい, 超ヤバい.
●
lp ファイルが 954M ある.
● LP緩和も解けない.
● (余談) 9x9 の最適パターンは本当にアレだったのだろうか?
– こっちもヤバい. 対称性高すぎなのか, 全然解けない.
– 同じ解は見つかってるけど, 上界が全然下がらない.
MIP(2)
● まぁ, 丸ごとソルバに投げるのは無理.
– 現在の解から, 適当に切り出した場所を改善するとかは出
来るのでは?
– 3x3, 5x5 くらいならまぁ出来るっぽい. (ソルバによっては
もっと行ける?)
● 結局, この戦略を最後まで使っていた.
大まかな手法
● 改善するマス p をヒューリスティックで選ぶ
●
p を中心に, DxD を変更し, 最適解を探す MIP モデルを生
成する.
● ソルバにぶち込む.
マスの選択
● そのマスを含む 1x9, 9x1, 3x3 のうち, 得点になっている矩
形が少ないやつが選ばれやすい.
● 何回も選ばれたマスは選ばれにくい.
● 変更したマスの周囲は選ばれやすい.
モデル(初期)
●
D=3, つまり 3x3 を更新して最適解を探索させる.
● 得点にヒューリスティックは入れず, DxD の周りの8周の情
報も全て突っ込んだ.
● 一箇所の更新に 1 秒とかくらいだったと思う.
モデル(後半)
● ソルバは, 「最適性の証明」にかなり時間をかけていて, 良
い解は割と早く見つかっているっぽい.
– なるべく「良い解を探すの優先」なオプションに.
– 優先度に応じて 3〜5秒程度で探索を打ち切る.
● 何度か最適解保証までソルバを動かして, 最適解自体
がどれくらいで出ているかを見た.
– 15x15 を更新して解を探索させる.
– 姑息な対称性の除去.
– 解が動きやすいようにする.
並列化
● 点数はどんどん上がっていたので, 並列化する事に.
– ソルバもマルチスレッドになってるけれど, 数秒程度で
探索を打ち切っている為か, CPUを100%使ってい
る様子は無かった.
– 更新するマスを, 他のスレッドが全く参照していない所
から選ぶとかする.
– 8スレッドで動かして, 放置.
– 153,568 点 → 224,804 点 (最終提出)
得られた知見(1)
● 保存大事
– 得点計算関数に投げると自動で保存.
– 数分毎に, プログラムの状態を保存して, 何かあっても
途中から再開出来るように.
– 数十分毎に, git commit.
得られた知見(2)
● 使える物は使う.
– 簡単に定式化出来そうなら, とりあえずソルバに投げ
てみるのは悪い手では無い. (大抵のコンテストで
は使えないけれど, それでも, 試すのは悪くなさそう)
得られた知見(3)
● メインのアルゴリズムの実装が簡単に出来るよう, 補助の
関数とかクラスとかは積極的に書くべき.
– メイン部分 : 150行くらい.
– utils.cc : 600行以上.
– 新たなアルゴリズムを実装する気力が失せにくい.
得られた知見(4)
●
Visualizer は, 適当に情報を表示しても意味ない.
– 全く思考の役に立つものを書けなかった.
– GUIめんどい.
各バージョンの比較
● 各バージョンでの解を, 500x500の画像にした.
– R: そのマスを含む 3x3 の矩形のうち, ok な矩形の
割合.
– G: 1x9 (横)
– B: 9x1 (縦)
● 何も得点出来てないマスは黒.
Benchmark2 vs その改良
11,900 点 45,019 点
Bm2の改良 vs (x+y)%9+1
45,019 点 117,544 点
(x+y)%9+1vs 横ベースDP
117,544 点 122,873 点
横ベースDP vs +縦, 繰り返し
122,873 点 123,779 点
横DP+縦, 繰り返し vs 規則的
123,779 点 151,864 点
規則的 vs 最もいい感じな規則的
151,864 点 153,568 点
いい規則的 vs 最終提出
153,568 点 224,804 点
8/17 以降の得点
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
215000
216000
217000
218000
219000
220000
221000
222000
223000
224000
225000
日付
点数
並列化
考えていた事
● ローカルな最適化では, 自由度が高い所がそれなりにあ
る.
– 得点に寄与しないマスがあり, それを動かせる. (マスa
とbのどっちかは得点に寄与出来ないみたいな)
● 自由度を寄せ集めたら, そこで点数を高く出来ないか?

Contenu connexe

Plus de Fixstars Corporation

CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編Fixstars Corporation
 
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fixstars Corporation
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてFixstars Corporation
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門Fixstars Corporation
 
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~Fixstars Corporation
 
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化Fixstars Corporation
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例Fixstars Corporation
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)Fixstars Corporation
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)Fixstars Corporation
 
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方Fixstars Corporation
 
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてFixstars Corporation
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)Fixstars Corporation
 
第8回 社内プログラミングコンテスト 結果発表会
第8回社内プログラミングコンテスト 結果発表会第8回社内プログラミングコンテスト 結果発表会
第8回 社内プログラミングコンテスト 結果発表会Fixstars Corporation
 
第8回 社内プログラミングコンテスト 第1位 taiyo
第8回社内プログラミングコンテスト 第1位 taiyo第8回社内プログラミングコンテスト 第1位 taiyo
第8回 社内プログラミングコンテスト 第1位 taiyoFixstars Corporation
 
第8回 社内プログラミングコンテスト 第2位 fy999
第8回社内プログラミングコンテスト 第2位 fy999第8回社内プログラミングコンテスト 第2位 fy999
第8回 社内プログラミングコンテスト 第2位 fy999Fixstars Corporation
 
第8回 社内プログラミングコンテスト 第3位 logicmachine
第8回社内プログラミングコンテスト 第3位 logicmachine第8回社内プログラミングコンテスト 第3位 logicmachine
第8回 社内プログラミングコンテスト 第3位 logicmachineFixstars Corporation
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)Fixstars Corporation
 
A challenge for thread parallelism on OpenFOAM
A challenge for thread parallelism on OpenFOAMA challenge for thread parallelism on OpenFOAM
A challenge for thread parallelism on OpenFOAMFixstars Corporation
 
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてマルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてFixstars Corporation
 

Plus de Fixstars Corporation (20)

CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けて
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
 
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
 
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
 
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
 
第8回 社内プログラミングコンテスト 結果発表会
第8回社内プログラミングコンテスト 結果発表会第8回社内プログラミングコンテスト 結果発表会
第8回 社内プログラミングコンテスト 結果発表会
 
第8回 社内プログラミングコンテスト 第1位 taiyo
第8回社内プログラミングコンテスト 第1位 taiyo第8回社内プログラミングコンテスト 第1位 taiyo
第8回 社内プログラミングコンテスト 第1位 taiyo
 
第8回 社内プログラミングコンテスト 第2位 fy999
第8回社内プログラミングコンテスト 第2位 fy999第8回社内プログラミングコンテスト 第2位 fy999
第8回 社内プログラミングコンテスト 第2位 fy999
 
第8回 社内プログラミングコンテスト 第3位 logicmachine
第8回社内プログラミングコンテスト 第3位 logicmachine第8回社内プログラミングコンテスト 第3位 logicmachine
第8回 社内プログラミングコンテスト 第3位 logicmachine
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
 
A challenge for thread parallelism on OpenFOAM
A challenge for thread parallelism on OpenFOAMA challenge for thread parallelism on OpenFOAM
A challenge for thread parallelism on OpenFOAM
 
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてマルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
 

Marathon mi sawa