# JuMP + MOSEK example
#
# Demonstrates how to set MOSEK parameters and dump task files from JuMP

using Mosek;
using MosekTools;
using JuMP;

m = 30;
n = 20;
A = randn(m,n);
b = randn(m,1);

model = Model(with_optimizer(Mosek.Optimizer, 
                             MSK_DPAR_OPTIMIZER_MAX_TIME = 100.0,
                             MSK_IPAR_SOLVE_FORM  = MSK_SOLVE_DUAL));

# Model definition
@variable(model, 0 <= x[1:n] <= 1);
@variable(model, t);
@variable(model, u[1:m]);
@constraint(model, u .== A*x-b);
@constraint(model, [t; u] in SecondOrderCone());
@objective(model, Min, t);

# Save model to a file
MOI.write_to_file(backend(model).optimizer.model, "dump.task.gz");

# Solve
optimize!(model);

# Show some values
@show primal_status(model);
@show value.(x);
