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

import mosek
from pyomo.environ import *
from pyomo.opt import *

model = ConcreteModel()
model.x = Var([1,2], domain=NonNegativeReals)
model.OBJ = Objective(expr = 2*model.x[1] + 3*model.x[2])
model.Constraint1 = Constraint(expr = 3*model.x[1] + 4*model.x[2] >= 1)

with SolverFactory("mosek") as solver:
    # options - MOSEK parameters dictionary, using strings as keys (optional)
    # tee - write log output if True (optional)
    # soltype - accepts three values : bas, itr and itg for basic,
    # interior point and integer solution, respectively. (optional)
    solver.solve(model, options = {'dparam.optimizer_max_time':  100.0, 
                                   'iparam.intpnt_solve_form':   int(mosek.solveform.dual)},
                        tee = True, soltype='itr')

    # Save data to file (after solve())
    solver._solver_model.writedata("dump.task.gz")
