Parameter fixing and tidying#12
Conversation
|
|
||
| effective_compliant = lab.is_compliant or lab.has_permit | ||
| violation_found = auditor.audit_finds_violation(effective_compliant) | ||
| is_actually_compliant = ao.realized_excess <= 0 |
There was a problem hiding this comment.
Nice work making this resolve in one place. I think this makes more sense. I'll add myself a todo to record the channel origin in results
| @@ -1,17 +1,21 @@ | |||
| { | |||
| "name": "Crisis World (Maximum Safety)", | |||
There was a problem hiding this comment.
Running this scenario I noticed some steps went by without formal audit. I think this is because 0.3 * 0.1 -> less than 1 expected audit per turn. Separate note on this
| p_base = self.config.base_prob + signal * (1.0 - self.config.base_prob) | ||
| else: | ||
| p_base = self.config.base_prob | ||
| return min(1.0, p_base * audit_coefficient) |
There was a problem hiding this comment.
This might be a matter of opinion, but should the audit coefficient scale the signal and the base_prob? Currently a very low coefficient / high evasion can decimate formal audit base prob. Alternatively, it could affect just the firm's signal, which would preserve audit base prob.
There was a problem hiding this comment.
This is a good point, and I think your logic makes complete sense. The only trouble is using the audit coefficient without signals activated. I think this is maybe unlikely (since if we are studying realistic auditing we'd have both turned on). I think in the end you're right, but we will need to be clear in the documentation. I will post to the team about this tonight.
|
|
||
| # Combined probability: audit occurs AND catches violation | ||
| p_catch = p_audit * p_catch_if_audited | ||
| def compute_catch_probability(self, p_w: float = 0.0, p_m: float = 0.0) -> float: |
There was a problem hiding this comment.
(minor) some params could be cleaned up
There was a problem hiding this comment.
I'll double check this bit
| p_total = 1 - (1 - p_audit × p_stage2) × (1 - p_whistleblower) × (1 - p_monitoring) | ||
| whistleblower and monitoring are rolled independently of the audit. | ||
|
|
||
| Detection channel labels (used in AgentOutcome.caught_by): |
There was a problem hiding this comment.
Ah yeah I think you're right. I'll double check here too.
|
Overall really great job! Had no idea it would be so much work, but these are solid improvements. I made a few small points, nothing too important. Happy for you to merge when you're ready |
No description provided.