- https://www.icfpcontest.com/specification_v3.pdf を読んでいくぞの気持ち
- 各 musician を stage に配置し、会場にいる attendee 全員の幸福度を最大にする。
- 部屋の形
- サイズ
- room_height: float
- room_width: float
- stage の寸法と位置(部屋の中にステージがある)
- stage_height: float
- stage_width: float
- stage_bottom_left: [float, float]
- x 座標と y 座標
- サイズ
- musician の配置
- musician のリストと彼らが演奏している instrument
- musicians: int list
- 各 musician が使う instrument
- musicians: int list
- musician のリストと彼らが演奏している instrument
- attendee の配置
- 部屋の中での位置、各 instrument の好み
- attendees: [{'x': float, 'y': float, 'tastes': float list}]
- attendee の位置、各楽器に対する好み
- attendees: [{'x': float, 'y': float, 'tastes': float list}]
- 部屋の中での位置、各 instrument の好み
- 障害物(ルール拡張)
- 音を遮る柱
- pillars: [{'center': [float, float], 'radius': float}]
- 音を遮る柱
{
"room_width": 2000.0,
"room_height": 5000.0,
"stage_width": 1000.0,
"stage_height": 200.0,
"stage_bottom_left": [500.0, 0.0],
"musicians": [0, 1, 0],
"attendees": [
{ "x": 100.0, "y": 500.0, "tastes": [1000.0, -1000.0] },
{ "x": 200.0, "y": 1000.0, "tastes": [200.0, 200.0] },
{ "x": 1100.0, "y": 800.0, "tastes": [800.0, 1500.0] }
],
"pillars": [
{"center": [500.0, 1000.0], "radius": 5.0},
...
]
}
- 各 musician の座標
- placements: [{'x': float, 'y': float}]
- 各 musician の音量 (optional; v3 で追加)
- volumes: float list
- 0.0 <= volumes[i] <= 10.0 を満たす必要がある
- volumes: float list
{
"placements": [
{ "x": 590.0, "y": 10.0 },
{ "x": 1100.0, "y": 100.0 },
{ "x": 1100.0, "y": 150.0 }
],
"volumes": [1.0, 5.0, 3.0]
}
以下の関数を最大化したい。(volumes が未設定の場合、volumes[k]=1.0 とみなす)
ただし、k から i への線が k' を中心とする半径 5 の円と交差する場合、k' は出席者 i に対して k からの音を遮る (交差点が1点からなる場合は音が遮られない。) 音が遮られている場合、$I_i(k) = 0$ となる。
さらに、共演(ルール拡張)によって
musician の配置が間違っていたり、すべての musician が配置されていない解答は認められない。
- 部屋
- Lambda Band は部屋で演奏する
- stage は部屋のどこにでも置ける
- musician
- musician は stage で区切られた領域に配置されなければならない
- 自分を中心とした半径 10 の円の中に他の musician や stage の端があってはならない(円の周上は OK)