Hmm. I think this is closer to “general optimizer” than to “optimizer”: notice that certain chess-playing algorithms (namely, those that have been “hard-coded” with lots of chess-specific heuristics and maybe an opening manual) wouldn’t meet this definition, since it’s not easy to change them to play e.g. checkers or backgammon or Go. Was this intentional (do you think that this style of chess program doesn’t count as an optimizer)? I think your definition is getting at something interesting, but I think it’s more specific than “optimizer”.
If a chess program still has a planning or search algorithm, then I think it would still be helpful for describing an optimizer for something else.
For example, suppose a chess program uses a standard planning algorithm and and has added chest-specific heuristics, a chess world model, and goals. Then if you wanted to specify a something-else-optimizer, you could change most of the things but keep the planning algorithm.
To count as an optimizer, an optimizer for one thing doesn’t need to be easily turned into an optimizer for something else. But it needs to help.
It’s possible that there is a way to construct what should be called an optimization algorithm that has no generalizeability at all, but I’m not sure how to do that.
Hmm. I think this is closer to “general optimizer” than to “optimizer”: notice that certain chess-playing algorithms (namely, those that have been “hard-coded” with lots of chess-specific heuristics and maybe an opening manual) wouldn’t meet this definition, since it’s not easy to change them to play e.g. checkers or backgammon or Go. Was this intentional (do you think that this style of chess program doesn’t count as an optimizer)? I think your definition is getting at something interesting, but I think it’s more specific than “optimizer”.
Sorry for the late response.
If a chess program still has a planning or search algorithm, then I think it would still be helpful for describing an optimizer for something else.
For example, suppose a chess program uses a standard planning algorithm and and has added chest-specific heuristics, a chess world model, and goals. Then if you wanted to specify a something-else-optimizer, you could change most of the things but keep the planning algorithm.
To count as an optimizer, an optimizer for one thing doesn’t need to be easily turned into an optimizer for something else. But it needs to help.
It’s possible that there is a way to construct what should be called an optimization algorithm that has no generalizeability at all, but I’m not sure how to do that.