Skip to main content

An optimization package for solving classic problems like TSP using various algorithms

Project description

optimx

optimx is a Python package designed to solve classic optimization problems. Its purpose is to provide efficient, flexible, and extendable solutions for a variety of optimization challenges.

Currently, optimx offers partial support for solving the Traveling Salesman Problem (TSP) through multiple algorithmic approaches, including brute force, dynamic programming, nearest neighbor, and branch-and-bound. This package aims to serve as a robust foundation for tackling optimization problems, with plans for additional algorithms and broader optimization support in future releases.

Installation

You can install optimx via pip:

pip install optimx

Tutorial

Here is a quick example to get started with optimx and see how it can be used to solve the Traveling Salesman Problem (TSP) with different algorithms.

import optimx as ox

# Define a distance matrix representing the distances between nodes
distance_matrix = [
    [0, 10, 15, 20],
    [10, 0, 35, 25],
    [15, 35, 0, 30],
    [20, 25, 30, 0]
]

# Set algorithm options and parameters
algorithm = "branch_and_bound"  # Options: "nearest_neighbor", "branch_and_bound", "genetic_algorithm"
node_names = None  # Optionally, specify node names, e.g., ["A", "B", "C", "D"]
start_node = None  # Optionally, specify a start node, e.g., "A"
cycle = False      # Set to True if the route should return to the start node
node_coordinates = None  # Optionally, specify coordinates, e.g., [(0, 0), (0, 1), (1, 0), (1, 1)]

# Solve the TSP using the specified algorithm and options
best_route = ox.solve_tsp(
    distance_matrix=distance_matrix,
    algorithm=algorithm,
    node_names=node_names,
    start_node=start_node,
    cycle=cycle
)

print("Best route:", best_route)
Best route: [0, 1, 3, 2]
Total distance: 65
total_distance = ox.calculate_tsp_distance_by_route(distance_matrix=distance_matrix, route=best_route, node_names=node_names)
print("Total distance:", total_distance)
Total distance: 65
ox.plot_tsp_route(best_route, node_names, node_coordinates, start_node, cycle)

The solve_knapsack function can be used to solve the Knapsack problem.

best_combination, max_val = ox.solve_knapsack(weights, values, capacity, "dynamic_programming")
print(f"Best combination: {best_combination}, max value: {max_val}")

The solve_ant_colony function can be used to solve the Any Colony Optimization problem.

from optimx.utils import generate_square_distances

distances = generate_square_distances(10)

n_ants = 10
n_best = 2
n_iteration = 100
decay = 0.6

shortest_paths = ox.solve_ant_colony(distances, n_ants, n_best, n_iteration, decay)
print("Shortest paths:", shortest_paths)

License

OptimX is licensed under the MIT License. See LICENSE for more details.

Contributing

We welcome contributions to OptimX! Please see CONTRIBUTING.md for guidelines.

Contact

For any questions or feedback, please contact the author:

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

optimx-0.0.4.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

optimx-0.0.4-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file optimx-0.0.4.tar.gz.

File metadata

  • Download URL: optimx-0.0.4.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.5

File hashes

Hashes for optimx-0.0.4.tar.gz
Algorithm Hash digest
SHA256 fed879c32ea6b9e4d671b247e51d22f59341ce70c40e72f99712a4bfa8fcf130
MD5 00b37a2a5b39919764504a46778f747c
BLAKE2b-256 6bb583087b199b8c1bcb1c78295082823be55cef3de98c79241727ced2adfa16

See more details on using hashes here.

File details

Details for the file optimx-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: optimx-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.5

File hashes

Hashes for optimx-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 830bb857908b0f9f365b638a8bac57617e5ade439746c7760774a86312b52c3f
MD5 69e80bd5a7fc5ae3b2c3af5f616eedd8
BLAKE2b-256 e02ee5ea98aa3ac52d0be85d268aff5f3f13966ced22dca27ee92ee535a21006

See more details on using hashes here.

Supported by

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