-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSimplex.py
More file actions
64 lines (40 loc) · 2.03 KB
/
Copy pathSimplex.py
File metadata and controls
64 lines (40 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
class Tableau:
def __init__(self):
self.size = {"eq": int(input("eq: ")),"var": int(input("var: "))}
self.vars = []
self.var_labels = ["P"]
for var_num in range(self.size["var"]):
self.var_labels.append("x{}".format(var_num))
for slack_num in range(self.size["eq"] - 1):
self.var_labels.append("s{}".format(slack_num))
self.var_labels.append("val")
for eq_num in range(self.size["eq"]):
self.vars.append([int(eq_num == 0)])
for var in self.var_labels[1:1+self.size["var"]]:
self.vars[eq_num].append(int(input("eq.{}, var.{}: ".format(eq_num, var))))
for slack_num in range(self.size["eq"] - 1):
self.vars[eq_num].append(int(eq_num == slack_num + 1))
self.vars[eq_num].append(int(input("eq.{} val: ".format(eq_num))))
def display(self):
for eq_num in range(self.size["eq"]):
print(" | ".join(map(str, self.vars[eq_num])))
for eq_num in range(self.size["eq"]):
string = []
for var_num, var_name in enumerate(self.var_labels[0:-1]):
string.append(str(self.vars[eq_num][var_num]) + var_name)
print(" + ".join(string) + " = {}".format(self.vars[eq_num][-1]))
def interpret(self):
pass
def pivot(self, pivot):
divisor = self.vars[pivot["eq"]][pivot["var"]]
for var_num in range(1 + self.size["var"] + self.size["eq"] - 1 + 1):
self.vars[pivot["eq"]][var_num] /= divisor
for eq_num in range(self.size["eq"]):
if eq_num != pivot["eq"]:
multiplier = self.vars[eq_num][pivot["var"]]
for var_num in range(1 + self.size["var"] + self.size["eq"] - 1 + 1):
self.vars[eq_num][var_num] -= multiplier * self.vars[pivot["eq"]][var_num]
tableau = Tableau()
tableau.display()
tableau.pivot({"eq": int(input("pivoteq: ")), "var": int(input("pivotvar: "))})
tableau.display()