镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

fix: compare the first lexicographic result with the incumbent in FLOW2 - #1669

Open
Anish Mehta (anishmehta24) wants to merge 1 commit into
microsoft:mainfrom
anishmehta24:fix/lexico-compare-incumbent
Open

Anish Mehta (anishmehta24) wants to merge 1 commit into
microsoft:mainfrom
anishmehta24:fix/lexico-compare-incumbent

Conversation

@anishmehta24

Copy link
Copy Markdown
Contributor

Why are these changes needed?

With lexico_objectives, FLOW2.lexico_compare built its history from the first result it got and returned True without comparing it. It is only called once there is an incumbent (and create() starts every local search thread with one), so the incumbent's own result never entered the history and the next result always replaced it, even when it was worse. With one objective and losses 1.0, 5.0, 3.0, 0.5, 2.0, plain FLOW2 keeps the 1.0 incumbent until 0.5 comes in, while lexicographic FLOW2 moves to 5.0 and then 3.0.

The history now starts with the incumbent, and the first result goes through the same comparison as later ones.

Related issue number

None found.

Checks

test/tune/test_lexico_flow2.py (min and max mode) fails on main and passes with the change, and pytest test/tune passes. On the Branin-Currin setup from test_lexiflow_performance, the best currin is 2.05 (2.18 on main), still within the test's 2.2 check. Most of the diff in flow2.py is re-indentation from removing the else; git diff -w shows the actual change.

With lexico_objectives, FLOW2.lexico_compare started its history from
the first result it was given and returned True without comparing it.
on_trial_complete only calls it once there is an incumbent, so the
incumbent's own result never entered the history and the next result
always replaced it, even when it was worse. With a single objective,
losses 1.0 then 5.0 left 5.0 as the incumbent.

The history now starts with the incumbent, and the first result goes
through the same comparison as every later one.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant