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

Architecture discussion #2

Open
pedromxavier opened this issue Feb 21, 2023 · 2 comments
Open

Architecture discussion #2

pedromxavier opened this issue Feb 21, 2023 · 2 comments
Labels
documentation Improvements or additions to documentation

Comments

@pedromxavier
Copy link
Collaborator

pedromxavier commented Feb 21, 2023

From @bernalde's sketch of the architecture on the last dev call, I'm writing this issue with a mermaid flowchart.
This could be placed in the documentation afterwards.

---
title: General Architecture
---
%%{init: {'theme':'neutral'}}%%
flowchart LR;
    subgraph LEGEND ["Legend"]
        direction LR
      start1[ ] --->|"Model I/O"| stop1[ ]
      style start1 height:0px;
      style stop1 height:0px;
      start2[ ] -..->|"Data I/O"| stop2[ ]
      style start2 height:0px;
      style stop2 height:0px;    
    end


    MODEL["<div style='font-family: cursive'>opt f(x)<br>g(x) in S</div>"];
    OPTMODEL["<code>opt f(x)<br>g(x) in S</code>"];
    QUBOMODEL["<code>opt x' Q x<br>x in {0, 1}</code>"];

    subgraph QUBO ["QUBO.jl"]
        direction LR;
        TOQUBO(["ToQUBO.jl"]);
        QUBODRIVERS(["QUBODrivers.jl"]);
        QUBOTOOLS(["QUBOTools.jl"]);

        QUBOTOOLS <-.-> QUBODRIVERS;
        QUBOTOOLS <-.-> TOQUBO;
    end

    TOQUBO --> QUBOMODEL;

    subgraph SAMPLERS ["QUBODrivers.jl-powered Samplers"]
        direction LR;
        DWAVE(["DWave.jl"]);
        DWAVENEAL(["DWaveNeal.jl"]);
        QUANTUMANNEALINGINTERFACE(["QuantumAnnealingInterface.jl"]);
        SAMPLERSELSE(["..."]);
    end

        QUBODRIVERS <-.-> DWAVE;
        QUBODRIVERS <-.-> DWAVENEAL;
        QUBODRIVERS <-.-> QUANTUMANNEALINGINTERFACE;
        QUBODRIVERS <-.-> SAMPLERSELSE;
    
    subgraph MIQP ["MIQP Solvers"]
        direction LR
        GUROBI(["Gurobi"]);
        CPLEX(["CPLEX"]);
        BARON(["BARON"]);
        MIQPELSE(["..."]);
    end

        QUBOMODEL --> DWAVE;
        QUBOMODEL --> DWAVENEAL;
        QUBOMODEL --> QUANTUMANNEALINGINTERFACE;
        QUBOMODEL --> SAMPLERSELSE;

        QUBOMODEL --> GUROBI;
        QUBOMODEL --> CPLEX;
        QUBOMODEL --> BARON;
        QUBOMODEL --> MIQPELSE;
   
    subgraph JUMP ["JuMP"]
        direction LR
        MOI(["MOI"]);
    end

    MODEL --> MOI;
    MOI ---> OPTMODEL --> TOQUBO;
    MOI ---> QUBOMODEL;
Loading

Feel free to edit it.

@pedromxavier pedromxavier added the documentation Improvements or additions to documentation label Feb 24, 2023
@pedroripper pedroripper transferred this issue from psrenergy/ToQUBO.jl May 4, 2023
@bernalde
Copy link

bernalde commented Sep 9, 2023

Can't this be closed given the architecture design from the paper? Do we need to still talk about PBO?

@pedromxavier
Copy link
Collaborator Author

I think this can be closed after moving this to the documentation. What about using https://github.com/pedromxavier/DocumenterDiagrams.jl?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants