Quadratic programming is a fundamental form of nonlinear optimization. Mixed-integer quadratically constrained programming (MIQCP) is a subset of this model class.  For a basic introduction to quadratic programming, check out these Quadratic Optimization FAQs. 

What Is MIQCP?

In MIQCP, the objective function is typically linear, while at least one constraint contains a quadratic term. The decision variables can be a mix of continuous values (i.e., can be divided into smaller amounts) and integers (i.e., must be represented as whole numbers).  

This makes MIQCP much more complex than related programs. Basic quadratic programming (QP), for example, deals with quadratic relationships, but continuous variables and linear constraints make the process more straightforward. Similarly, mixed-integer quadratic programming (MIQP) expands on QP to include integer variables, but still has more simple linear constraints. This complexity means that MIQCP requires more specialized formulations, solution algorithms, and solvers. 

What Types of Problems Can Be Modeled as MIQCPs?

MIQCP is used across industries, from finance to energy to supply chain management. Here are a few real-world examples of MIQCP in action:  

  • Grocery Store Pricing: Grocery store prices have a nonlinear relationship with revenue and profits. The price optimization platform Luca uses Gurobi to solve MIQCQP models that help grocery stores price thousands of products in seconds. 
  • The Pooling Problem: Oil and gas companies, wastewater treatment plants, and mining firms all solve different versions of the pooling problem. In this problem (which is actually a non-convex MIQCP, and therefore more complex than a typical MMIQCP), firms must identify the optimal way to organize the flow of raw materials from their source nodes and blend them in intermediary and end nodes to produce final products that meet certain attributes or requirements (e.g., a specific blend of gasoline to comply with regional or seasonal requirements). Numerous companies have leveraged Gurobi’s MIQCP capabilities to solve this problem for their unique needs and specifications. 

Does Gurobi Support MIQCP?

Yes, Gurobi supports MIQCP and has developed specific capabilities to identify high-quality solutions for MIQCP problems. For example, Gurobi 9.0 introduced the bilinear solver, which enables the solution of problems with non-convex quadratic objectives and constraints.  

Gurobi 12.0, the most recent release, dramatically improved solution times for non-convex MIQCP problems, meaning that optimization teams will have actionable insights faster than ever before. 

Finally, Gurobi’s approach to MIQCP is user-friendly. The Gurobi Python API allows teams to get started using one of the most common coding languages. If they prefer another language (e.g., C, C++, Java, MATLAB, .NET, R), Gurobi can accommodate them too. In addition, Gurobi is flexible enough to work with a variety of file formats, allowing the Gurobi solver to integrate seamlessly into teams’ workflows. 

What Solution Algorithm Does Gurobi Use for MIQCP Problems?

One of the algorithms Gurobi uses for MIQCP problems is the branch-and-bound method. This approach breaks the feasible region down into sub-problems. Visually, the breakdown of the problem and sub-problems looks like a family tree or an organizational chart. In the case of non-convex problems, the solver also branches on continuous variables, a procedure referred to as spatial branching. Furthermore, the non-convex quadratic constraints are handled via a dynamic outer-approximation approach. Next, the algorithm eliminates the sub-problems that cannot include the optimal solution. In other words, it chops off the sub-optimal tree branches. This reduces the number of potential solutions and makes solving faster. 

This spatial branch-and-bound approach makes Gurobi particularly adept at solving non-convex MIQCP problems. As discussed in the quadratic optimization FAQs, convex MIQCP solutions are (relatively) straightforward, as the local optimum is the global optimum. Non-convex MIQCP’s local optima can create false results for other solvers. Gurobi’s bilinear solver and branch-and-bound approach deliver the confidence teams need when working on complex problems. 

How Does Gurobi Compare to Other Solvers for MIQCP?

In addition to its solver’s robust performance, Gurobi sets itself apart with resources and support. The extensive resource center is available to anyone, and Gurobi offers customers free technical guidance, support, and model tuning services. Even customers testing out the free trial can access Gurobi’s customer service to refine their MIQCP models. 

Where Can I Find More Resources About Solving MIQCPs with Gurobi?

To learn more about solving MIQCPs with Gurobi, check out this Jupyter notebook example of the pooling problem, which empowers users to begin building an MIQCP model with Python.

Additional Insight

Guidance for Your Journey

30 Day Free Trial for Commercial Users

Start solving your most complex challenges, with the world's fastest, most feature-rich solver.

Always Free for Academics

We make it easy for students, faculty, and researchers to work with mathematical optimization.

Try Gurobi for Free

Choose the evaluation license that fits you best, and start working with our Expert Team for technical guidance and support.

Evaluation License
Get a free, full-featured license of the Gurobi Optimizer to experience the performance, support, benchmarking and tuning services we provide as part of our product offering.
Cloud Trial

Request free trial hours, so you can see how quickly and easily a model can be solved on the cloud.

Academic License
Gurobi provides free, full-featured licenses for coursework, teaching, and research at degree-granting academic institutions. Academics can receive guidance and support through our Community Forum.

Search

Gurobi Optimization

Navigation Menu