// Paste into an online Java IDE as Main.java and run.
// Verifies infeasibility of the LP:
// min z = -3 x1 + x2
// s.t. x1 - 2 x2 >= 2
// -x1 + x2 >= 3
// x1, x2 >= 0
public class Main {
static boolean feasible(double x1, double x2) {
return x1 >= 0 && x2 >= 0
&& (x1 - 2*x2 >= 2 - 1e-12)
&& (-x1 + x2 >= 3 - 1e-12);
}
public static void main
(String[] args
) { System.
out.
println("LP to check:"); System.
out.
println(" minimize z = -3 x1 + x2"); System.
out.
println(" subject to x1 - 2 x2 >= 2"); System.
out.
println(" -x1 + x2 >= 3"); System.
out.
println(" x1, x2 >= 0");
// 1) Algebraic proof (one-line contradiction)
System.
out.
println("Algebraic check:"); System.
out.
println(" Add the two >= constraints:"); System.
out.
println(" (x1 - 2x2) + (-x1 + x2) >= 2 + 3 => -x2 >= 5 => x2 <= -5"); System.
out.
println(" But bounds require x2 >= 0. Contradiction."); System.
out.
println(" ==> The LP is INFEASIBLE.");
// 2) Small brute-force sanity check over a grid (non-proof, just confirmation)
boolean anyFeasible = false;
// scan a modest grid to illustrate there are no feasible points
for (int i1 = 0; i1 <= 50; i1++) {
for (int i2 = 0; i2 <= 50; i2++) {
double x1 = i1 * 0.5; // step 0.5
double x2 = i2 * 0.5;
if (feasible(x1, x2)) {
anyFeasible = true;
double z = -3*x1 + x2;
if (z < bestZ) {
bestZ = z; bestX1 = x1; bestX2 = x2;
}
}
}
}
if (!anyFeasible) {
System.
out.
println("Brute-force grid confirmation: no feasible points found on a 0.5 grid in [0,25]^2."); System.
out.
println("Conclusion: INFEASIBLE."); } else {
System.
out.
printf("Found feasible point (unexpected): x1=%.4f, x2=%.4f, z=%.4f%n", bestX1, bestX2, bestZ
); }
}
}
Ly8gUGFzdGUgaW50byBhbiBvbmxpbmUgSmF2YSBJREUgYXMgTWFpbi5qYXZhIGFuZCBydW4uCi8vIFZlcmlmaWVzIGluZmVhc2liaWxpdHkgb2YgdGhlIExQOgovLyAgIG1pbiB6ID0gLTMgeDEgKyB4MgovLyAgIHMudC4geDEgLSAyIHgyID49IDIKLy8gICAgICAgIC14MSArIHgyID49IDMKLy8gICAgICAgIHgxLCB4MiA+PSAwCnB1YmxpYyBjbGFzcyBNYWluIHsKICBzdGF0aWMgYm9vbGVhbiBmZWFzaWJsZShkb3VibGUgeDEsIGRvdWJsZSB4MikgewogICAgcmV0dXJuIHgxID49IDAgJiYgeDIgPj0gMAogICAgICAgICYmICh4MSAtIDIqeDIgPj0gMiAtIDFlLTEyKQogICAgICAgICYmICgteDEgKyB4MiA+PSAzIC0gMWUtMTIpOwogIH0KCiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgU3lzdGVtLm91dC5wcmludGxuKCJMUCB0byBjaGVjazoiKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICBtaW5pbWl6ZSAgeiA9IC0zIHgxICsgeDIiKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICBzdWJqZWN0IHRvIHgxIC0gMiB4MiA+PSAyIik7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgICAgICAgICAteDEgKyB4MiA+PSAzIik7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgICAgICAgICB4MSwgeDIgPj0gMCIpOwogICAgU3lzdGVtLm91dC5wcmludGxuKCk7CgogICAgLy8gMSkgQWxnZWJyYWljIHByb29mIChvbmUtbGluZSBjb250cmFkaWN0aW9uKQogICAgU3lzdGVtLm91dC5wcmludGxuKCJBbGdlYnJhaWMgY2hlY2s6Iik7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgQWRkIHRoZSB0d28gPj0gY29uc3RyYWludHM6Iik7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAoeDEgLSAyeDIpICsgKC14MSArIHgyKSA+PSAyICsgMyAgPT4gIC14MiA+PSA1ICA9PiAgeDIgPD0gLTUiKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICBCdXQgYm91bmRzIHJlcXVpcmUgeDIgPj0gMC4gQ29udHJhZGljdGlvbi4iKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICA9PT4gVGhlIExQIGlzIElORkVBU0lCTEUuIik7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKCiAgICAvLyAyKSBTbWFsbCBicnV0ZS1mb3JjZSBzYW5pdHkgY2hlY2sgb3ZlciBhIGdyaWQgKG5vbi1wcm9vZiwganVzdCBjb25maXJtYXRpb24pCiAgICBib29sZWFuIGFueUZlYXNpYmxlID0gZmFsc2U7CiAgICBkb3VibGUgYmVzdFogPSBEb3VibGUuUE9TSVRJVkVfSU5GSU5JVFksIGJlc3RYMSA9IERvdWJsZS5OYU4sIGJlc3RYMiA9IERvdWJsZS5OYU47CgogICAgLy8gc2NhbiBhIG1vZGVzdCBncmlkIHRvIGlsbHVzdHJhdGUgdGhlcmUgYXJlIG5vIGZlYXNpYmxlIHBvaW50cwogICAgZm9yIChpbnQgaTEgPSAwOyBpMSA8PSA1MDsgaTErKykgewogICAgICBmb3IgKGludCBpMiA9IDA7IGkyIDw9IDUwOyBpMisrKSB7CiAgICAgICAgZG91YmxlIHgxID0gaTEgKiAwLjU7IC8vIHN0ZXAgMC41CiAgICAgICAgZG91YmxlIHgyID0gaTIgKiAwLjU7CiAgICAgICAgaWYgKGZlYXNpYmxlKHgxLCB4MikpIHsKICAgICAgICAgIGFueUZlYXNpYmxlID0gdHJ1ZTsKICAgICAgICAgIGRvdWJsZSB6ID0gLTMqeDEgKyB4MjsKICAgICAgICAgIGlmICh6IDwgYmVzdFopIHsKICAgICAgICAgICAgYmVzdFogPSB6OyBiZXN0WDEgPSB4MTsgYmVzdFgyID0geDI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgaWYgKCFhbnlGZWFzaWJsZSkgewogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkJydXRlLWZvcmNlIGdyaWQgY29uZmlybWF0aW9uOiBubyBmZWFzaWJsZSBwb2ludHMgZm91bmQgb24gYSAwLjUgZ3JpZCBpbiBbMCwyNV1eMi4iKTsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb25jbHVzaW9uOiBJTkZFQVNJQkxFLiIpOwogICAgfSBlbHNlIHsKICAgICAgU3lzdGVtLm91dC5wcmludGYoIkZvdW5kIGZlYXNpYmxlIHBvaW50ICh1bmV4cGVjdGVkKTogeDE9JS40ZiwgeDI9JS40Ziwgej0lLjRmJW4iLCBiZXN0WDEsIGJlc3RYMiwgYmVzdFopOwogICAgfQogIH0KfQoK