simplex-tableau / app.py
zidouzi's picture
Create app.py
d8f8534 verified
import fractions
import gradio as gr
import numpy as np
import sympy as sp
from simplex_tableau import SimplexTableau, Extremum
def run(c, A, b, extremum, dual=False, all_vars=None, basic_vars=None, arti_vars=None, vectorize=None, solve=None):
tableau = SimplexTableau.init_tableau(
c=c,
A=A,
b=b,
extremum=Extremum.MAX if extremum else Extremum.MIN,
dual=dual,
all_vars=all_vars,
basic_vars=basic_vars,
arti_vars=arti_vars,
vectorize=np.vectorize(fractions.Fraction) if vectorize == "Fraction" else
(np.vectorize(sp.Rational) if vectorize == "Sympy" else None),
solve=solve
)
print(tableau)
for i in tableau:
print(i)
print()
try:
next(tableau)
except StopIteration as e:
print(e.args[0])
if __name__ == '__main__':
interface = gr.Interface(
fn=run,
inputs=[
gr.Dataframe(label="c", type="number", optional=True),
gr.Dataframe(label="A", type="number", optional=True),
gr.Dataframe(label="b", type="number", optional=True),
gr.Checkbox(label="extremum"),
gr.Checkbox(label="dual"),
gr.Dataframe(label="all_vars", type="string", optional=True),
gr.Dataframe(label="basic_vars", type="number", optional=True),
gr.Dataframe(label="arti_vars", type="number", optional=True),
gr.Radio(label="vectorize", choices=["No", "Fraction", "Sympy"]),
gr.Checkbox(label="solve")
],
outputs="text"
)
interface.launch()