在Mathematica中为分支和边界问题绘制一组不等式

时间:2014-06-18 01:33:34

标签: plot wolfram-mathematica branch-and-bound

我在整数2变量线性问题中研究分支定界算法的行为。 我偶尔会使用Wolfram Alpha来绘制图形,但现在我需要一个更强大的选项Mathematica。 我需要在R2空间上绘制一组不等式的可行区域(x和y大于0),不等式如:

2 * x + 4 * y&lt; = 12 // 6 * x + 2 * y&lt; = 27 // x <= 4 // x> = 0 // y&gt; = 0

图表必须显示正象限上的所有整数x,y点(我认为网格函数可以做到这一点)和特定点(最大/最小化问题的解决方案) 例如,在这种情况下,可行空间是: http://www.wolframalpha.com/input/?i=plot%282*x%2B4*y%3C%3D12%2C6*x%2B2*y%3C%3D27%2Cx%3C%3D4%2Cx%3E%3D0%2Cy%3E%3D0%29

提前感谢。

1 个答案:

答案 0 :(得分:1)

您正在寻找的功能是RegionPlot

RegionPlot[
 2 x + 4 y <= 12 && 6 x + 2 y <= 27 && x <= 4 && x >= 0 && y >= 0, {x,
   0, 5}, {y, 0, 5}]

enter image description here

为了在不等式满足的整数点上制作漂亮的图,这里是绘制它的函数:

IntegerRegionPlot[quantifier_, {xmin_, xmax_}, {ymin_, ymax_}] := 
  Graphics[Flatten[
    Table[If[
      quantifier, {Red, Disk[{x, y}, 0.5]}, {Blue, 
       Disk[{x, y}, 0.5]}], {x, xmin, xmax}, {y, ymin, ymax}]], 
   Frame -> True];

要绘制不平等,请执行以下操作:

IntegerRegionPlot[
 2 x + 4 y <= 12 && 6 x + 2 y <= 27 && x <= 4 && x >= 0 && y >= 0, {0,
   5}, {0, 5}]

enter image description here