Skip to content
@MatProGo-dev

MatProGo-dev

MatProGo-dev

📝 Table of Contents

Purpose

This organization is focused on centralizing some of the tools used to perform Mathematical Programming (e.g., Convex Optimization) in the Go (Golang) language. It aims to create a universal interface for defining optimization problems (like YALMIP) and to share simple wrappers that solve those optimization problems with arbitrary solvers (e.g., Gurobi).

How to Use MatProGo

The steps for making use of MatProGo's work should be as follows:

  1. For your Go project, get the MatProInterface.go module.
  2. Define your optimization problem using the symbolic math tools in this library (i.e., create the expressions, constraints and objective and attach them to a model).
  3. For your desired problem type, get the appropriate MatProInterface wrapper (e.g. Gurobi.go) module.
  4. Use the wrapper to solve the model created in Step 2.

The Mathematical Programming Universe

So far, we've noticed the following options available to Go users that are interested in solving Mathematical Programming problems:

Each solver is typically designed for a specific class of problem (e.g., a Quadratic Program). We describe the capabilities of each library with the following table:

Problem Type Solvers
Linear Programs (LPs) Gurobi, Gonum, Mosek, OSQP
Mixed Integer Linear Programs (MILPs) Gurobi, Mosek
Quadratic Programs (QPs) Gurobi, OSQP, Mosek
Second-Order Cone Programs (SOCPs) Mosek

What's next?

We are currently writing our symbolic math toolbox to make it easy to create optimization problems in Go and have focused a lot of energy there. If you have features that you would like to see in that symbolic math solver or if you have a request for a certain wrapper, then please let us know about this!

Support

If you want to support the work that is being done in MatProGo, then feel free to:

  • Offer To Help Address A Bug (via a GitHub issue)
  • Volunteer to Join the Organization
  • Financially Support Us Through Our GitHub Sponsors Page

Pinned

  1. MatProInterface.go MatProInterface.go Public

    A common interface used for modeling Mathematical Programs (e.g., Convex Optimization problems) in the language Go (Golang).

    Go

  2. Gurobi.go Gurobi.go Public

    This Go module can be used to model and solve optimization problems using the Gurobi solver.

    Go 2

Repositories

Showing 5 of 5 repositories
  • SymbolicMath.go Public

    A symbolic math module for the Go (Golang) Programming Language.

    Go 4 MIT 0 0 1 Updated Apr 6, 2024
  • MatProInterface.go Public

    A common interface used for modeling Mathematical Programs (e.g., Convex Optimization problems) in the language Go (Golang).

    Go 0 MIT 0 0 0 Updated Feb 29, 2024
  • .github Public

    Special repository meant to define the organizations readme.

    0 0 0 0 Updated Dec 28, 2023
  • gonumWrapper Public

    A wrapper around Gonum's optimize package.

    0 MIT 0 0 0 Updated Dec 25, 2023
  • Gurobi.go Public

    This Go module can be used to model and solve optimization problems using the Gurobi solver.

    Go 2 MIT 0 2 (2 issues need help) 0 Updated Nov 26, 2023

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…