新しい固定版は cs:137 です。(1件も保留なし。Mat_MonitorBoard は Private のまま) 1. 条件のファイル Assets/ServiceSim/Experiment/serving-robot-params.json v2.4 → v2.7 meta.layout_generation 82023936eb99 ← 店の形の JSON と一致(写し直していません) robot_first_wait_s は SiteValues が JSON から読みます(value: 120 / role: site_rule)。.asset に手で写していません。読めない・role が違う場合は Problems に残って回りません(Rule() → Apply() が false → 走らない)。実際に使った値は summary.json の robot_first_wait_s に出ます。 2. 割り当ての決まり(ServiceOps) ┌──────────────────────────────┬───────────────────────────────────────────┐ │ 決まり │ 実装 │ ├──────────────────────────────┼───────────────────────────────────────────┤ │ │ PutDish がスタッフの仕事板に配膳を出さな │ │ できたらまずロボットを待つ。 │ い(ロボットは受け渡し口の列 _pass │ │ スタッフは料理を持たない │ を直に見るので受け持てる)。スタッフは案 │ │ │ 内・片付け・会計を続けます │ ├──────────────────────────────┼───────────────────────────────────────────┤ │ 120 秒を過ぎたら先に空いた方 │ ReleaseDishesToStaff(毎コマ・AssignRobot │ │ │ s の後)が板にも出す │ ├──────────────────────────────┼───────────────────────────────────────────┤ │ fragile_by=staff │ StaffCarriesFromStart で、はじめから板に │ │ の倒れやすい料理 │ 出す(倒れやすい皿だけ。ほかは待ちます) │ ├──────────────────────────────┼───────────────────────────────────────────┤ │ ロボット0台 │ 同じく、はじめから板に出す = cs:136 │ │ │ と同じ回し方 │ ├──────────────────────────────┼───────────────────────────────────────────┤ │ 後に回した皿も、料理ができた │ 判定は NowS - │ │ 時から数える │ d.readyS。通路の決まりで後に回しても、受 │ │ │ け渡し口に戻されても数え直しません │ └──────────────────────────────┴───────────────────────────────────────────┘ robotFirstWaitSec を 0 にすると v2.7 より前の回し方に戻せます(前後を比べる用)。 3. 記録 dishes.csv を皿ごとの記録に変えました。 列は condition_id,seed,dish_id,table_id,group_id,fragile, ready_s,first_taken_s,arrived_s,carried_by,pass_wait_s,carry_s,requeue_lost_s, requeued,staff_from_start,robot_wait_expired,late_staff_pickup,deferred_for_ais le - carried_by … ロボット/スタッフ - pass_wait_s … 受け渡し口で待った秒数 - late_staff_pickup … 2分を過ぎて人が拾った皿(1 なら該当) ⚠ これまでの dishes.csv(戻した1回ずつ)は requeues.csv に移しました。 中身と列名は同じです。読み手を探したところ Unity の中だけだったので、外の集計は壊れません。 summary.json の sim_like に3つ足しました: "late_staff_dishes" 2分を過ぎて人が拾った皿の数 "late_staff_share" 届いた皿に対する割合 "robot_first_wait_s" その回に使った値(120) 4. キッチンのモニター 受け渡し口でロボットを待っている皿 N dishes.csv の late_staff_pickup と同じ皿を数えています(120 秒の中にいて、まだ 誰も持っていない皿)。はじめからスタッフが運ぶ皿は数えません。 LABEL_RULES.md を先に直してから作りました(「新しい表示を足すときは先にこのファ イルを直す」の決まりどおり)。 5. ほかの動きは変えていません よけ方・通路・立ち往生の助け方・NavMesh・前のセンサー・PickBatch の通路の決まり — いずれも触っていません。 コンパイルの確認 Unity 同梱の Roslyn(DotNetSdkRoslyn/csc.dll)+ Unity の参照アセンブリで2つに分けて通しました。エラー・警告ゼロです。 ServiceSim ランタイム 35 ファイル → OK ServiceSim/Editor → OK ただし Unity 本体はまだ再コンパイルしていません(Editor にフォーカスが当たっていないため、ログは 21:40 止まり)。一度 Unity に切り替えてコンパイルを通してから回してください。 回すときの注意 ServiceOps に欄を1つ足した(_dishesWaitingForRobot)ので、シーンを次に保存する と1行だけ増えます(_dishesWaitingForRobot: 0)。読むだけの表示欄で動きには効きません。 ③ を回したあと、前の回(1311)と比べる所は summary.json の robot_share / dish_wait_mean / entry_wait_mean、それに新しい late_staff_dishes です。ロボット0台の条件は回し方が cs:136 と同じなので、そこが揃っていれば比較の土台が確かめられます。