# Example: Advertising with HIM/LIP/HIW and Budget constraints
# This uses the penalties and budget as a goal.
with(LinearAlgebra):
interface(rtablesize=11);# Vars: x1 x2 s1m s1p s2m s2p s3m s3p s4m s4p (and rhs)
A:=<<0,7,10,5,100>|<0,3,5,4,60>|<200,1,0,0,0>|<0,-1,0,0,0>|<100,0,1,0,0>|<0,0,-1,0,0>|<50,0,0,1,0>|<0,0,0,-1,0>|<0,0,0,0,1>|<1,0,0,0,-1>|<0,40,60,35,600>>;# Clear the values above the identity columns for an initial BFS:
A2:=RowOperation(A,[1,2],-200):
A3:=RowOperation(A2,[1,3],-100):
A4:=RowOperation(A3,[1,4],-50);# Pivot in Column 1, and perform Ratio Test:
evalf([40/7, 60/10, 35/5, 600/100]);#Pivot in Column 1, Row 2:
A5:=RowOperation(A4,2,1/7):
A6:=RowOperation(A5,[1,2],2650):
A7:=RowOperation(A6,[3,2],-10):
A8:=RowOperation(A7,[4,2],-5):
A9:=RowOperation(A8,[5,2],-100);# Pivot in Column 4, and perform Ratio Test: Tie between 3 and 5. Choose 3:
A10:=RowOperation(A9,3,7/10):
A11:=RowOperation(A10,[1,3],1250/7):
A12:=RowOperation(A11,[2,3],1/7):
A13:=RowOperation(A12,[4,3],-5/7):
A14:=RowOperation(A13,[5,3],-100/7);# Pivot in Column 2, Row 5:
A15:=RowOperation(A14,5,1/10):
A16:=RowOperation(A15,[1,5],75):
A17:=RowOperation(A16,[2,5],-1/2):
A18:=RowOperation(A17,[4,5],-3/2):
A19:=RowOperation(A18,[3,5],-1/2);# Pivot in Column 10, Row 4:
A20:=RowOperation(A19,4,20/3):
A21:=RowOperation(A20,[1,4],13/2):
A22:=RowOperation(A21,[2,4],-1/20):
A23:=RowOperation(A22,[3,4],-1/20):
A24:=RowOperation(A23,[5,4],1/10);# Optimal Tableau!