Reversing the input and output of an ML algorithm to Optimize My dataset consists of multiple input variables (X) and multiple output variables (Y).

For example:

| X1| X2 | X3 |    | Y1| Y2 | Y3 |
----------------------------------
| 1 |  1 |  0 |    | 2 |  2 |  0 |
| 2 |  2 |  1 |    | 3 |  3 |  1 |
| 3 |  3 |  3 |    | 4 |  5 |  6 |


But, I don't actually want to predict the output variables Y. I want to actually predict the input variables X given Y. I understand that switching the variables X and Y might not be 'optimal' since there could be multiple input values that yield the same output values, but I don't see how else I solve this type of problem. I was planning on using a Random Forest or simple neural net. 

From the help I've been trying to get, it seems that I should keep input and output variables as is, but rather use optimization techniques to find the best input(the variable I want to predict) for a given output. I am unsure if my initial intuition on reversing the inputs and outputs would 'get the job done'.

For a more detailed breakdown on the actual problem I am trying to solve, please see this link.
The problem is a bit vague but here a couple ideas:


Just use the Y variables as features and predict the X variables. The most basic option is to consider every Xi as independent of the others, and train an independent model for each of them. A more advanced approach is to train a joint model which predicts all the Xi together (i.e. the class would be for instance "1,1,0"), but this probably requires a lot more data.
In the idea of optimization techniques, there might be some way to use genetic learning in order to obtain the optimal X values given the Y values. However I don't see how to design the population with many different Y combinations, but maybe it's possible.