Skip to main content

A client python API for accessing LightSolver's capabilities

Project description

LightSolver Platform Client

The LightSolver Platform Client is a Python package designed to interface with the LightSolver Cloud to facilitate solving Quadratic Unconstrained Binary Optimization (QUBO) problems.

This package is designated for internal access to features during the development process, as well as serves as a prototype for future versions of the production LightSolver Platform Client.

Features

  • QUBO Problem Solving: The solve_qubo function accepts a QUBO problem, represented either as a 2D array (matrix) or an adjacency list, and returns the solution.
  • Synchronous and Asynchronous Operation: Users can choose between blocking (synchronous) and non-blocking (asynchronous) modes for QUBO problem solving.
  • Flexible Installation: Compatible with both Windows and Ubuntu systems.

Solve QUBO

The solve_qubo function handles the computation of QUBO problems, either represented by a 2D array (matrix) or by an adjacency list. For code samples, see the Usage section.

Input Matrix Validity

  • The matrix must be square.
  • The matrix supports int or float cell values.

Return Value

A dictionary with the following fields:

- 'id': Unique identifier of the solution.
- 'solution': The solution as a Python list() of 1s and 0s.
- 'objval: The objective value of the solution.
- 'solverRunningTime': Time spent by the solver to calculate the problem.
- 'receivedTime': Timestamp when the request was received by the server.

Synchronous and Asynchronous Usage

  • Synchronous Mode (Default): The waitForSolution flag is set to True by default. The function blocks operations until a result is received.
  • Asynchronous Mode: Set waitForSolution to False. The function returns immediately with a token object, allowing the script to continue while the server processes the QUBO problem.

Setting Up

Prerequisites

  • Valid credentials for connecting to the LightSolver Cloud.
  • LightSolver Client code project - please use this link to download.
  • Python 3.10.
  • Operating System: Linux or Windows. Tested on Ubuntu 20.04 and Windows 11.
  • Highly Recommended: Use a virtual environment before installing laser-mind-client (Please see detailed action further below under the relevant OS).

Installation

Complete the installation on Windows or Ubuntu as described below. For further assistance with setup or connection issues, contact support@lightsolver.com.

Windows

  1. Press the windows key, type "cmd", right click on the result and select "Run as administrator".

  2. Navigate to the root folder where you unzipped and plan to use the LightSolver Client:

    cd <your project folder>
    
  3. (Recommended) Set the LightSolver credentials using environment variables (will remove the need to provide credentials for every usage). Run the following command:

    python setup_env.py
  1. (Recommended) Create a virtual environment:
    python -m venv .venv
  1. (Recommended) Activate the new virtual environment:
    .venv\Scripts\activate
  1. Install the laser-mind-client package. This command instructs pip to install the package from a local folder instead of searching online:
    pip install --no-cache-dir --find-links=.\packages laser-mind-client
  1. (Recommended) Test LightSolver credentials Run the following command:
    python test_env.py
if test credentials failed , please  reinstall credentials using following commands:
- Exit virtual environment , by running :
    deactivate
- Run the following command:
    python setup_env.py

Ubuntu

  1. Open new terminal window

  2. Navigate to the root folder where you unzipped and plan to use the LightSolver Client:

    cd <your project folder>
    
  3. (Recommended) Set the LightSolver credentials using environment variables (will remove the need to provide credentials for every usage). Run the following command:

    python3 setup_env.py
    source ~/.bash_profile
  1. (Recommended) Create a virtual environment:
    python3 -m venv .venv
  1. (Recommended) Activate the new virtual environment:
    chmod 755  .venv/bin/activate
    source .venv/bin/activate
  1. Install the laser-mind-client package. This command instructs pip to install the package from a local folder instead of searching online:
    pip install --no-cache-dir --find-links=./packages laser-mind-client
  1. (Recommended) Test LightSolver credentials Run the following command:
    python3 test_env.py
if test credentials failed , please  reinstall credentials using following commands:
- Exit virtual environment , by running :
    deactivate
- Run the following command:
    python3 setup_env.py
    source ~/.bash_profile

Authentication

Initialization of the LaserMind class automatically forms a secure and authenticated connection with the LightSolver Cloud. Subsequent calls by the same user are similarly secure and authenticated.

Usage

To begin solving any QUBO problem:

  1. Create an instance of the LaserMind class. This class represents the client that requests solutions from the LightSolver Cloud.
  2. Call the solve_qubo function using either a matrix or an adjacency list. Note: You may either provide a value for matrixData or for edgeList, but not both.

Solve QUBO Matrix Example

This example creates a matrix representing a QUBO problem and solves it using the LightSolver Platform Client. The solve_qubo function is used with the following parameters:

  • matrixData: A 2D array representing the QUBO problem.
  • timeout: The required time limit for the calculation in seconds.
import numpy
from laser_mind_client import LaserMind

# Create a mock QUBO problem
quboProblemData = numpy.random.randint(-1, 2, (10,10))

# Symmetrize the matrix
quboProblemData = (quboProblemData + quboProblemData.T) // 2

# Connect to the LightSolver Cloud
lsClient = LaserMind()

res = lsClient.solve_qubo(matrixData = quboProblemData, timeout=1)

print(res)

Solve QUBO Adjacency List Example

This example describes a QUBO problem using an adjacency list. This is useful for sparse matrices. The solve_qubo function is used with the following parameters:

  • edgeList: The adjacency list representing the QUBO problem.
  • timeout: The required time limit for the calculation in seconds.
from laser_mind_client import LaserMind

# Create a mock QUBO problem
quboListData = [
    [1,1,5],
    [1,2,-6],
    [2,2,3],
    [2,3,-1],
    [3,10,1]]

# Connect to the LightSolver Cloud
lsClient = LaserMind()

res = lsClient.solve_qubo(edgeList=quboListData, timeout=1)

print(res)

Solve QUBO Matrix using Asynchronous Flow

This example demonstratse how to solve a QUBO problem asynchronously using the LightSolver Platform Client. Begin by creating a matrix to represent your QUBO problem. The solve_qubo function is used with the following parameters:

  • matrixData: A 2D array representing the QUBO problem.
  • timeout: The desired time limit for the calculation in seconds.
  • waitForSolution: A boolean flag set to False to indicate non-blocking mode.
import numpy
from laser_mind_client import LaserMind

# Create a mock QUBO problem
quboProblemData = numpy.random.randint(-1, 2, (10,10))

# Symmetrize our matrix
quboProblemData = (quboProblemData + quboProblemData.T) // 2

# Connect to the LightSolver Cloud
lsClient = LaserMind()

# Request a solution to the QUBO problem and get the request token for future retrieval.
# This call does not block operations until the problem is solved.
requestToken = lsClient.solve_qubo(matrixData = quboProblemData, timeout=1, waitForSolution=False)

# You can run other code here that is not dependant on the request, while the server processes your request.

# Retrieve the solution using the get_solution_sync method.
# This blocks operations until the solution is acquired.
res = lsClient.get_solution_sync(requestToken)

print(res)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

laser_mind_client-0.21.2.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

laser_mind_client-0.21.2-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file laser_mind_client-0.21.2.tar.gz.

File metadata

  • Download URL: laser_mind_client-0.21.2.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for laser_mind_client-0.21.2.tar.gz
Algorithm Hash digest
SHA256 75c8e6b8e8bd4fd936ec63c1cd6e75898b99e639ef9d34df3122b1bca5e46654
MD5 ee34004c6dc869e48c6576a57c004e90
BLAKE2b-256 81b84c026fa89f0b80fde5a421f0f53d1a25339a010c4fcda77e364041bc1f7f

See more details on using hashes here.

File details

Details for the file laser_mind_client-0.21.2-py3-none-any.whl.

File metadata

File hashes

Hashes for laser_mind_client-0.21.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9a849b7aa64f40ebc11fad8454e5a1e4871c083bf4e5897d6b3f2dabd079aaea
MD5 9105d0feebd637f1250da48443dcdca0
BLAKE2b-256 ab2473e39147123b28f700482e5e75ed1c44feb050382642897ffa69dc529300

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page