不经过过泡也不经过回缩,在哪行只经过一次trail直接就跳出了?
时间: 2024-11-12 16:39:13 浏览: 2
PPR管适不适合使用在地暖系统中?.docx
根据提供的代码片段,如果程序不经过过泡(over soak)和回缩(shrink),并且只经过一次 `trial` 函数调用后跳出循环,通常是因为以下条件之一满足:
1. **`temp_job_in_time == float('inf')`**:
- 在 `trial` 函数调用后,如果 `temp_job_in_time` 被设置为无穷大 (`float('inf')`),那么会立即跳出循环。
2. **`Constant.WashError` 或其他错误标志**:
- 如果在 `calculate_inner_jobs` 中检测到 `Constant.WashError` 或其他错误标志,并且这些错误导致了 `break` 语句的执行。
具体代码行如下:
```python
last_task_temp, temp_job_in_time, span_time = trial(last_task_temp, job_out_list_temp, temp_job_in_time, new_job.job_in_span)
print("trial后:", temp_job_in_time)
if temp_job_in_time == float('inf'):
break
```
这段代码在 `trial` 函数调用后检查 `temp_job_in_time` 是否为无穷大,如果是,则立即跳出循环。
另外,还有以下部分可能会导致跳出循环:
```python
# 如果出错就结束循环
if Constant.WashError in inner_model.error_list:
self.wash_error(inner_model.wash_error_tank_set.copy())
if (
Constant.ChangeChemical in inner_model.error_list or
Constant.DeadLock in inner_model.error_list or
Constant.WashError in inner_model.error_list or
(temp_job_in_time == float('inf') and new_job.job_id in inner_model.jobs_dict)
):
trial(last_task, job_out_list, -1, -1)
inner_model.error_list.clear()
inner_model.wash_error_tank_set.clear()
calculate_inner_jobs(
env=inner_model,
move_list={},
proc_list={},
job_info=[],
remove_list=[new_job.job_id],
rollback_time=roll_back_time,
ptr_station=self.ptr.last_station,
last_post_move_list={},
safe_time=self.now_safe,
inner_pusher_occupy=inner_model.inner_pusher_occupy,
)
for batch_job in inner_model.batch_jobs:
inner_job = inner_model.jobs_dict[batch_job.job_id]
for _wafer in self.jobs_dict[batch_job.job_id].wafer:
_wafer.step_id_history.merge(inner_job.step_id_history)
_wafer.station_history.merge(inner_job.station_history, _wafer, True)
_wafer.step_transfer_move_list.update(inner_job.outer_step_transfer_move_list)
_wafer.move_list.merge(inner_job.move_list)
assert not inner_model.error_list
if Constant.ChangeChemical in ChangeChemical_flag:
self.change_chemical(inner_model.change_chemical_tank_set.copy())
if Constant.WashError in inner_model.error_list:
print("WashError")
self.wash_error(inner_model.wash_error_tank_set.copy())
break
```
在这段代码中,如果检测到任何错误标志(如 `Constant.WashError`),或者 `temp_job_in_time` 为无穷大,都会执行 `break` 语句,从而跳出循环。
综上所述,关键的跳出点在于 `temp_job_in_time == float('inf')` 和各种错误标志的检测。
阅读全文