Skip to content

Add a Strategy

Strategies should expose:

strategy.run(problem, model=None, sampler=None, **kwargs)

They should return a DesignResult.

from flowdesign.core import DesignResult

class MyStrategy:
    def run(self, problem, model=None, sampler=None, **kwargs):
        samples = problem.geometry.sample_prior(64)
        outputs = problem.evaluate(samples)
        losses = problem.loss(samples, outputs)
        feasible = problem.is_feasible(samples, outputs)
        return DesignResult(samples, outputs, losses, feasible)

Keep strategies independent from domain details. They should not assume that outputs are aerodynamic unless they explicitly implement an aerodynamic method.