# Add required packages Pkg.update() Pkg.add("Optim") Pkg.add("JuMP") Pkg.add("Cbc") # for LP and MILP (mixed-integer linear program) Pkg.add("Ipopt") # for QP and other NLPs #Pkg.add("Clp") #Pkg.add("SCS") # for conic programs #Pkg.add("Gurobi") # for conic and integer programs (commercial license required) # Pkg.add("CPLEX") # for conic and integer programs (commercial) # Fractional Shop using JuMP using Cbc #using Gurobi # for LP and MILP snack = Model(solver=CbcSolver()) #snack = Model(solver=GurobiSolver()) @variable(snack, b >= 0) @variable(snack, c >= 0) @objective(snack, Min, 50b + 80c) @constraints(snack, begin 3b >= 6 2b + 4c >= 10 2b + 5c >= 8 end) status = solve(snack) b = getvalue(b) c = getvalue(c) cost = getobjectivevalue(snack) println("Solver status = $(status)") println("Brownie $(b), Cheesecake $(c): Total cost $(cost) cents") # Integer Shop using JuMP using Cbc #using Gurobi # for LP and MILP snack = Model(solver=CbcSolver()) #snack = Model(solver=GurobiSolver()) # this gives an exactly integral solution @variable(snack, b >= 0, Int) @variable(snack, c >= 0, Int) @objective(snack, Min, 50b + 80c) @constraints(snack, begin 3b >= 6 2b + 4c >= 10 2b + 5c >= 8 end) status = solve(snack) b = getvalue(b) c = getvalue(c) cost = getobjectivevalue(snack) println("Solver status = $(status)") println("Brownie $(b), Cheesecake $(c): Total cost $(cost) cents")