Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add philosophy section to the docs #208

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 53 additions & 13 deletions docs/intro.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,65 @@
Introduction
============

`Nonlinear programming (NLP) <https://en.wikipedia.org/wiki/Nonlinear_programming>`_
is the process of solving an optimization problem where some of the constraints
are not linear equalities and/or the objective function is not a linear function.
Such optimization problems are pervasive in business and logistics: inventory
management, scheduling employees, equipment delivery, and many more.
`dwave-optimization` enables you to formulate optimization models for workforce
scheduling, production scheduling, resource allocation, logistics routing, and
many more.
The model can then be submitted to the
`Leap <https://cloud.dwavesys.com/leap/>`_\ |TM| service's quantum-classical
hybrid nonlinear solver to find good solutions.

Features
========

.. toctree::
:maxdepth: 1
:hidden:

philosophy

`dwave-optimization` and the hybrid nonlinear solver incorporate features and
design principals from each of the following areas:

.. grid:: 2
:gutter: 3

.. grid-item-card:: Quantum Optimization
:class-body: sd-outline-warning
:link: optimization_philosophy_quantum_optimization
:link-type: ref

Take advantage of quantum-mechanical effects not available to classical
compute.

.. grid-item-card:: (Mixed-Integer) Linear Programming
:class-body: sd-outline-info
:link: optimization_philosophy_linear_programming
:link-type: ref

Learn the basics of solving optimization problems with linear program
solvers.

.. grid-item-card:: Lists, Sets, and other combinatorial variables
:class-body: sd-outline-info
:link: optimization_philosophy_constraint_programming
:link-type: ref

Explore how lists, sets, and other combinatorial structures make
optimization simpler and more performant.

.. grid-item-card:: Tensor Programming
:class-body: sd-outline-info
:link: optimization_philosophy_tensor_programming
:link-type: ref

Use N-dimensional arrays and operations to work with your data directly
and succinctly.

.. _intro_optimization_nonlinear_models:

Nonlinear Models
================

`dwave-optimization` enables you to formulate the nonlinear models needed for
such industrial optimization problems. The model can then be submitted to the
`Leap <https://cloud.dwavesys.com/leap/>`_\ |TM| service's quantum-classical
hybrid nonlinear-program solver to find good solutions.

Examples of problems suited to such solution methods are resource routing,
scheduling, allocation, and job-shop scheduling.

Successful implementation, as for any solver, requires following some
:ref:`best practices <intro_optimization_usage_guidelines>` in formulating
your model.
Expand Down
63 changes: 63 additions & 0 deletions docs/philosophy.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
.. _optimization_philosophy:

.. |TM| replace:: :sup:`TM`

==========
Philosophy
==========

`dwave-optimization` and
the `Leap <https://cloud.dwavesys.com/leap/>`_\ |TM| service's quantum-classical
hybrid nonlinear solver
incorporate features and design principals from each of the following areas:

.. _optimization_philosophy_quantum_optimization:

Quantum Optimization
====================

:term:`Quantum computing` has the potential to help solve some of the most complex
technical, scientific, national defense, and commercial problems that
organizations face.

:term:`Quantum annealing` processors naturally return low-energy solutions.
A fundamental rule of physics is that everything tends to seek a minimum energy state.
Objects slide down hills; hot things cool down over time.
This behavior is also true in the world of quantum physics.
Quantum annealing simply uses quantum physics to find low-energy states of a
problem and therefore the optimal or near-optimal combination of elements.

To learn more about solving optimization problems with quantum computers, see the
`Problem Solving Handbook <https://docs.dwavesys.com/docs/latest/doc_handbook.html>`_.

.. _optimization_philosophy_linear_programming:

(Mixed-Integer) Linear Programming
==================================

Much of the mathematical optimization done today is done with
`linear programming <https://en.wikipedia.org/wiki/Linear_programming>`_
solvers and techniques.

Users familiar with linear programming techniques will find many concepts in
`dwave-optimization` familiar: objective functions; continuous, linear, and binary variables;
constraints; and feasible regions are all concepts found in linear programming.

However, unlike other linear solvers on the market, `dwave-optimization` allows
`nonlinear <https://en.wikipedia.org/wiki/Nonlinear_programming>`_ relationships
among variables, constraints, and the objective function.

.. _optimization_philosophy_constraint_programming:

Lists, Sets, and other combinatorial variables
==============================================

Lorem ipsum

.. _optimization_philosophy_tensor_programming:

Tensor Programming
==================

Lorem ipsum

2 changes: 1 addition & 1 deletion docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
pydata-sphinx-theme==0.14.3
sphinx==7.3.7
sphinx-design==0.5.0
sphinx-design==0.6.1
breathe==4.35.0
reno[sphinx]==4.1.0 # keep synced with requirements.txt