You are on page 1of 1

import numpy as np

cj=np.array([12.0,16.0,0.0,0.0,0.0])
conditions=np.array([(10.0,20.0,1.0,0.0,120.0),(8.0,8.0,0.0,1.0,80.0)])
cb=np.array([0.0,0.0])
ratio=np.array([0.0,0.0])
cjminzj=np.array([0.0,0.0,0.0,0.0,0.0])

def calcjminzj():
zj=np.array([0.0,0.0,0.0,0.0,0.0])
flag=0
for j in range (0,len(conditions[0])):
t=[]
for i in range(0,len(conditions)):
t.append(cb[i]*conditions[i][j])
for k in range(0,len(t)):
zj[j]+=t[k]
cjminzj[j]=cj[j]-zj[j]
if(cjminzj[j]>0):
flag=1
print(cjminzj)
return zj,flag

def simplex():
keycolIndex=np.where(cjminzj==cjminzj.max())[0][0]
for i in range(0,len(ratio)):
if(conditions[i][keycolIndex]!=0):
ratio[i]=conditions[i][-1]/conditions[i][keycolIndex]
keyrowIndex=np.where(ratio==ratio.min())[0][0]
keyele=conditions[keyrowIndex][keycolIndex]
keyrow=conditions[keyrowIndex]
keycol=[0.0,0.0]
for i in range(0,len(conditions)):
keycol[i]=round(conditions[i][keycolIndex],8)
cb[keyrowIndex]=cj[keycolIndex]
print(cb)
temp=conditions.copy()
for i in range(0,len(temp)):
if(temp[i]==keyrow).all():
for j in range(0,len(temp[i])):
temp[i][j]/=keyele;
else:
for j in range(0,len(temp[i])):
temp[i][j]=temp[i][j]-((keycol[i]*keyrow[j])/keyele)
for i in range(0,len(conditions)):
for j in range(0,len(conditions[0])):
conditions[i][j]=temp[i][j]

zj,flag=calcjminzj()
simplex()

while(flag):
zj,flag=calcjminzj()
simplex()
print("The maximized value is:",zj[-1])

You might also like