What is JuMP?
masterJuMP is a domain-specific modeling language for mathematical optimization embedded in Julia. It allows users to formulate and solve various problem classes, including:
- Linear programs
- Integer programs
- Conic programs
- Semidefinite programs
- Constrained nonlinear programs
To use JuMP, you typically pair it with a solver (such as Ipopt) and use JuMP's macros to define variables, constraints, and objectives.
using JuMP, Ipopt
function solve_constrained_least_squares_regression(A::Matrix, b::Vector)
m, n = size(A)
model = Model(Ipopt.Optimizer)
set_silent(model)
@variable(model, x[1:n])
@variable(model, residuals[1:m])
@constraint(model, residuals == A * x - b)
@constraint(model, sum(x) == 1)
@objective(model, Min, sum(residuals.^2))
optimize!(model)
return value.(x)
end
A, b = rand(10, 3), rand(10)
x = solve_constrained_least_squares_regression(A, b)