Update: It turns out we can use a simple modificationmodifications of the option setting in OP for MeshFunctions
to get the desired result:
1. Boole:
Alternatively, specify a list of values for each mesh function using, for example, Mesh -> {Range[15, 30, .5], Range[0, 10, .25]}
to get
2. Piecewise:
We can also use
Alternatively3. ConditionalExpression:
Finally, specify awe can use ConditionalExpression
if we use list of values for each mesh function using, for example,the Mesh -> {Range[15, 30, .5], Range[0, 10, .25]}
option setting (and increase PlotPoints
to getremove artifacts):
RegionPlot[{a, regions}, {p, 0, 10}, {q, 0, 10},
FrameLabel -> {p, q}, MaxRecursion -> 3,
MeshFunctions -> {ConditionalExpression[#1 + #2, # + #2 >= 15] &,
ConditionalExpression[#1, # + #2 >= 15] &},
Mesh -> {Range[0, 20, .5], Range[0, 10, .5]},
PlotPoints -> 100,
MeshStyle -> {Orange, Green},
PlotLegends -> SwatchLegend[Automatic, Prepend[b, "Infeasible: " And @@ a],
LegendMarkerSize -> {20, 20}]]