File size: 1,785 Bytes
cb922bf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env python
"""Test the specific failing case."""

import numpy as np
from env.environment import CloudResourceEnv
from env.config import EnvConfig

# Exact failing case from Hypothesis
action = 0  # DECREASE
initial_resources = 2
base_request_rate = 30
seed1 = 2
seed2 = 50

config = EnvConfig(
    initial_resources=initial_resources,
    base_request_rate=base_request_rate,
    request_rate_std=10.0
)

# First execution with seed1
env1 = CloudResourceEnv(config=config)
env1.rng.seed(seed1)
env1.reset()
print(f"Env1 after reset (seed={seed1}):")
print(f"  State: {env1._get_observation()}")
print(f"  Request rate: {env1.request_rate}")
print(f"  Allocated resources: {env1.allocated_resources}")

obs1, reward1, done1, info1 = env1.step(action)
print(f"Env1 after step (action={action}):")
print(f"  State: {obs1}")
print(f"  Request rate: {info1['request_rate']}")
print(f"  Allocated resources: {info1['allocated_resources']}")

print()

# Second execution with seed2
env2 = CloudResourceEnv(config=config)
env2.rng.seed(seed2)
env2.reset()
print(f"Env2 after reset (seed={seed2}):")
print(f"  State: {env2._get_observation()}")
print(f"  Request rate: {env2.request_rate}")
print(f"  Allocated resources: {env2.allocated_resources}")

obs2, reward2, done2, info2 = env2.step(action)
print(f"Env2 after step (action={action}):")
print(f"  State: {obs2}")
print(f"  Request rate: {info2['request_rate']}")
print(f"  Allocated resources: {info2['allocated_resources']}")

print()
print(f"States equal: {np.allclose(obs1, obs2, rtol=1e-5)}")
print(f"Request rates equal: {info1['request_rate'] == info2['request_rate']}")
print(f"States differ: {not np.allclose(obs1, obs2, rtol=1e-5)}")
print(f"Request rates differ: {info1['request_rate'] != info2['request_rate']}")