Постройте набор неравенств для задач ветвей и границ в Mathematica

Я изучаю поведение алгоритма ветвей и границ в целочисленной линейной задаче с двумя переменными. Я иногда использую Wolfram Alpha для построения графиков, но теперь мне нужен более надежный вариант, Mathematica. Мне нужно построить жизнеспособную зону набора неравенств в пространстве R2 (с x и y больше 0), такие неравенства, как:

2*x+4*y <= 12 // 6*x+2*y <= 27 // x <= 4 // x>=0 // y>=0

На графике должны быть показаны все целые точки x, y в положительном квадранте (я думаю, что функция сетки может это сделать) и конкретная точка (решение задачи максимизации/минимизации). Например, жизнеспособное пространство в этом случае: http://www.wolframalpha.com/input/?i=plot%282%2ax%2b4%2ay%3C=12,6%2ax%2b2%2ay%3C=27,x%3C=4,x%3E=0,y%3E=0%29

заранее спасибо.


person alfablac    schedule 18.06.2014    source источник
comment
Добро пожаловать в СО. Этот вопрос не в формате, подходящем для сайта. Это слишком общее. Можете показать, что вы пробовали? Какие ошибки вы получаете?   -  person dcarson    schedule 18.06.2014


Ответы (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}]

введите здесь описание изображения

Чтобы построить красивый график по целым точкам, которым удовлетворяет неравенство, вот функция для его построения:

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}]

введите здесь описание изображения

person DumpsterDoofus    schedule 18.06.2014
comment
ой. Благодарность! И что я должен сделать, чтобы заставить все целые точки и одну конкретную точку?! - person alfablac; 18.06.2014
comment
@alfablac: добавлен код для отображения значений true-false только в целых точках. - person DumpsterDoofus; 18.06.2014
comment
Я сделал немного иначе, как вы сказали, используя другой вопрос здесь, на SO, но ваш ответ для команды regionplot был важен. Благодарность! - person alfablac; 18.06.2014