$ cd tools/sim_layouts $ time python3 test_famires_v3.py OK 80cmの通路はBellaBotで通れる(マス目0.025・ずらし0.0) OK 77cmの通路はBellaBotで通れない(マス目0.025・ずらし0.0) OK 75cmの通路はServiで通れる(マス目0.025・ずらし0.0) OK 80cmの通路はBellaBotで通れる(マス目0.025・ずらし0.013) OK 77cmの通路はBellaBotで通れない(マス目0.025・ずらし0.013) OK 75cmの通路はServiで通れる(マス目0.025・ずらし0.013) OK 80cmの通路はBellaBotで通れる(マス目0.025・ずらし0.031) OK 77cmの通路はBellaBotで通れない(マス目0.025・ずらし0.031) OK 75cmの通路はServiで通れる(マス目0.025・ずらし0.031) OK 80cmの通路はBellaBotで通れる(マス目0.0125・ずらし0.0) OK 77cmの通路はBellaBotで通れない(マス目0.0125・ずらし0.0) OK 75cmの通路はServiで通れる(マス目0.0125・ずらし0.0) OK 80cmの通路はBellaBotで通れる(マス目0.0125・ずらし0.013) OK 77cmの通路はBellaBotで通れない(マス目0.0125・ずらし0.013) OK 75cmの通路はServiで通れる(マス目0.0125・ずらし0.013) OK 80cmの通路はBellaBotで通れる(マス目0.0125・ずらし0.031) OK 77cmの通路はBellaBotで通れない(マス目0.0125・ずらし0.031) OK 75cmの通路はServiで通れる(マス目0.0125・ずらし0.031) OK 横向きのボックスの左右(ベンチの背)は座る側の候補にしない OK 縦向きのボックスの上下(ベンチの背)は座る側の候補にしない OK 店の外にはみ出した卓を見つける OK トイレの入口の前の壁を見つける OK トイレの壁でへだてた1mの席は違反にしない OK 壁がなければ、トイレからちょうど1mの席を見つける OK 卓に食い込んだ壁を見つける OK ゆったり型の仕切り(背もたれの上)は違反にしない OK 座る側の前をふさがれた卓を見つける OK 出発点がふさがれていたら止める OK 待合がないのを見つける OK ⑦は③と同じ卓の数・種類・席数 OK L字席(flip=False・mirror=False)の止まってよい辺は、開いた角とソファの端0.6mまで OK L字席(flip=False・mirror=True)の止まってよい辺は、開いた角とソファの端0.6mまで OK L字席(flip=True・mirror=False)の止まってよい辺は、開いた角とソファの端0.6mまで OK L字席(flip=True・mirror=True)の止まってよい辺は、開いた角とソファの端0.6mまで OK ⓪T02 の止まる位置は、開いた角か、そこからソファの端に沿って0.6m以内 OK ⓪の待機場所は、1台ずつ受け渡し口の前まで出られる OK 2人席(ベンチがbottom)は、ベンチの側とベンチの横を止まる辺にしない OK 2人席(ベンチがtop)は、ベンチの側とベンチの横を止まる辺にしない OK 2人席(ベンチがleft)は、ベンチの側とベンチの横を止まる辺にしない OK 2人席(ベンチがright)は、ベンチの側とベンチの横を止まる辺にしない OK 直す前の⓪の待機場所(2.2×0.7mに3台)を見つける OK 待機場所の台数 100 を見つける OK 待機場所の台数 0 を見つける OK 待機場所の台数 -1 を見つける OK 待機場所の台数 '3' を見つける OK 待機場所の台数 2.5 を見つける OK 待機場所の台数 True を見つける OK 待機場所の前をふさぐと、真ん中の台だけ「出られない」を見つける OK 待機場所の前と両横をふさぐと、3台とも「出られない」を見つける OK 反例1:レジとレジ内を消すと見つける OK 反例2:トイレの壁をほぼ全部外すと「切れ目」を見つける OK 反例3:トイレの入口の前を「トイレの壁」という名前の壁でふさいでも見つける OK 反例4:家具の真ん中に置いた接合扱いの仕切りを見つける OK 反例5:待機場所100台を見つける OK 反例6:⓪の建物の外を消すと、輪郭と合わないのを見つける OK 反例7:輪郭を2m四方にすると見つける OK ⓪の輪郭から欠けを消すと、建物の外と合わないのを見つける OK 今の店 p0_memory は決まりを守っている OK 今の店 p1_efficient_corner は決まりを守っている OK 今の店 p2_efficient_narrow は決まりを守っている OK 今の店 p3_relaxed_center は決まりを守っている OK 今の店 p4_relaxed_side は決まりを守っている OK 今の店 p5_crammed は決まりを守っている OK ベンチの背に立つ仕切りは認める OK ベンチの背でも0.08mより深い食い込みは認めない OK トイレの目隠し:中心の線だけ当たる短い壁では違反にする(4本の線) OK トイレの目隠し:4本とも当たる壁なら違反にしない OK 線分が厚さ2mmの壁を横切るのを見つける OK 線分の端が壁に触れるだけなら、通ったとみなさない OK 線分が壁から離れていれば、通ったとみなさない OK 201番目だけ見通せる止まる位置も見つける [OK] p2_efficient_narrow: {'name': '④ 効率重視型・狭い店・入口が右の壁', 'seats': 88, 'tables': 28, 'model': 'BellaBot', 'pass_width': 0.8, 'normal_width': 1.0, 'robot_tables': 28, 'robot_seats': 88, 'narrow_tables': 0, 'narrow_seats': 0, 'human_tables': 0, 'human_seats': 0, 'robot_dist_mean': 8.4, 'robot_dist_max': 14.02, 'human_walk_total': 0.0, 'human_walk_max': None} マス目の差: [] OK 成功したときは、layout・analysis・summary に同じ版の番号が入る [NG] p2_efficient_narrow: ④ 効率重視型・狭い店・入口が右の壁 - 入口まわり: レジがない 違反があるので、/tmp/tmpgjtort40 には何も書いていない(前の版のまま) OK 違反があると止まり、出力先のファイルは前の版のまま(作業用のフォルダも残らない) [OK] p2_efficient_narrow: {'name': '④ 効率重視型・狭い店・入口が右の壁', 'seats': 88, 'tables': 28, 'model': 'BellaBot', 'pass_width': 0.8, 'normal_width': 1.0, 'robot_tables': 28, 'robot_seats': 88, 'narrow_tables': 0, 'narrow_seats': 0, 'human_tables': 0, 'human_seats': 0, 'robot_dist_mean': 8.4, 'robot_dist_max': 14.02, 'human_walk_total': 0.0, 'human_walk_max': None} マス目の差: [] 出力先へ入れ替える途中で失敗したので、/tmp/tmpgjtort40 を前の版に戻した OK 入れ替えの途中で失敗すると、出力先は前の版に戻る(作業用のフォルダも残らない) OK 反例A:トイレの壁の1cmの切れ目を見つける OK 反例B:トイレの入口の内側の1cmのふさぎを見つける OK 反例C:トイレの入口の前の奥行き0.1mを見つける OK 反例D:輪郭の幅1cmの切れ込み(建物の外なし)を見つける OK 輪郭に斜めの辺があれば止める OK 出入り口Aを壁でふさぐと見つける OK p1:細い通路は3本で、幅はどれも1.2m OK p1:卓の数・止まる位置・距離が analysis と同じ OK p1:細い通路を通る卓は、止まる位置がその通路の区画の中 OK p1:細い通路の入口は、受け渡し口の前から行ける端 OK p1:全部の卓に部品(天板・座る位置)があり、座る位置の数が席数と同じ OK p1:場所の点がそろっている OK p1:スタッフが待つ点・並ぶ点・立つ点は、障害物から0.2m以上離れ、細い通路に入らない OK p1:席に着く点は障害物から0.2m以上離れ、どの卓にも1つ以上ある OK p1:レジ内は通れる部屋(スタッフだけ)、ほかの部屋は通れない箱 OK p1:受け渡し口から全卓・卓から卓の全組に道順がある OK p1:ふだんの道か狭い道かは、試算の卓の分け方と同じ(robot→normal、narrow→narrow) OK p1:道順は受け渡し口の前から始まり、止まる位置で終わる OK p1:道順のどの区間も、その幅で通れるマス目だけを通る OK p5:細い通路は3本で、幅はどれも0.8m OK p5:卓の数・止まる位置・距離が analysis と同じ OK p5:細い通路を通る卓は、止まる位置がその通路の区画の中 OK p5:細い通路の入口は、受け渡し口の前から行ける端 OK p5:全部の卓に部品(天板・座る位置)があり、座る位置の数が席数と同じ OK p5:場所の点がそろっている OK p5:スタッフが待つ点・並ぶ点・立つ点は、障害物から0.2m以上離れ、細い通路に入らない OK p5:席に着く点は障害物から0.2m以上離れ、どの卓にも1つ以上ある OK p5:レジ内は通れる部屋(スタッフだけ)、ほかの部屋は通れない箱 OK p5:受け渡し口から全卓・卓から卓の全組に道順がある OK p5:ふだんの道か狭い道かは、試算の卓の分け方と同じ(robot→normal、narrow→narrow) OK p5:道順は受け渡し口の前から始まり、止まる位置で終わる OK p5:道順のどの区間も、その幅で通れるマス目だけを通る OK ボックス席の列は、すき間なく並んだものだけをまとめる すべて OK real 1m1.048s user 0m58.514s sys 0m1.553s