0
$\begingroup$

I need to come up with a solution for a rather, odd situation. Let's say I have an $M \times N$ matrix called ${\bf A}$, and I would like to solve it for ${\bf x}$ where $b_1 \le {\bf A} {\bf x} \le b_2$. However I also need to be able to put an upper and lower bound on each value in ${\bf x}$. Any suggestions? Linear programming is giving me some help, and doing well with $b_1$, but I'm having difficulty placing upper bounds on $b_2$.

$\endgroup$
5
  • $\begingroup$ ...and you want to use Mathematica to solve this problem? $\endgroup$
    – J. M.'s torpor
    Mar 5 '16 at 4:16
  • $\begingroup$ That would be ideal. As it has far too many variables to do by hand. I've managed to cut it down to the 59 most important variables, but if I can get it working I would like to scale it up to over 100 in the future. $\endgroup$
    – Daniel
    Mar 5 '16 at 4:18
  • $\begingroup$ I should clarify, by linear programming I mean the Linearprogramming function within Mathematica. $\endgroup$
    – Daniel
    Mar 5 '16 at 4:20
  • $\begingroup$ @david I'm not sure about your edit. Take a look at b1<=A*x<=b2 .... if you get pinged .) $\endgroup$ Mar 5 '16 at 8:48
  • $\begingroup$ I collected some examples about how to use LinearProgramming here (mathematica.stackexchange.com/a/108655/16267). If you just want a feasible solution, without minimizing anything, you can use a zero cost vector (first argument). If you want to enforce a set constraints like $\mathbf{b}_1 \le \mathbf{Ax} \le \mathbf{b}_2$ you should double the constaints as $\mathbf{Ax} \le \mathbf{b}_2$ and $- \mathbf{Ax} \le -\mathbf{b}_1$ (second and thrid arguments). If you also want to put a lower/upper bound on each $\mathbf{x}$ component you should use the 4th argument. $\endgroup$
    – unlikely
    Mar 5 '16 at 14:10
2
$\begingroup$

Maybe

LinearProgramming[
 ConstantArray[0, Last@Dimensions@A],
 ArrayFlatten[{{A}, {-A}}],
 Join[b1, -b2]
 ]

?

$\endgroup$
4
  • $\begingroup$ This seems to have done it, thank you very much! $\endgroup$
    – Daniel
    Mar 6 '16 at 6:07
  • $\begingroup$ Doh! I just realized, I need to be able to get discrete values for certain x's. $\endgroup$
    – Daniel
    Mar 6 '16 at 6:33
  • $\begingroup$ @Daniel Integer values? This is possible by the 5th argument of LinearProgramming... $\endgroup$
    – unlikely
    Mar 6 '16 at 7:33
  • $\begingroup$ Never mind, I remembered how to do the last bit. Afraid it's been a while since I've used Mathematica. $\endgroup$
    – Daniel
    Mar 6 '16 at 7:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.