==================================================================== ④の一方通行(案A)・1本道は1台ずつ(案B)・T26 を外した店(案B')を切り替えで入れ、4回で確かめた 依頼:20261101_59_店4の一方通行と1本道は1台ずつを切り替えで入れる.md(依頼57) 2026-11-01 21:38 〜 22:45 check-in:cs:54・cs:55 build_id cs55_20261101_2224(保留 0) ==================================================================== 結論 ・始める前の確かめ3つは、すべて合格だった。 ・3つの切り替えを入れた(どれも既定は params の切)。-ssOneWay on/-ssSingleLane on/-ssStoreVariant noT26。 ・確かめの4回(④・スタッフ2・ロボット2・36組/時・種0)は、4回とも completed・全員が帰った・行けない卓 0。 ・案A は 28 卓すべてに道が引けた(受け渡し口→卓・卓→受け渡し口・卓→待機場所2つ)。 ・案B・案B' では「待ったまま往復が打ち切られた(600 秒)」が残った(案B 2回・案B' 1回)。 待っている側は決まりどおり待っており、相手の台が1本道の中でスタッフに4〜5分ふさがれて 「動けなくなった」をくり返していたため。待ち同士でかみ合ったのではない(下の 5)。 ・決まりの文に書かれていない所が1つあり、仮の作りで入れた(1本道に横から入るとき。下の「決めてほしいこと」1)。 この仮の作りを決めてもらうまで、依頼58 はそのまま進めない方がよい。 ・試しの回(smoke)のうち1回が最後まで回り、台帳に1行(1535行目)書いてしまった。消していない。 ==================================================================== 1. 始める前の確かめ(3つとも合格。21:38 ごろ) ==================================================================== 1. Unity エディタ:起動していない(Unity Hub だけ)。night_runner・rec_runner:動いていない。 /Volumes/KIOXIA:マウントされている。unity_ledger_v1.lock:なし 2. ServiceSim の保留:0(cs:53 head) 3. サイトの params(p2m-site main 3c292e9=f3a3888 の次。公開サイトとも md5 同じ)に unity_rules.traffic_one_way・traffic_single_lane があり、どちらも value false ④の公開の店の形(p2_efficient_narrow.json・_map.json)は今の写しと md5 同じ(変わっていない) 台帳:始めたとき 1534 行・md5 ea67552d80fab29465b4e17b92ade111 控え:archive/unity_ledger_v1_pre_traffic_20261101/unity_ledger_v1.csv(md5 同じ) ==================================================================== 2. 取り込み ==================================================================== 写し元:https://pixelstomotors.com/sim/(21:40 に curl。GitHub main の同じファイルと md5 がすべて同じ) 控え:unity/site_copy_9b8dae7ebf8c_f3a3888/(README.txt つき) serving-robot-params.json … 前の写しとの違いは unity_rules.traffic_one_way・traffic_single_lane が 足されただけ(項目ごとに比べた。ほかの違い 0) 案B' の店 … Assets/ServiceSim/Store/Layouts/trials/p2_efficient_narrow_noT26.json・_map.json (版 trial-p2-noT26-e578507fff7d。27卓。④との違いは T26 が無いことと routes・地図だけ。 places は④と同じ) 案B' の店は別の店として StoreLayout_p2_efficient_narrow_noT26.asset を作り、シーンの HeadlessRun の店の一覧 (7つめ)と ServiceSim/Setup に足した。条件の値は fam_p2 のまま(来客のペースも④のまま)。 試しの店は summary.json に載らず、版も trial- で始まるので、版の突き合わせは 「版が trial- で始まり地図の版と同じ/params とは、もとの④(summary.json の版 9b8dae7ebf8c)で突き合わせる」にした。 卓の数(試算 28・建てた店 27)は、試しの店のときだけ「外した卓のぶん少ない」として回す(ログに1行出す)。 ==================================================================== 3. 足した切り替えと使い方 ==================================================================== 画面なしの実行ファイルの引数(どれも付けなければ params の既定=切。公開の店) -ssOneWay on|off 案A 一方通行。出力フォルダ名の末尾に _oneway -ssSingleLane on|off 案B 1本道は1台ずつ。_lane -ssStoreVariant noT26 案B' の店(fam_p2 の条件を p2_efficient_narrow_noT26 で回す)。_noT26 -ssSingleLane on と一緒に使うと、その店の lanes(4本)を使う 名前の形:{夜}_{名札}_cs{N}_{店}_r{台数}_s{種}[_passon][_ruleb][_sbret][_ek][_post][_oneway][_lane][_noT26][_try{n}] 夜の道具 make_queue.py --one-way on|off・--single-lane on|off・--store-variant noT26 night_runner.py queue の one_way・single_lane・store_variant を渡す。--one-way・--single-lane で突き合わせ judge_night.py 一方通行・1本道・店の指定を条件の鍵に足した(入の回は今の基準データに無いので「基準なし」) 記録 run_info.json の traffic(入切・区画/1本道の数・行けない卓・店の指定) summary.json の traffic(入の回だけ。待った秒数の合計・1本道ごと・待つと決めた回数・横から入る所でその場で待った回数・ よけて道を空けた回数・待ったまま往復が終わった回数・行けない卓) 案A の作り:地図で道を引くとき、区画の中のマス(マスの真ん中が矩形の中)では、dir と逆向きに進む1歩 (dir との内積が負。斜めも同じ)を通れない扱いにした。直角はよい。近道(曲がり角だけにする所)も同じ。 回り込み・よけの道も同じ道探しを通るので同じ扱い。回の始めに全卓へ道を引いて、行けない卓を記録に残す。 案B の作り(「やり方は任せる」とされた所を含む) ・向き:1本道の長い辺の軸の上で、その1本道の中を進む向き。軸の向きに 0.2 m 未満しか進まないなら向きなし ・入ろうとしている:先の道の上で、1本道に入るまでが 2.0 m 以下になったら「入る」か「待つ」かを決める。 入ると決めた台は、入って出るまで「入ろうとしている」として持つ(あとから来た台は料理を載せていても待つ)。 入る前に 1本道から 3.0 m(2.0+1.0)より離れたら手放す ・同時:料理を載せている方(今のよけ方の順番 YieldRank)→ 先に待つ点に着いた方 → 号機の小さい方 ・待つ点:入る点にいちばん近い待つ点。一度着いたら 0.5 m までは着いたままとみる ・卓で止まっている台の向き:卓のあとに向かう先までの道(地図で引く)で見る ・待つ点が、向かいの台のこれから進む道の上にあるときは、今のよけ方(よける場所へ動く)で道を空け、 よけ終わったら待つ点へ戻る(cs:55 で足した。下の 5) ・【仮】横から入るとき(入る点が端から通路の幅より離れている)は、待つ点へ行かず、その場で止まって待つ 案B の待った時間の数え方 stops.csv に、原因「1本道の順番待ち」・終わり方「1本道の待つ点で待った」の行として残す(ほかの止まりと分けて数えられる)。 summary.json の traffic.lane_wait_total_s にも合計を出す。止まった回数・動けなくなった(60 秒)には数えない (細い通路の順番待ちと同じ扱い)。 注意:待っている台が押されて 0.5 秒ごとに少し動くことがあり、行が細切れになる(案B cs:55 で 229 行のうち 214 行が 1 秒以下)。 秒数の合計は正しいが、行の数は「待った回数」に使えない。回数は traffic.lane_holds(待つと決めた回数)を使う。 細切れになる原因は特定しきれていない。 ==================================================================== 4. 変えたファイル・cs・build_id ==================================================================== cs:54(23 ファイル) 新しく Robot/TrafficRules.cs(.meta)・Store/StoreLayout_p2_efficient_narrow_noT26.asset(.meta)・ Store/Layouts/trials/(.meta)と p2_efficient_narrow_noT26.json・_map.json(.meta) 変えた Robot/GridPlanner.cs(一方通行)・Robot/ServingRobotController.cs(1本道)・ Experiment/ExperimentRunner.cs・HeadlessRun.cs・SimParams.cs・TripLogger.cs・serving-robot-params.json・ Store/JsonStoreLayout.cs(試しの店)・Editor/ServiceSimSetup.cs・Scenes/ServiceSim_Family.unity(店の一覧に1つ)・ tools/make_queue.py・night_runner.py・judge_night.py cs:55(2 ファイル)Robot/ServingRobotController.cs・Robot/TrafficRules.cs(1本道の直し2つ。下の 5) 画面なしの実行ファイル:Builds/headless build_id cs55_20261101_2224・unity_cs ServiceSim/cs:55・pending_changes 空 保留:cs:55 のあと 0 ArticulationBody・ロボットの速さ・よけ方の決まり・試算の数字・公開の6店の形・ほかの切り替えの既定は変えていない。 3つとも切のとき:新しく足した所はどれも入切を見てから働くので、切の回は今までのコードの道を通る (道探しは一方通行の印が無いときの分かれ道を今までどおり通る。1本道の判断は最初の行で抜ける)。 run_info.json に traffic の項目が1つ増えるだけ。数字の一致では確かめていない (同じ種・同じ実行ファイルでも、くり返すと数字が揺れる作りのため。unity_variance_check_20261101)。 ==================================================================== 5. 確かめの4回(画面なし・1本ずつ) ==================================================================== ④ fam_p2_s2_r2_a36・種0・すれ違い入・待機場所へ戻る入・入口番入・持ち場入・案B(回し方の決まり)切 記録:night/20261101_traffic_check/(runner_log.txt・runs.csv・queue.json・queue_lane55.json・logs/・judge.*) | 回 | cs | 入店待ち(分) | 料理の待ち(分) | 動けなくなった(回) | 30秒以上の止まり(うち1本道の待ちを除く) | 1本道の待った時間の合計(秒) | 全員が帰った | 行けない卓 | |---|---|---|---|---|---|---|---|---| | 今のまま | 54 | 26.76 | 3.03 | 56 | 73(73) | − | はい | − | | 案A 一方通行 | 54 | 26.30 | 3.48 | 57 | 82(82) | − | はい | 0 | | 案B 1本道は1台ずつ | 55 | 24.90 | 3.03 | 50 | 69(63) | 1183.4 | はい | 0 | | 案B' T26 を外した店 | 55 | 19.90 | 2.23 | 30 | 58(53) | 869.8 | はい | 0 | そのほか(今のまま/案A/案B/案B') 往復 100/100/94/105 打ち切り(600 秒)10/11/11/6 入れた組 57/57/57/57 店の時間(分)232.8/264.4/237.1/220.6 案B:待つと決めた 18 回(横から入る所でその場 2)・いちばん長い待ち 287.3 秒・よけて道を空けた 0・待ったまま往復が終わった 2 1本道ごと 下の通路 396.7 秒/左の通路 438.7 秒/パントリー横 348.0 秒 案B':待つと決めた 33 回(横 3)・いちばん長い待ち 287.3 秒・よけて道を空けた 2・待ったまま往復が終わった 1 1本道ごと 下の左半分 0/下の右半分 12.2/左の通路 402.2/パントリー横 455.5 秒 種1つずつなので、差がどこから来たかは言えない。 最初の cs:54 で回した案B・案B'(台帳に残っている。直す前) 案B 入店待ち 24.65・料理 3.54・動けなくなった 50・30秒以上 70(61)・待った合計 3113.1 秒・いちばん長い待ち 571.1 秒 案B' 入店待ち 23.10・料理 2.07・動けなくなった 46・30秒以上 65(60)・待った合計 834.3 秒・いちばん長い待ち 287.3 秒 見つけたことと直したこと(cs:55) ・相手の台が「入ってよい」を持ったまま、1本道から 6 m 以上離れて(入口の近く)立ち往生し、 こちらが 520 秒待った → 入る前に離れたら手放すようにした(コードの誤り) ・待つ点が1本道の出口の道の上にあり、出てくる台が出られずに止まった → 待っている台が相手の進む道の上にいるときだけ、今のよけ方で道を空けるようにした 直したあとも残った長い待ち(200 秒以上):案B 4回・案B' 2回。中身を見た2回(店の時刻 1447 秒・2203 秒)は、 相手の台が1本道の中(左の通路 (1.98, 4.04)・パントリー横 (9.41, 7.88))でスタッフ Staff02 に4〜5分ふさがれ、 「動けなくなった」をくり返していた。待っている側は決まりどおり待っていた。 待ったまま往復が終わった(案B 2・案B' 1)は、この待ちのあいだに自分の往復が 600 秒で打ち切られたもの。 png(900〜1200 秒の1コマ。確かめの回の robot_track.csv・stops.csv から真上を描いた。動画のコマではない) night/20261101_traffic_check/oneway_t1080_records.png 案A・店の時刻 1080 秒 赤い枠と矢印が一方通行の区画と向き。2号機は下の通路を左へ、1号機は下の通路を左へ進んでから左の通路を上がって T02 に着いた night/20261101_traffic_check/laneNoT26_t1100_records.png 案B'・店の時刻 1100 秒 緑の枠が1本道、緑の丸が待つ点。2号機が左下の待つ点 (0.80, 1.69) で、左の通路の中の T13 に止まっている1号機が出るのを待っている ==================================================================== 6. 依頼58(夜の80回)にそのまま進めてよいか ==================================================================== そのままは進めない方がよい。足りないもの: 1. 1本道に横から入るときの待ち方を決めてもらうこと(今は仮で「その場で待つ」)。 受け渡し口から出るどの往復も、パントリー横の1本道に横から入るので、案B・B' の数字に効く 2. 待った回数の数え方(行が細切れになる。回数は lane_holds を使うか) 道具としては回せる状態:make_queue.py を4回(今のまま・--one-way on・--single-lane on・--single-lane on --store-variant noT26) 呼んで queue をまとめれば、night_runner.py でそのまま回る(今回の確かめもこの形で回した)。 judge_night.py の「30秒以上の止まり」は、1本道の順番待ちの行も数える(今の決まりのまま。変えていない)。 ==================================================================== 7. 残したもの・触ったもの ==================================================================== KIOXIA:台帳 1534 → 1541 行(追記だけ。先頭 1534 行の md5 は控えと同じ) 1535 行め 20261101_smoke59b_cs53_fam_p2_r2_s0_passon_sbret_ek_post_oneway(試しの回。3分で止めるつもりが、216 秒で最後まで回った) 1536〜1539 行め 確かめの4回(cs:54)、1540〜1541 行め 案B・案B' の回し直し(cs:55) 出力フォルダ:上の7回ぶん+途中で止めた試しの回 2 つ 20261101_smoke59_cs53_fam_p2_r2_s0_passon_sbret_ek_post_stopped(引数の渡し方を誤り、切り替えが効いていなかった回) 20261101_smoke59b_cs53_fam_p2_r2_s0_passon_sbret_ek_post_lane_noT26_stopped プロジェクト(VCS の外):Builds/traffic_pre・Builds/traffic_pre2(コンパイルの確かめ)・Builds/headless(cs:55 に作り直した) iCloud:unity/site_copy_9b8dae7ebf8c_f3a3888/・この報告 png の動画のコマ版(録画用の実行ファイルで撮る)は作っていない。 ==================================================================== 8. 決めてほしいこと ==================================================================== 1. 1本道に横から入るときの待ち方。決まりは「近い方の待つ点で待つ」だが、受け渡し口の前からパントリー横の通路へ入るとき (入る点が y 4.0〜4.4 あたり)は近い方の待つ点 (9.4, 1.1) が1本道の向こう側になり、待つ点へ行くには1本道に入る必要がある。 案B では真ん中の細い通路から下の通路へ入るときも同じ。今は仮で「入る手前のその場で止まって待つ」にした。 このままでよいか、別の待ち方(待機場所で待つ・横から入る所用の待つ点をサイトで足す など)にするか。 2. 待つ点 (9.4, 9.3)・(2.0, 9.3)・(9.4, 1.1) が、1本道から出てくる台の道の上にある。 そのとき待っている台を今のよけ方で動かす作りを足した(cs:55)。この足し方でよいか、待つ点の場所をサイトで見直すか。 3. 試しの回が台帳に書いた1行(1535 行め・20261101_smoke59b_…_oneway)を残すか消すか。 4. 待った回数は、行の数ではなく lane_holds(待つと決めた回数)で数えてよいか。 5. 残ったもの(Builds/traffic_pre・traffic_pre2・途中で止めた試しの回のフォルダ2つ)を消すか残すか。