HEURISTIC METHOD (2 variables) - pre-alpha TI83 version

This project is in development, this is an alpha version.

This method is inspired by Data Envelopment Analysis, and it intended to be applied in Linear Programming for a Maximization setup where two variable objective function and high number of constraints.

maximize Z, which is the objective function

where Z = C * X AND A * X ≤ b

where C, X, and b are vectors; and A is a Matrix

e.g. max Z;

C1* X1 + C2* X2 = Z

A1* X1 + A2* X2 ≤ b1

A3* X1 + A4* X2 ≤ b2

A5* X1 + A5* X2 ≤ b3

INPUT

C = { C1, C2 } = L1

b = { b1, b2, b3 } = L2

A = [ A1 A2

A3 A4

A5 A6 ] = [A]

OUTPUT

X = [ X1 X2 ] = LE

Z = Z

This code is written for a TI83 calculator

Dim(L1)→N
Dim(L2)→M
M→Dim(L6)
M→Dim(LA)
M→Dim(L8)
{M,N,}→Dim[B]
FOR(C,1,M,1)
 FOR(D,1,N1,)
  [A](C,D)/L2(C)→[B](C,D)
 END
END
0→X
0→Y
0→Z
FOR(C,1,M,1)
 FOR(D,1,N,1)
  ([B](C,D)-L1(D))^2+X→X
  [B](C,D)^2+Y→Y
  L1(D)^2+Z→Z
 END
 √(X)→L6(C)
 0→X
 √(Y)→LA(C)
 0→Y 
 √(Z)→Z
END
FOR(C,1,M,1)
 (LA(C)^2-L6(C)^2-Z^2)/(-2*L6(C)*Z)→L8(C)
 L6(C)*L8(C)→L9(C)
 COS^-1(L8(C))→L8(C)
END
0→Dim(LB)
N→Dim(LB)
0→Dim(L7)
0→X
0→Dim(LF)
0→Dim(LE)
DISP"CALCULATING SMALLEST PROJECTED DISTANCE"
FOR(C,1,M,1)
 IF L9(C)=MIN(L9)
  THEN
  X+1→X
  X→Dim(LF)
  X→Dim(LE)
  C→LF(X)
  L8(C)→LE(X)
 END
END
DISP"CALCULATING SMALLEST ANGLE FOR SMALLEST PROJECTED DISTANCE"
FOR (C,1,X,1)
 IF LE(C)
  THEN
  LF(C)→K
 END
END
0→Dim(LB)
0→X
0→Y
DISP"VERIFY BOUNDARIES FORMED BY FIRST CONSTRAINT REFERENCE"
FOR (C,1,M,1)
 IF C ≠ K
  THEN
  FOR (D,1,N,1)
   IF [B](C,D)<[B](K,D)
    THEN
    X+1→X
   END
   IF X=N
    THEN
    Y+1→Y
    Y→Dim(LB)
    C→LB(Y)
   END
  END
 END
END
0→S
IF Dim(LB)=(M-1)
 THEN
 1→S
END
DISP"MAPPING OF BACK-UP CONSTRAINTS"
0→X
0→Y
[B](K,1)→[B](M+1,1)
0→[B](M+1,2)
0→[B](M+2,1)
[B](K,2)→[B](M+2,2)
M→T
FOR(C,1,2,1)
 FOR(D,1,N,1)
  ([B](C+T,D)-L1(D))^2+X→X
  [B](C+T,D)+Y→Y
 END
 √(X)→L6(C+T)
 0→X
 √(Y)→LA(C+T)
 0→Y
END
O→Q
2→Dim(LF)
FOR(C,1,2,1)
 FOR(D,1,N,1)
  ([B](K,D)-[B]((C+T),D))^2+Q→Q
 END
 √(Q)→LF(C)
 0→Q
END
FOR(C,1,2,1)
 (LF(C)^2-L6(C+T)^2-L6(K)^2)/(-2*L6(C+T)*L6(K))→V
 COS^-1(V)→V
 (LA(C+T)^2-Z^2-L6(C+T)^2)/(-2*Z*L6(C+T))→W
 COS^-1(W)→W
 IF(L8(K)+W=V
  THEN
  C+T→L
 END
END
DISP"BACK-UP CONSTRAINTS AVAILABLE"
IF S=1
 THEN
 DISP"FIRST CONSTRAINT REFERENCE PROVIDES BOUNDS FOR SOLUTION, BACK-UP CONSTRAINTS USED TO DETERMINE SOLUTION"
 {N,N}→Dim[C]
 
  FOR(D,1,2,1)
   [B](K,D)→[C](1,D)
   [B](L,D)→[C](2,D)
  END
  
 0→J
 N→Dim(L6)
 [C]^-1→[C]
 
  FOR(C,1,2,1)
   
   FOR(D,1,2,1)
    [C](C,D)+J→J
   END
   
  J→L6(C)
  0→J
  END
  
  0→Z
  
  FOR(C,1,N,1)
   L1(C)*L6(C)+Z→Z
  END
  
  DISP"OPTIMAL QUANTITIES FOR EACH VARIABLE ARE"
  DISP L6
  DISP"OPTIMAL SOLUTION IS"
  DISP Z
END 
 
DISP"BEGIN REPLACING PRIMARY CONSTRAINTS IN A NEW MATRIX AND ERASING SECONDARY CONSTRAINTS"
Dim[B]→Dim[D]
Dim[LB]→Y
I→0
FOR(C,1,T+2,1)
 X→0
 
  FOR(E,1,Y,1)
  
   IF C ≠ LB(E)
    THEN
    X+1→X
    
     IF X=Y
      THEN
      I+1→I
      I→Dim LC
      C→LC(I)
      
       IF C=K
        THEN
        I→K
       END
       
       IF C=L
        THEN
        I→L
       END
     END
   END
  END
END
T+2-Y→T
FOR(C,1,T,1)
 FOR(D,1,N,1)
  [B](LC(C),D)→[D](C,D)
 END
END 
 
{T,N}→[D]
DISP"RECACULATING DISTANCES"
0→X
0→Y
T→Dim(L6)
T→Dim(LA)
T→Dim(L8)
FOR(C,1,T,1)
 FOR(D,1,N,1)
  ([D](C,D)-L1(D))^2+X→X
  [B](C,D)^2+Y→Y
 END
 √(X)→L6(C)
 0→X
 √(Y)→LA(C)
 0→Y
END
FOR(C,1,M,1)
 (LA(C)^2-LC(C)^2-Z^2)/(-2*L6(C)*Z)→L8(C)
 L6(C)*L8(C)→L9(C)
 COS^-1(L8(C))→L8(C)
END
0→X
DISP"BEGIN LOCATING NEXT REFERENCE CONSTRAINT"
T→Dim(LK)
0→Dim(L4)
FOR(C,1,T,1)
 FOR(D,1,N,1)
  ([D](C,D)-[D](K,D))^2+X→X
 END
 √(X)→LK(C)
END
0→X
FOR(C,1,T,1)
 IF C ≠ K
  THEN
  FOR(D,1,N,1)
   (LK(C)^2-LA(K)^2-LA(C)^2)/(-2*LA(K)*LA(C))→V
   COS^-1(V)→V
  END
  IF L8(K)+L8(C)=V
   THEN
   X+1→X
   X→Dim(L4)
   C→L4(X)
  END
 END
END
X→Dim(L7)
FOR (C,1,X,1)
 SIN^-1((L9(L4(C))-L9(K))/(LK(L4(C))))→L7(C)
END
FOR(C,1,X,1)
 IF L7(C)=MIN L7
  THEN
  L4(C)→J
 END
END
END
{N,N}→Dim[C]
FOR(D,1,2,1)
 [D](K,D)→[C](1,D)
 [D](J,D)→[C](2,D)
END
0→E
N→Dim(L6)
[C]^-1→[C]
FOR(C,1,2,1)
 FOR(D,1,2,1)
  [C](C,D)+J→J
 END
 J→L6(C)
 0→J
END
0→Z
FOR(C,1,N,1)
 L1(C)*L6(C)+Z→Z
END
DISP"OPTIMAL QUANTITIES FOR EACH VARIABLE ARE"
DISP L6
DISP"OPTIMAL SOLUTION IS"
DISP Z