I'm not an expert in optimization, but I see a problem with the way your problem is set up. You mention that most of the information you've found relates to optimizing single (linear, but it doesn't necessarily have to be linear) equations. There's a reason for that: you should generally have a "value" function, or a "feedback" function - a function that tells you how well you're doing in your optimization search. Is this solution better than that one or not? In your case, there's no clear-cut way to say that {A,B,C,D} = {1,0,0,0} is better or worse than {A,B,C,D} = {0,1,0,0}. This essentially comes down to the fact that the real numbers obey the law of trichotomy, and is the largest number system that does so, unless I'm mistaken. Certainly, vectors in like {A,B,C,D}, are NOT ordered. Hence, you can't compare them with an equals sign, a less-than sign, or a greater-than sign.

So the question I have for you is this: what is your value function? How are you to tell whether one solution is better than another or not?