At my day job, I had to come up with and code an algorithm which assigned numbers to a list of items according to a list of sometimes-conflicting rules. For example, I’d have a list of 24 things that would have to be given the numbers 1-3 (to split them up into groups) according to some crazy rules.
The first algorithm I came up with was:
model each rule as a utility function over dollars
instantiate an ideally rational agent for each rule, which used the rule as its utility function.
give each agent a number of dollars (changing the amount of money they have is one way to change the weighting of the rules during conflicts)
let them negotiate until some equilibrium is reached.
Of course, I did not try to implement this algorithm. Rather, I ended up solving the problem (mostly) using about 100 lines of perl and no AI.
This is what happens to me whenever I start to write a difficult program in C++, start by building a innovative system which solves the problems with minimal intervention on my part, and then eventually set up a cludge using heuristics which get the same thing done in a fraction of the time.
File under “Less Wrong will rot your brain”:
At my day job, I had to come up with and code an algorithm which assigned numbers to a list of items according to a list of sometimes-conflicting rules. For example, I’d have a list of 24 things that would have to be given the numbers 1-3 (to split them up into groups) according to some crazy rules.
The first algorithm I came up with was:
model each rule as a utility function over dollars
instantiate an ideally rational agent for each rule, which used the rule as its utility function.
give each agent a number of dollars (changing the amount of money they have is one way to change the weighting of the rules during conflicts)
let them negotiate until some equilibrium is reached.
Of course, I did not try to implement this algorithm. Rather, I ended up solving the problem (mostly) using about 100 lines of perl and no AI.
This is what happens to me whenever I start to write a difficult program in C++, start by building a innovative system which solves the problems with minimal intervention on my part, and then eventually set up a cludge using heuristics which get the same thing done in a fraction of the time.
What was the application?