v8b を v8 に足し終えました。Check-in はまだです(指示書どおり、確かめのあと v8 と一緒に1回で入れます)。 記録で原因を裏付けました 止まった回(..._0859_stopped)を読みました。指示書のとおりです。 ┌────────┬─────────────────────────────────────────────────┐ │ │ │ ├────────┼─────────────────────────────────────────────────┤ │ 止まり │ 434 回中 394 回が (15.3, 6.0) = 受け渡し口の点 │ ├────────┼─────────────────────────────────────────────────┤ │ 原因 │ 「もう1台のロボット」401 回 │ ├────────┼─────────────────────────────────────────────────┤ │ 往復 │ 68 回中 timeout 54・stuck 54 │ └────────┴─────────────────────────────────────────────────┘ A. 打ち切りで戻すとき、ほかの台と重ねない ServingRobotController.cs: - 打ち切り(TotalS > maxTripSec)の置き直しを PlaceAt(_passPoint, …) から PickResetPoint() に変更 - 選ぶ順: 受け渡し口の点 → 待機場所(RobotStandbyPoints)を順に。ほかの台が 直径 0.5 m + 余裕 0.3 m = 0.8 m 以内にいる点は飛ばします - どこも空いていなければ、ほかの台からいちばん遠い待機場所へ - 置き直した先を ResetTo(pass / standby1 / standby2 …)に残し、StartRun で往復ごとに空へ戻します TripLogger.cs / ExperimentRunner.cs: trips.csv の後ろに reset_to 列を追加(打ち切りでない往復は空)。 打ち切りそのもの(600秒)と timeout の1行は変えていません。行き止まりで2台が向 かい合うこと自体も、指示書どおり今回は触っていません。 B. 来る客を、版や動きのずれに関係なくそろえる GroupManager.cs の乱数を3つに分けました。 ┌────────┬─────────────┬──────────────────────────────────────────────────┐ │ 乱数 │ 種 │ 引くもの │ ├────────┼─────────────┼──────────────────────────────────────────────────┤ │ _arriv │ seed * 7919 │ 来客の間隔だけ(2か所の ExponentialSec) │ │ alRng │ + 101 │ │ ├────────┼─────────────┼──────────────────────────────────────────────────┤ │ Group. │ seed │ 人数・最初の2皿の作る時間・食べる時間・割れ物・ │ │ rng │ と組の番号 │ 呼び出し・ドリンクバー・トイレ │ │ │ から作る │ │ ├────────┼─────────────┼──────────────────────────────────────────────────┤ │ │ seed * 7919 │ │ │ _rng │ + 13(その │ 待つ場所を選ぶ(RandomWaitingSpot)だけ │ │ │ まま) │ │ └────────┴─────────────┴──────────────────────────────────────────────────┘ 組ごとの乱数は NewGroupRng(groupId) が種と組の番号だけから作るので、いつ引いて も同じ組なら同じ値です。引く順番も組ごとに決まっています: 人数 → 1皿めの作る時間 → 2皿めの作る時間 → 食べる時間 → 割れ物(数・時刻・作る時間)→ 呼び出し×2 → ドリンクバー → トイレ ScheduleDuringMeal は「食べ始め」の直後にしか呼ばれないこと(呼び出し2か所とも)、PickGroupSize が2か所とも g.rng になったことを確認済みです。慣らしの組(SeedWarmupGroups)も 同じ扱いにしました。 引く数の分布・決まり(ServiceSpec の値)は変えていません。 変わったのは「どの乱数の列から引くか」だけです。.asset は1つも触っていません(保留ファイル一覧に .asset がないことで確認済み)。 ご指摘のとおり、この直しで cs:140 と同じ種でも来る客は変わります(段階Bの18回とは客がそろいません)。 --- お願い:確かめの2回を回してください Unity がプロジェクトを開いているので私からは回せません。一度 Unity に切り替えて(再コンパイルされます)、ServiceSim / Site Run から順に2回: 1. ③ スタッフ4人・ロボット2台 2. ③ スタッフ4人・ロボット0台 どちらも種0(ExperimentPlan.trialSeed)です。終わったら「終わった」と教えてくだ さい。 確かめ用スクリプトは用意済みで、次を機械で見ます: - B1 2回の groups.csv で group_id・arrive_s・size が全部同じ - B2 同じ組の食べる時間(eat_end_s − eat_start_s)が2回で同じ - A1 打ち切りの往復に reset_to が入っている(置き直した先の内訳も出します) - A2 同じ点で「もう1台のロボット」の止まりが 60 秒以上続いていない - v8 の5項目 — b2 は指示どおり、requeues.csv の皿を「2つの往復に出ていない」から除き、代わりに「最初の往復で着いた時刻が -1」を見ます - どちらの回も全員が店を出た(everyone_left かつ stopped_early でない) 比べ先の robot.carry_mean_min = 2.9041 分(段階B ③r2s0)も確認済みです。 なお ServingRobotController に ResetTo を足したので 1回目は打ち切りが0回かもしれません(A が効けば本来そうなるはずです)。その場合 A1 は「打ち切りなし」と出ますが、それは直った証拠なので、A2 と合わせて報告します。