I have one idea, but a) it may be too slow, b) it is not proved to work.
1. You may start optimizing with all variables having non-negative values, which corresponds to A+B+C+...=1, A>=0, B>=0, C>=0, ... 2. After optimization is over, you may notice that some variables have zero values. It may mean that optimal values of these variables are negative. In this case you "flip sign" of one or several such variables (distinction between one and several may be important for algorithm convergence), and now you have -A+B+C+...=1, A<=0, B>=0, C>=0, ... 3. You perform optimization again, and again, and again until convergence
Open questions: 1. I do not know whether such algorithm is guaranteed to converge 2. I can not easily come up with good convergence conditions 3. You may have problems with convergence criteria when some of the variables are exactly zero at the solution (you may infinitely cycle between a>=0 and a<=0) 4. it may be good idea to perform subsequent optimization with relaxed stopping criteria (say, limited number of steps) to detect candidates for deactivation ASAP.
|