Optimizer Interface

The CVChannel package supports SCS (default) and MOSEK backends for optimizations. SCS is open-source whereas MOSEK requires a license (free for academic institutions). To obtain a MOSEK license, please visit https://www.mosek.com/license/request/?i=acp. For convenience, all optimization problems can be run through the qsolve! method which abstracts the backend from the optimization.

CVChannel.qsolve!Function
qsolve!( problem :: Problem; qsolve_kwargs..., cvx_kwargs... )

A wrapper for Convex.solve!(...) that selects and configures the backend. The supported backends are SCS (default) and MOSEK (license required). The name qsolve! is chosen to avoid a namespace conflict with the Convex.solve!. This method is a featured utility for simplifying the interface with optimization software.

qsolve_kargs:

  • quiet :: Bool = true - If true, solve messages are suppressed.
  • use_mosek :: Bool = false - If true, MOSEK is used instead of SCS (default).

The cvx_kwargs... are keyword arguments passed to Convex.solve!:

  • check_vexity :: Bool = true
  • verbose :: Bool = true
  • warmstart :: Bool = false
  • silent_solver :: Bool = true

For details, see Convex.jl docs.

CVChannel.hasMOSEKLicenseFunction
hasMOSEKLicense() :: Bool

Returns true if a MOSEK license is found locally. The ENV configuration is used to search for a MOSEK license in the following order:

  • ENV[MOSEKLMM_LICENSE_FILE] a direct filepath to the MOSEK license.
  • Filepath ENV["HOME"]/mosek/mosek.lic
  • Filepath ENV["PROFILE"]/mosek/mosek.lic
Expired MOSEK License

The method hasMOSEKLicense will return true if an expired MOSEK license is found. An error will be thrown if MOSEK is used with an expired license. To obtain a MOSEK license please visit https://www.mosek.com/license/request/?i=acp.