Giter VIP home page Giter VIP logo

napali's Introduction

Napali

ci docs.rs License: MIT codecov Docker Image Size (tag) FlakeHub

About

Napali is a TUI interface to Integrated Reasoning's hardware-accelerated solver service. The TUI provides an environment for interacting with combinatorial optimization solvers and managing local and remote optimization workloads. Furthermore, Napali aims to facilitate modern development practices in operations research workflows.

This developer preview release is intended for early adopters and has no solver related features enabled at this time.

Napali VHS demo

Usage as a flake

Add napali to your flake.nix:

{
  inputs.napali.url = "https://flakehub.com/f/integrated-reasoning/napali/*.tar.gz";

  outputs = { self, napali }: {
    # Use in your outputs
  };
}

Running with Docker

docker run -it integratedreasoning/napali:latest

Roadmap

  • Core Capabilities
    • Manage optimization problems in session containers
    • Configure and select from a variety of MILP/LP solvers
    • Specify hardware resources and tuning parameters per solver
    • Submit local multi-threaded and remote cloud jobs
    • Create solver ensembles with config permutations
    • Monitor runs: status, resources, metrics, logging
    • Interrupt, checkpoint and resume sessions
    • Branch session histories and compare run outcomes
  • Workflow Features
    • One-click setup workflows for common scenarios
    • Quickstart templates for one-off testing
    • Template library of parameterized configurations
    • Automated notification triggers
    • Analysis charts: performance, stability etc.
    • Integrated visualization toolkit plugins
  • Infrastructure Integrations
    • Git version control backend + diffing engine
    • CI/CD pipeline plugins (GitHub Actions, Airflow etc.)
    • Account and billing management
  • Interface Capabilities
    • Multi-document tabbed interface
    • CLI access to features beyond core TUI
    • Contextual inline help and documentation
    • Module subsystem for community extensions
    • Scriptable actions

Sketches

╦═══════════════╦═════════════════════════════════════════════════════════════════════════════╦══════╦══════╗
║ Napali        ║ miplib                                                                      ║ Warn ║ Help ║
╠═══════════════╬═════════════════════════════════════════════════════════════════════════════╬══════╬══════╣
║ Sessions >    ║ Problems:                                                                   ║ [0]  ║ F1   ║
║               ║ ▶ assign1-5-8 (MIP) - ~/data/miplib/assign1-5-8                             ║      ║      ║
║ New Session   ║                                                                             ║      ║      ║
║               ║ > Validate              Solve Options         Submit          Results       ║      ║      ║
║               ╟─────────────────────────────────────────────────────────────────────────────╢      ║      ║
║               ║ Configure Ensemble Run                                                      ║      ║      ║
║               ║                                                                             ║      ║      ║
║               ║ Name: ensemble-1                                                            ║      ║      ║
║               ║ Solvers:                                                                    ║      ║      ║
║               ║  [+] honu                                                                   ║      ║      ║
║               ║  [+] highs                                                                  ║      ║      ║
║               ║  [+] cbc                                                                    ║      ║      ║
║               ║  [+] ortools                                                                ║      ║      ║
║               ║                                                                             ║      ║      ║
║               ║ > Run ensemble                                                              ║      ║      ║
║               ╚═════════════════════════════════════════════════════════════════════════════╩══════╩══════╝
╚═══════════════╩═════════════════════════════════════════════════════════════════════════════╧══════╧══════╝

╦══════════════╦═══════════════════════════════════════════════════════════════════════════╦═══ ══╦══════╗
║ Napali       ║ miplib                                                                    ║ Warn ║ Help ║
╠══════════════╬═══════════════════════════════════════════════════════════════════════════╬══════╬══════╣
║ Sessions >   ║ Problems:                                                                 ║ [0]  ║ F1   ║
║ New Session  ║ ▶ assign1-5-8 (MIP) - ~/data/miplib/assign1-5-8                           ║      ║      ║
║              ╟───────────────────────────────────────────────────────────────────────────╢      ║      ║
║              ║ Analysis Dashboard                                                        ║      ║      ║
║              ║                                                                           ║      ║      ║
║              ║ Found Best: ███████░░░                                                    ║      ║      ║
║              ║ Path Progress: █░░░░░░░░░░░░█████░░░░░░░░░░░░███░█░░░░░░░░░░░             ║      ║      ║
║              ║ Opt Gap: █░░░░░░░░░░░░░░░░░░███░░░░░░░░░░░░░████░░░░░░░░░░░░░             ║      ║      ║
║              ║ Nodes Left: █░░░░░░░░░░░░░░░░░░░░░█████░░░░░░░░░░░░░░░░░░░░░░             ║      ║      ║
║              ╚═══════════════════════════════════════════════════════════════════════════╩══════╩══════╝
╚══════════════╩═══════════════════════════════════════════════════════════════════════════╧══════╧══════╝

╦═══════════╦═══════════════════════════════════════════════════════════════════════════════════════╦══════╦══════╗
║ Napali    ║ miplib                                                                                ║ Warn ║ Help ║
╠═══════════╬═══════════════════════════════════════════════════════════════════════════════════════╬══════╬══════╣
║ Sessions >║  model v1      ┊ 1 week ago         │Vars: 120 Const: 245 Nonzeros: 1230 Status: Opt  ║ [0]  ║  F2  ║
║ Open      ╟────┬───────────┴────────────────────┤Time: 10m Obj: $149,053 Cuts: 10 Nodes: 4,832    ║      ║      ║
║           ║ dev╎ model v2  ┊ 3 days ago         │Vars: 100 Const: 215 Nonzeros: 1050 Status: Inf  ║      ║      ║
║ Reports   ║    ╎───────────┬────────────────────┤Time: 8m Obj: NA Cuts: 5 Nodes: 342 Gap: 14%     ║      ║      ║
║           ║    ╎ model v3  ┊ 1 day ago          │Vars: 95 Const: 203 Nonzeros: 980 Status: Opt*   ║ [1]  ║      ║
║           ║    │           │                    │Time: 22m Obj: $147,261 Cuts: 23 Nodes: 8,495    ║      ║      ║
║           ║    ╰───────────┼─────> supply v3*   │Vars: 102 Const: 218 Nonzeros: 1102 Estimated    ║      ║      ║
║           ║ main ──╮       ╎ 1 hour ago         │                                                 ║      ║      ║
║           ╬════════╝       ╚════════════════════╧═════════════════════════════════════════════════╩══════╩══════║
║           ║  > Select commits to compare                                                                        ║
╚═══════════╩═════════════════════════════════════════════════════════════════════════════════════════════════════╝

napali's People

Contributors

david-r-cox avatar dependabot[bot] avatar

Stargazers

Eugene Klimov avatar  avatar Manish avatar Šimon Let avatar  avatar Leo avatar Robert A. Baykov avatar  avatar Ramy Adeeb avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.