Skip to content

Commit

Permalink
(Everest) Use one experiment per optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
Yngve S. Kristiansen committed Sep 10, 2024
1 parent 89a114c commit d7e0fff
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 15 deletions.
12 changes: 3 additions & 9 deletions src/ert/simulator/batch_simulator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from .batch_simulator_context import BatchContext

if TYPE_CHECKING:
from ert.storage import Ensemble, Storage
from ert.storage import Ensemble, Experiment


class BatchSimulator:
Expand Down Expand Up @@ -165,7 +165,7 @@ def start(
self,
case_name: str,
case_data: List[Tuple[int, Dict[str, Dict[str, Any]]]],
storage: Storage,
experiment: Experiment,
) -> BatchContext:
"""Start batch simulation, return a simulation context
Expand Down Expand Up @@ -224,13 +224,7 @@ def start(
time, so when you have called the 'start' method you need to let that
batch complete before you start a new batch.
"""
experiment = storage.create_experiment(
parameters=self.ert_config.ensemble_config.parameter_configuration,
responses=self.ert_config.ensemble_config.response_configuration,
name=f"experiment_{case_name}",
)
ensemble = storage.create_ensemble(
experiment.id,
ensemble = experiment.create_ensemble(
name=case_name,
ensemble_size=self.ert_config.model_config.num_realizations,
)
Expand Down
49 changes: 43 additions & 6 deletions tests/unit_tests/simulator/test_batch_sim.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,14 @@ def batch_simulator(batch_sim_example):
def test_that_starting_with_invalid_key_raises_key_error(
batch_simulator, _input, match, storage
):
experiment = storage.create_experiment(
name="EnOptCase",
parameters=batch_simulator.ert_config.ensemble_config.parameter_configuration,
responses=batch_simulator.ert_config.ensemble_config.response_configuration,
)

with pytest.raises(KeyError, match=match):
batch_simulator.start("case", _input, storage)
batch_simulator.start("case", _input, experiment)


def test_batch_simulation(batch_simulator, storage):
Expand All @@ -165,7 +171,13 @@ def test_batch_simulation(batch_simulator, storage):
),
]

ctx = batch_simulator.start("case", case_data, storage=storage)
experiment = storage.create_experiment(
name="EnOptCase",
parameters=batch_simulator.ert_config.ensemble_config.parameter_configuration,
responses=batch_simulator.ert_config.ensemble_config.response_configuration,
)

ctx = batch_simulator.start("case", case_data, experiment)
assert len(case_data) == len(ctx.mask)

# Asking for results before it is complete.
Expand Down Expand Up @@ -279,8 +291,15 @@ def test_that_batch_simulator_handles_invalid_suffixes_at_start(
},
["ORDER"],
)

experiment = storage.create_experiment(
name="EnOptCase",
parameters=batch_sim_example.ensemble_config.parameter_configuration,
responses=batch_sim_example.ensemble_config.response_configuration,
)

with pytest.raises(KeyError, match=match):
rsim.start("case", inp, storage)
rsim.start("case", inp, experiment)


@pytest.mark.usefixtures("use_tmpdir")
Expand Down Expand Up @@ -326,7 +345,13 @@ def test_batch_simulation_suffixes(batch_sim_example, storage):
),
]

ctx = rsim.start("case", case_data, storage=storage)
experiment = storage.create_experiment(
name="EnOptCase",
parameters=ert_config.ensemble_config.parameter_configuration,
responses=ert_config.ensemble_config.response_configuration,
)

ctx = rsim.start("case", case_data, experiment)
assert len(case_data) == len(ctx)
_wait_for_completion(ctx)

Expand Down Expand Up @@ -389,8 +414,14 @@ def test_stop_sim(copy_case, storage):
),
]

experiment = storage.create_experiment(
name="EnOptCase",
parameters=ert_config.ensemble_config.parameter_configuration,
responses=ert_config.ensemble_config.response_configuration,
)

# Starting a simulation which should actually run through.
ctx = rsim.start(case_name, case_data, storage=storage)
ctx = rsim.start(case_name, case_data, experiment)

ctx.stop()
status = ctx.status
Expand Down Expand Up @@ -452,7 +483,13 @@ def test_batch_ctx_status_failing_jobs(setup_case, storage):
for idx in range(10)
]

batch_ctx = rsim.start("case_name", ensembles, storage=storage)
experiment = storage.create_experiment(
name="EnOptCase",
parameters=ert_config.ensemble_config.parameter_configuration,
responses=ert_config.ensemble_config.response_configuration,
)

batch_ctx = rsim.start("case_name", ensembles, experiment)
while batch_ctx.running():
assertContextStatusOddFailures(batch_ctx)
time.sleep(1)
Expand Down

0 comments on commit d7e0fff

Please sign in to comment.