METODE SIMPLEKS DENGAN VISUAL BASIC

Nama  : Esti Yuliana
NIM    : SIR200938
Dosen : Nahar Mardiyantoro, M. Kom

Hi, selamat pagi… disini pagi yang dingin, pagi ini saya akan memposting bagaimana menyelesaikan suatu program linear menggunakan metode simpleks kemudian dituangkan dalam program Visual Basic. Berikut adalah contoh kasusnya :

Multiband enterprises adalah suatu perusahaan yang memproduksi dua macam produk, yaitu radio portabel (PR) dan radio citizen band (CB). Manajer pemasaran menyatakan bahwa perusahaan selalu dapat menjual semua produk dihasilkan. Selanjutnya sang manajer pemasaran ini bertanya ke manajer operasi tentang besarnya kapasitas produksi/bulan. Manajer operasi menyatakan bahwa kapasitas output tergantung produk mana yang diproduksi. Selanjutnya manajer operasi menyatakan bahwa ada 3 jenis pekerjaan dilakukan dalam pembuatan produk radio tersebut, yaitu subbassembly, assembly dan inspeksi. Kedua produk tersebut membutuhkan waktu pengerjaan yang berbeda untuk setiap jenis pekerjaan tadi. Jadi kapasitas produksinya tergantung pada produk mana yang akan diproduksi.
Waktu yang tersedia untuk pekerjaan subassembly setiap bulannya adalah 326 jam, untuk assembly adalah 354 jam dan inspeksi adalah 62 jam. Sedangkan setiap unit radio CB membutuhkan 0,4 jam untuk pekerjaan subassembly, 0,5 jam untuk assemblya dan 0,05 jam untuk inspeksi. Radio portable untuk setiap unitnya membutuhkan waktu 0,5 jam untuk pekerjaan subassembly, 0,3 jam untuk assembly dan 0,1 jam inspeksi. Wakil direktur menyatakan bahwa untuk setiap CB yang terjual diperoleh keuntungan sebesar $50 dan untuk setiap PR didapat $40. Jadi beberapa kapasitas output dari multiband setiap bulannya (beberapa CB dan PR yang harus diproduksi) agar keuntungan yang diperoleh sebesar mungkin?

Cara penyelesaian :
Langkah pertama

Untuk menyelesaikan contoh kasus diatas, hal pertama yang dilakukan adalah membuat model matematikanya.
0,5 x1 + 2 x2
Sumber daya (z) adalah memaksimalkan jumlah produk
Max z = 50 x1 + 40 x2
Kendala =
0,4 x1 + 0,5 x2
≤326
0,5 x1 + 0,3 x2≤ 354
0,05 x1 + 0,1 x2≤ 62
x1, x2 ≥0

Langkah kedua
Pengubahan bentuk baku
Z = 50 x1 + 40 x2 + 0 S1 + 0 S2 + 0 S3
0,4 x1 + 0,5 x2 + S1 = 326
0,5 x1 + 0,3 x2 + S1= 354
0,05 x1 + 0,1 x2 + S1 = 62



Kolom kerja adalah nilai negative terbesar
Baris pivot adalah perbandingan nilai solusi dengan nilai pada kolom kerja.
Kemudian rubah nilai pada baris pivot dengan cara membaginya dengan 0,5 (nilai pivot/ perpotongan antara x dan S.
Lakukan iterasi sampai baris pertama pada tabel tidak ada nilai negative.

Berikut adalah perhitungannya dengan menggunakan VB.

 
Berikut source coding lengkapnya :

Private Sub Command1_Click()
'txt_cb.text = NK3
'txt_pr.text = NK2

If s2_cb.Caption = "CB" Then
    txt_cb.Text = NK3.Text
End If
   
            If s1_pr.Caption = "PR" Then
              txt_pr.Text = NK2

            End If
           
                If Label19.Caption = "CB" Then
                    txt_cb.Text = NK4
                End If
           
                        If Label19.Caption = "PR" Then
                            txt_pr.Text = NK4
                        End If

End Sub
'
Private Sub DISS_Click()
'kolom pivot
If Int(X1A) < Int(X2A) Then
kk1 = X1A
KK2 = X1B
KK3 = X1C
KK4 = X1D
Label21.Caption = "CB"
VGANTI_BP = "CB"
    Else
        kk1 = X2A
        KK2 = X2B
        KK3 = X2C
        KK4 = X2D
        Label22.Caption = "PR"
        VGANTI_BP = "PR"
    End If
   
     'mencari baris pivot
    If KK2 = 0 Then
            a = 0
            Else
        a = NK2 / KK2
          If KK3 = 0 Then
              b = 0
            Else
                b = NK3 / KK3
            If KK4 = 0 Then
                c = 0
             Else
                c = NK4 / KK4
           
        End If
    End If
    End If
      
        
        'mencari baris baru
    If a < b And b < c And a < c Then
    x = a
    f = KK2
        P = Z2 / f
        Q = X1B / f
        R = X2B / f
        s = S1B / f
        T = S2B / f
        U = S3B / f
        V = NK2 / f
    Z1.Text = Z1 - (kk1 * P)
    X1A.Text = X1A - (kk1 * Q)
    X2A.Text = X2A - (kk1 * R)
    S1A.Text = S1A - (kk1 * s)
    S2A.Text = S2A - (kk1 * T)
    S3A.Text = S3A - (kk1 * U)
    NK1.Text = NK1 - (kk1 * V)
        Z3.Text = Z1 - (KK3 * P)
        X1C.Text = X1C - (KK3 * Q)
        X2C.Text = X2C - (KK3 * R)
        S1C.Text = S1C - (KK3 * s)
        S2C.Text = S2C - (KK3 * T)
        S3C.Text = S3C - (KK3 * U)
        NK3.Text = NK3 - (KK3 * V)
    Z4.Text = Z4 - (KK4 * P)
    X1D.Text = X1D - (KK4 * Q)
    X2D.Text = X2D - (KK4 * R)
    S1D.Text = S1D - (KK4 * s)
    S2D.Text = S2D - (KK4 * T)
    S3D.Text = S3D - (KK4 * U)
    NK4.Text = NK4 - (KK4 * V)
        Z2.Text = P
        X1B.Text = Q
        X2B.Text = R
        S1B.Text = s
        S2B.Text = T
        S3B.Text = U
        NK2.Text = V
  s1_pr.Caption = VGANTI_BP
                                'menampilkan hasil akhir
                                'If s1_pr.Caption = "PR" Then
                                        'txt_pr.text = NK2
                                'End If
   
    
   
                            'If a < b And b < c And a = c Then'
                            'tak mungkin'
                           
                           
                ElseIf a < b And b > c And a > c Then
                x = c
                f = KK4
                  P = Z4 / f
                    Q = X1D / f
                    R = X2D / f
                    s = S1D / f
                    T = S2D / f
                    U = S3D / f
                    V = NK4 / f
                Z1.Text = Z1 - (kk1 * P)
                X1A.Text = X1A - (kk1 * Q)
                X2A.Text = X2A - (kk1 * R)
                S1A.Text = S1A - (kk1 * s)
                S2A.Text = S2A - (kk1 * T)
                S3A.Text = S3A - (kk1 * U)
                NK1.Text = NK1 - (kk1 * V)
                    Z2.Text = Z2 - (KK2 * P)
                    X1B.Text = X1B - (KK2 * Q)
                    X2B.Text = X2B - (KK2 * R)
                    S1B.Text = S1B - (KK2 * s)
                    S2B.Text = S2B - (KK2 * T)
                    S3B.Text = S3B - (KK2 * U)
                    NK2.Text = NK2 - (KK2 * V)
                Z3.Text = Z1 - (KK3 * P)
                X1C.Text = X1C - (KK3 * Q)
                X2C.Text = X2C - (KK3 * R)
                S1C.Text = S1C - (KK3 * s)
                S2C.Text = S2C - (KK3 * T)
                S3C.Text = S3C - (KK3 * U)
                NK3.Text = NK3 - (KK3 * V)
                    Z4.Text = P
                    X1D.Text = Q
                    X2D.Text = R
                    S1D.Text = s
                    S2D.Text = T
                    S3D.Text = U
                    NK4.Text = V
                Label19.Caption = "CB"
    ElseIf a < b And b > c And a < c Then
    x = a
    f = KK2
      P = Z2 / f
        Q = X1B / f
        R = X2B / f
        s = S1B / f
        T = S2B / f
        U = S3B / f
        V = NK2 / f
    Z1.Text = Z1 - (kk1 * P)
    X1A.Text = X1A - (kk1 * Q)
    X2A.Text = X2A - (kk1 * R)
    S1A.Text = S1A - (kk1 * s)
    S2A.Text = S2A - (kk1 * T)
    S3A.Text = S3A - (kk1 * U)
    NK1.Text = NK1 - (kk1 * V)
        Z3.Text = Z1 - (KK3 * P)
        X1C.Text = X1C - (KK3 * Q)
        X2C.Text = X2C - (KK3 * R)
        S1C.Text = S1C - (KK3 * s)
        S2C.Text = S2C - (KK3 * T)
        S3C.Text = S3C - (KK3 * U)
        NK3.Text = NK3 - (KK3 * V)
    Z4.Text = Z4 - (KK4 * P)
    X1D.Text = X1D - (KK4 * Q)
    X2D.Text = X2D - (KK4 * R)
    S1D.Text = S1D - (KK4 * s)
    S2D.Text = S2D - (KK4 * T)
    S3D.Text = S3D - (KK4 * U)
    NK4.Text = NK4 - (KK4 * V)
         Z2.Text = P
        X1B.Text = Q
        X2B.Text = R
        S1B.Text = s
        S2B.Text = T
        S3B.Text = U
        NK2.Text = V
     s1_pr.Caption = VGANTI_BP
    
                           'menampilkan hasil akhir
                                'f s1_pr.Caption = "PR" Then
                                        'txt_pr.text = NK2
                               ' End If
                               
    
                              'ElseIf a < B And B > c And a = c Then'
                            'tak mungkin'
                              'ElseIf a < b And b = c And a > c Then
                              'tak mungkin'
                    ElseIf a < b And b = c And a < c Then
                    x = a
                    f = KK2
                      P = Z2 / f
                        Q = X1B / f
                        R = X2B / f
                        s = S1B / f
                        T = S2B / f
                        U = S3B / f
                        V = NK2 / f
                    Z1.Text = Z1 - (kk1 * P)
                    X1A.Text = X1A - (kk1 * Q)
                    X2A.Text = X2A - (kk1 * R)
                    S1A.Text = S1A - (kk1 * s)
                    S2A.Text = S2A - (kk1 * T)
                    S3A.Text = S3A - (kk1 * U)
                    NK1.Text = NK1 - (kk1 * V)
                        Z3.Text = Z1 - (KK3 * P)
                        X1C.Text = X1C - (KK3 * Q)
                        X2C.Text = X2C - (KK3 * R)
                        S1C.Text = S1C - (KK3 * s)
                        S2C.Text = S2C - (KK3 * T)
                        S3C.Text = S3C - (KK3 * U)
                        NK3.Text = NK3 - (KK3 * V)
                   
                     Z4.Text = Z4 - (KK4 * P)
                    X1D.Text = X1D - (KK4 * Q)
                    X2D.Text = X2D - (KK4 * R)
                    S1D.Text = S1D - (KK4 * s)
                    S2D.Text = S2D - (KK4 * T)
                    S3D.Text = S3D - (KK4 * U)
                    NK4.Text = NK4 - (KK4 * V)
                        Z2.Text = P
                        X1B.Text = Q
                        X2B.Text = R
                        S1B.Text = s
                        S2B.Text = T
                        S3B.Text = U
                        NK2.Text = V
                     s1_pr.Caption = VGANTI_BP
                                'menampilkan hasil akhir
                                 'If s1_pr.Caption = "PR" Then
                                  '      txt_pr.text = NK2
                                 'End If
                               
                               
                            'ElseIf a < b And b = c And a = c Then
                            'tak mungkin'
    ElseIf a > b And b < c And a > c Then
    x = b
    f = KK3
     P = Z3 / f
        Q = X1C / f
        R = X2C / f
        s = S1C / f
        T = S2C / f
        U = S3C / f
        V = NK3 / f
    Z1.Text = Z1 - (kk1 * P)
    X1A.Text = X1A - (kk1 * Q)
    X2A.Text = X2A - (kk1 * R)
    S1A.Text = S1A - (kk1 * s)
    S2A.Text = S2A - (kk1 * T)
    S3A.Text = S3A - (kk1 * U)
    NK1.Text = NK1 - (kk1 * V)
        Z2.Text = Z2 - (KK2 * P)
        X1B.Text = X1B - (KK2 * Q)
        X2B.Text = X2B - (KK2 * R)
        S1B.Text = S1B - (KK2 * s)
        S2B.Text = S2B - (KK2 * T)
        S3B.Text = S3B - (KK2 * U)
        NK2.Text = NK2 - (KK2 * V)
    Z4.Text = Z4 - (KK4 * P)
    X1D.Text = X1D - (KK4 * Q)
    X2D.Text = X2D - (KK4 * R)
    S1D.Text = S1D - (KK4 * s)
    S2D.Text = S2D - (KK4 * T)
    S3D.Text = S3D - (KK4 * U)
    NK4.Text = NK4 - (KK4 * V)
        Z3.Text = P
        X1C.Text = Q
        X2C.Text = R
        S1C.Text = s
        S2C.Text = T
        S3C.Text = U
        NK3.Text = V
     s2_cb.Caption = VGANTI_BP
                        'manampilkan hasil aKhir
                           'If s2_cb.Caption = "CB" Then
                               ' txt_cb.text = NK3
                           'End If
                          
                          
                    ElseIf a > b And b < c And a < c Then
                    x = b
                    f = KK3
                      P = Z3 / f
                        Q = X1C / f
                        R = X2C / f
                        s = S1C / f
                        T = S2C / f
                        U = S3C / f
                        V = NK3 / f
                    Z1.Text = Z1 - (kk1 * P)
                    X1A.Text = X1A - (kk1 * Q)
                    X2A.Text = X2A - (kk1 * R)
                    S1A.Text = S1A - (kk1 * s)
                    S2A.Text = S2A - (kk1 * T)
                    S3A.Text = S3A - (kk1 * U)
                    NK1.Text = NK1 - (kk1 * V)
                        Z2.Text = Z2 - (KK2 * P)
                        X1B.Text = X1B - (KK2 * Q)
                        X2B.Text = X2B - (KK2 * R)
                        S1B.Text = S1B - (KK2 * s)
                        S2B.Text = S2B - (KK2 * T)
                        S3B.Text = S3B - (KK2 * U)
                        NK2.Text = NK2 - (KK2 * V)
                    Z4.Text = Z4 - (KK4 * P)
                    X1D.Text = X1D - (KK4 * Q)
                    X2D.Text = X2D - (KK4 * R)
                    S1D.Text = S1D - (KK4 * s)
                    S2D.Text = S2D - (KK4 * T)
                    S3D.Text = S3D - (KK4 * U)
                    NK4.Text = NK4 - (KK4 * V)
                        Z3.Text = P
                        X1C.Text = Q
                        X2C.Text = R
                        S1C.Text = s
                        S2C.Text = T
                        S3C.Text = U
                        NK3.Text = V
                 s2_cb.Caption = VGANTI_BP
                 'manampilkan hasil aKhir
                            'If s2_cb.Caption = "CB" Then
                            'txt_cb.text = NK3
                           'End If
    ElseIf a > b And b < c And a = c Then
    x = b
    f = KK3
      P = Z3 / f
        Q = X1C / f
        R = X2C / f
        s = S1C / f
        T = S2C / f
        U = S3C / f
        V = NK3 / f
    Z1.Text = Z1 - (kk1 * P)
    X1A.Text = X1A - (kk1 * Q)
    X2A.Text = X2A - (kk1 * R)
    S1A.Text = S1A - (kk1 * s)
    S2A.Text = S2A - (kk1 * T)
    S3A.Text = S3A - (kk1 * U)
    NK1.Text = NK1 - (kk1 * V)
        Z2.Text = Z2 - (KK2 * P)
        X1B.Text = X1B - (KK2 * Q)
        X2B.Text = X2B - (KK2 * R)
        S1B.Text = S1B - (KK2 * s)
        S2B.Text = S2B - (KK2 * T)
        S3B.Text = S3B - (KK2 * U)
        NK2.Text = NK2 - (KK2 * V)
     Z4.Text = Z4 - (KK4 * P)
    X1D.Text = X1D - (KK4 * Q)
    X2D.Text = X2D - (KK4 * R)
    S1D.Text = S1D - (KK4 * s)
    S2D.Text = S2D - (KK4 * T)
    S3D.Text = S3D - (KK4 * U)
    NK4.Text = NK4 - (KK4 * V)
        Z3.Text = P
        X1C.Text = Q
        X2C.Text = R
        S1C.Text = s
        S2C.Text = T
        S3C.Text = U
        NK3.Text = V
      s2_cb.Caption = VGANTI_BP
                 'manampilkan hasil aKhir
                           'If s2_cb.Caption = "CB" Then
                           'txt_cb.text = NK3
                           'End If
       
                    ElseIf a > b And b > c And a > c Then
                    x = c
                    f = KK4
                      P = Z4 / f
                        Q = X1D / f
                        R = X2D / f
                        s = S1D / f
                        T = S2D / f
                        U = S3D / f
                        V = NK4 / f
                    Z1.Text = Z1 - (kk1 * P)
                    X1A.Text = X1A - (kk1 * Q)
                    X2A.Text = X2A - (kk1 * R)
                    S1A.Text = S1A - (kk1 * s)
                    S2A.Text = S2A - (kk1 * T)
                    S3A.Text = S3A - (kk1 * U)
                    NK1.Text = NK1 - (kk1 * V)
                    Z2.Text = Z2 - (KK2 * P)
                        X1B.Text = X1B - (KK2 * Q)
                        X2B.Text = X2B - (KK2 * R)
                        S1B.Text = S1B - (KK2 * s)
                        S2B.Text = S2B - (KK2 * T)
                        S3B.Text = S3B - (KK2 * U)
                        NK2.Text = NK2 - (KK2 * V)
                    Z3.Text = Z1 - (KK3 * P)
                    X1C.Text = X1C - (KK3 * Q)
                    X2C.Text = X2C - (KK3 * R)
                    S1C.Text = S1C - (KK3 * s)
                    S2C.Text = S2C - (KK3 * T)
                    S3C.Text = S3C - (KK3 * U)
                    NK3.Text = NK3 - (KK3 * V)
                        Z4.Text = P
                        X1D.Text = Q
                        X2D.Text = R
                        S1D.Text = s
                        S2D.Text = T
                        S3D.Text = U
                        NK4.Text = V
             Label19.Caption = VGANTI_BP
           
       
        'ElseIf a > b And b > c And a < c Then
        'tak mungkin'
        '/ElseIf a > b And b > c And a = c Then
        'tak mungkin'
        'ElseIf a > b And b = c And a > c Then
        'tak mungkin'
        'ElseIf a > b And b = c And a < c Then
        'tak mungkin'
        'ElseIf a > b And b = c And a = c Then
        'tak mungkin'
        'ElseIf a = b And b < c And a > c Then
        'tak mungkin'
        'ElseIf a = b And b < c And a < c Then
        'tak mungkin'
        'ElseIf a = b And b < c And a = c Then
        'tak mungkin'
    Else
    If a = b And b > c And a > c Then
    x = c
    f = KK4
        P = Z4 / f
        Q = X1D / f
        R = X2D / f
        s = S1D / f
        T = S2D / f
        U = S3D / f
        V = NK4 / f
    Z1.Text = Z1 - (kk1 * P)
    X1A.Text = X1A - (kk1 * Q)
    X2A.Text = X2A - (kk1 * R)
    S1A.Text = S1A - (kk1 * s)
    S2A.Text = S2A - (kk1 * T)
    S3A.Text = S3A - (kk1 * U)
    NK1.Text = NKZ2.Text = Z2 - (KK2 * P)
        X1B.Text = X1B - (KK2 * Q)
        X2B.Text = X2B - (KK2 * R)
        S1B.Text = S1B - (KK2 * s)
        S2B.Text = S2B - (KK2 * T)
        S3B.Text = S3B - (KK2 * U)
        NK2.Text = NK2 - (KK2 * V)
    Z3.Text = Z1 - (KK3 * P)
    X1C.Text = X1C - (KK3 * Q)
    X2C.Text = X2C - (KK3 * R)
    S1C.Text = S1C - (KK3 * s)
    S2C.Text = S2C - (KK3 * T)
    S3C.Text = S3C - (KK3 * U)
    NK3.Text = NK3 - (KK3 * V)
        Z4.Text = P
        X1D.Text = Q
        X2D.Text = R
        S1D.Text = s
        S2D.Text = T
        S3D.Text = U
        NK4.Text = V
      Label19.Caption = VGANTI_BP
   
           
        'ElseIf a = b And b > c And a < c Then
        'tak mungkin '
        'ElseIf a = b And b > c And a = c Then
        'tak mungkin'
        'ElseIf a = b And b = c And a > c Then
        'tak mungkin'
        'ElseIf a = b And b = c And a < c Then
         'tak mungkin'
        'ElseIf a = b And b = c And a = c Then
         'tak mungkin'
        'end blok yang benar
       
   
          End If
                       
                               
             End If
                     
       
   
                   
  
     
End Sub



Private Sub HSL_Click()
On Error GoTo salah

Z1.Text = 1
Z2.Text = 0
Z3.Text = 0
Z4.Text = 0
X1A.Text = (CB * -1)
X1B.Text = CB1
X1C.Text = CB2
X1D.Text = CB3
    X2A.Text = (PR * -1)
    X2B.Text = PR1
    X2C.Text = PR2
    X2D.Text = PR3
S1A.Text = 0
S1B.Text = 1
S1C.Text = 0
S1D.Text = 0
    S2A.Text = 0
    S2B.Text = 0
    S2C.Text = 1
    S2D.Text = 0
S3A.Text = 0
S3B.Text = 0
S3C.Text = 0
S3D.Text = 1
    NK1.Text = 0
    NK2.Text = TOTAL1
    NK3.Text = TOTAL2
    NK4.Text = TOTAL3
Exit Sub
salah:
MsgBox "ISI DULU YANG KOSONG!!!!", vbInformation
CB.SetFocus
   
End Sub


Private Sub KELUAR_Click()
Unload Me
End Sub

Private Sub ULANG_Click()
CB.Text = ""
PR.Text = ""
CB1.Text = ""
CB2.Text = ""
CB3.Text = ""
PR1.Text = ""
PR2.Text = ""
PR3.Text = ""
TOTAL1.Text = ""
TOTAL2.Text = ""
TOTAL3.Text = ""
Z1.Text = ""
Z2.Text = ""
Z3.Text = ""
Z4.Text = ""
X1A.Text = ""
X1B.Text = ""
X1C.Text = ""
X1D.Text = ""
X2A.Text = ""
X2B.Text = ""
X2C.Text = ""
X2D.Text = ""
S1A.Text = ""
S1B.Text = ""
S1C.Text = ""
S1D.Text = ""
S2A.Text = ""
S2B.Text = ""
S2C.Text = ""
S2D.Text = ""
S3A.Text = ""
S3B.Text = ""
S3C.Text = ""
S3D.Text = ""
NK1.Text = ""
NK2.Text = ""
NK3.Text = ""
NK4.Text = ""
txt_cb.Text = ""
txt_pr.Text = ""
CB.SetFocus
End Sub

Hew.. hew.. (^_^) mungkin sekian dulu nanti kita sambung lagi… disini dingin sekali rasanya ingin jadi beruang yang bisa hibernasi selama 6 bulan. Liburan ini mau ngapain ya.. Met liburan ya pak dosen, juga buat anak STMIK WUP 09..

---------------------------------------------------------------------------------------------------------------------------------------------------------
Ranking: 5
 
© Bosan Kuliah All Rights Reserved