4.3. pyopus.optimizer.optfilter
— Filter-based point acceptance
Filter support for constrained optimization (PyOPUS subsystem name: FILT)
- class pyopus.optimizer.optfilter.Filter(hmax=0.0, debug=0)[source]
All points are stored in a dictionary with keys of the form (f,h).
The value stored alongside (f,h) can be anything.
A point (f,h) dominates (f0,h0) if
h<h0 and f<=f0 or
h<=h0 and f<f0
(f,h) is dominated by the filter if h>hmax.
No point in the filter dominates any other point in the filter.
hmax=0 results in extreme barrier behavior.
- accept(f, h, misc)[source]
Checks a point against the filter.
If h>hmax the point does not dominate nor is dominated. Such a point is rejected.
If filter is empty, a point is accepted. Such a point is considered to dominate filter.
If point dominates any filter point it is accepted. Dominated filter points are deleted.
If a point is dominated by any filter point it is rejected. If a point does not dominate nor is dominated it is accepted.
Returns boolean tuple (dominates, dominated, accepted).
- bestFeasible()[source]
Returns (f,h,misc) of the feasible point.
Returns (None, None, None) if no such point exists.
- leastInfeasible()[source]
Returns (f,h,misc) of the infeasible point with lowest h.
Returns (None, None, None) if no such point exists.
- mostInfeasible()[source]
Returns (f,h,misc) of the infeasible point with highest h.
Returns (None, None, None) if no such point exists.
- position(f, h)[source]
Returns the position of h in the ordered list of h values.
0 … feasible point 1 … best infeasible point 2 … second infeasible point …
Returns
None
if the point is not in the filter.