# I am looking for an algorithm that can find the best possible combination of inputs, in order to determine the optimum output

So as the title poorly implies, I'm looking for an algorithm that can accomplish the following task (as an example):

Given the inputs A(1:100), B(1:100), C(1:100), that can take on any value between 1 to 100.

Given the outputs X, Y, Z, which are determined by a combination of the inputs eg:

A=2, B=3,C=4, returns X=76, Y=87, Z=34

A=5,B=1,C=100 returns X=52, Y=45, Z=24 etc.

The problem is, I have no clue how the inputs affect the outputs and so id like to find an algorithm of some sort that can try out various combinations of inputs in a logical manner (not randomly) to find the optimal output or get as close as possible to said optimum output, which in my case is finding the highest possible valued combination of X,Y,Z so best case scenario is finding a set of inputs that return 100, 100, 100 as the XYZ values.

If anyone has any idea how I could approach this or if a question like this has already been answered, I appreciate any and all help.

Thank you!

• That is awfully general. And most optimization problems with discrete inputs are very hard to solve, there are nice (efficient) algorithms for a few of them, and decent (costly, but manageable for smallish instances) for a lot of others, in many cases you have to resort to approximate solutions or heuristics. With no clue on the relationship between inputs and outputs, there is no way around trying all. – vonbrand Aug 7 '19 at 17:15
• Yeah thats my main issue. My current solution is to go through every possible combination of inputs and then pick the best set but it is very very costly. Thats why im trying to search for something a bit more efficient. – DIB98 Aug 8 '19 at 8:39

## 1 Answer

This would fall under something called black box optimization. In general, there are several methods you could try in practice such as (stochastic) hill climbing or say a genetic algorithm. Such methods might seem "random", but they take some care in moving in a smart way but also use some "randomness" to escape local optimums.

• Ahh I see. Thank you, will look into it! – DIB98 Aug 8 '19 at 8:34