using Polyhedra h = HalfSpace([-1, 0], 1) ∩ HalfSpace([1, 0], 1) ∩ HalfSpace([-4, -1], 1) ∩ HalfSpace([2, -1], 1) ∩ HalfSpace([-1/4, -1], 0) ∩ HalfSpace([1/2, -1], 0) using CDDLib p = polyhedron(h, CDDLib.Library()) vrep(p) p using Plots plot(p ∩ HalfSpace([0, 1], 4)) scatter!([x[1] for x in points(p)], [x[2] for x in points(p)]) using JuMP model = Model(Polyhedra.linear_objective_solver(p)) @variable(model, x) @variable(model, y) @constraint(model, [x, y] in p) @objective(model, Min, x + y) optimize!(model) termination_status(model) value(x), value(y) plot!([-0.2, -1.2], [0.0, 1.0], linewidth=2) # Objective function scatter!([value(x)], [value(y)], markershape=:star5, markersize=8) # Optimal solution @objective(model, Max, x + y) optimize!(model) termination_status(model) value(x), value(y) using JuMP import GLPK model = Model(GLPK.Optimizer) @variable(model, x <= -2) @variable(model, y) @variable(model, 0 <= u <= 3) @constraint(model, [2x + u, y] in p) @objective(model, Min, u + y) optimize!(model) termination_status(model) value(x), value(y), value(u) using Polyhedra h = HalfSpace([-1, 0, 0], 1) ∩ HalfSpace([1, 0, 0], 1) ∩ HalfSpace([0, -1, 0], 1) ∩ HalfSpace([0, 1, 0], 1) ∩ HalfSpace([-4, -2, -1], 1) ∩ HalfSpace([2, -1, -1], 1) ∩ HalfSpace([-1/4, 1/2, -1], 0) ∩ HalfSpace([1/2, 1, -1], 0) using CDDLib p = polyhedron(h, CDDLib.Library()) vrep(p) m = Polyhedra.Mesh(p) using MeshCat vis = Visualizer() setobject!(vis, m) IJuliaCell(vis) using Makie Makie.mesh(m, color=:blue) using Makie Makie.wireframe(m)