You are on page 1of 14

Traaining Material

L O - Opptimizzationn Moddelingg Softtware


LINGO

Presenteed by:
Bobby Kurrniawaan
Graaduate Studeent of Industtrial Engineeering and Maanagement D
Department,
Banduung Institutee of Technoloogy
Facultty Member ofo Industrial Engineeringg Departmennt,
Universiity of Sultan AgengTirtayyasa

In collaborattion with:

Industrrial Engiineering Departm


ment, Faaculty of Engineeering
Sebelaas Marett Universsity
D
Decembe r 2011
Daftar Isi 

 
1.  PENGENALAN LINGO ............................................................................................................... 3 
1.1  Pendahuluan ........................................................................................................................... 3 
1.2  Memulai Lingo ....................................................................................................................... 3 
1.3  Aturan dalam Lingo ............................................................................................................... 3 
2.  PEMROGRAMAN LINGO .......................................................................................................... 5 
2.1  Struktur Model Lingo ............................................................................................................. 5 
2.2  Objective function dan constraints set ................................................................................ 5 
2.3  Data Section........................................................................................................................... 6 
2.4  Jenis dan struktur data ......................................................................................................... 6 
2.5  Sets Section ............................................................................................................................ 6 
3.  CONTOH KASUS OPTIMISASI ................................................................................................. 7 
3.1  Transportasi ............................................................................................................................ 7 
3.2  Blending ............................................................................................................................... 10 
4.  CONTOH KASUS GOAL PROGRAMMING ........................................................................... 11 
4.1  Model s-SCM pada Industri Furniture ................................................................................. 11 
4.2  Formulasi Model kasus s-SCM ............................................................................................ 11 
5. LAMPIRAN.................................................................................................................................... 14 

Daftar Tabel  
 
Tabel 2. Pasokan gudang .................................................................................................................... 7 
Tabel 3. Permintaan vendor ................................................................................................................ 8 
Tabel 4. Biaya kirim per unit .............................................................................................................. 8 
Tabel 5. Biaya kirim per unit ............................................................................................................ 10 

Daftar Gambar  
 
Gambar 1. Memulai file baru pada Lingo .......................................................................................... 3 
Gambar 2. Model matematik secara eksplisit ................................................................................... 3 
Gambar 3. Masalah transportasi WW Company ............................................................................... 7 

2
1. PENGENALAN LINGO

1.1 Pendahuluan  
Lingo merupakan bahasa pemrograman tingkat tinggi yang digunakan untuk menyelesaikan masalah
optimisasi bersakala besar (large scale optimization). Model programa matematika yang dapat
diselesaikan antara lain Linear Programming (LP), Integer Programming (IP), dan Quadratic
Prgramming (QP), dan Non linear Programming (NLP). Kemampuan Lingo yang cukup beragam dengan
kemudahan dalam membentuk model membuat Lingo popular di kalangan akademik. Kemampuan Lingo
untuk memecahkan masalah optimisasi tergantung dengan lisensi yang dimiliki. Jumlah variabel,
constraints, dan solver yang digunakan sangat tergantung dengan lisensi.

1.2 Memulai Lingo  
Untuk memulai membuat model Lingo jalankan program Lingo seperti aplikasi Windows lainnya. Lalu
pilih menu File->New atau tekan F2. Setelah itu pilih Lingo Model (*.lg4) seperti pada Gambar 1.

Gambar 1. Memulai file baru pada Lingo 

Pembuatan model matematika menggunakan bahasa Lingo dapat dilakukan dengan dua cara, yaitu secara
eksplisit (Gambar 2) dan menggunakan Lingo modeling sets. Untuk model yang berukuran kecil (jumlah
variabel dan pembatas sedikit) cara eksplisit lebih cepat dan efisien. Akan tetapi semakin besar model
semakin tidak efisien cara eksplisit, sehingga modeling sets lebih efisien dibandingkan dengan eksplisit.

Gambar 2. Model matematik secara eksplisit 

1.3 Aturan dalam Lingo  
1. Lingo tidak bersifat case sensitive. Bobby sama dengan BOBBY.
2. Satu perintah diakhiri dengan tanda semicolon (;).
3. Komentar tidak diproses oleh Lingo engine solver. Komentar dibuat untuk memudahkan pengguna
mengenai formulasi yang digunakan. Cara membuat komentar dalam Lingo adalah dimulai dengan

3
tanda seru (!) dan diakhiri dengan semicolon (;). Perintah di antara ke dua karakter tersebut tidak
diproses.
4. Variabel atau identifier tidak bisa menggunakan Lingo keywords reserved. Contoh keyword reserved
dari Lingo antara lain MODEL, DATA, END, SETS, ENDDATA, ENDSETS, dll. Apabila setting
tidak dirubah secara default keywords reserved tampak di layar editor berwarna biru.
5. Operator pertidaksamaan < ekivalen dengan ≤, dan > ekivalen dengan ≥.
6. Secara otomatis apabila tidak dideklarasikan secara eksplisit, variabel bernilai non-negatif.
7. Perintah diawali dengan tanda @.
8. Kesalahan dalam pembuatan model pada umumnya adalah kesalahan mengidentifikasikan indeks dan
kesalahan mengidentifikasi jenis variabel (identifier).

TIPS: Dalam membuat model jalankan (run, solve) setelah membuat satu perintah agar
dapat diketahui bagian yang salah dan dapat mengecek logika model.

4
2. PEMROGRAMAN LINGO

2.1 Struktur Model Lingo 
Struktur sederhana suatu model Lingo diawali kata MODEL dan diakhiri dengan END. Untuk selanjutnya
perintah-perintah di antara kedua kata tersebut kita sebut badan model (body model). Pada badan model
dapat dilakukan hal-hal sebagai berikut:
- deklarasi sets section
- inisiasi data section
- deklarasi dan inisiasi variabel
- pre-processing section
- deklarasi fungsi tujuan
- pembuatan himpunan pembatas

Bagian dari perintah yang dimulai dengan suatu keywords dan diakhiri dengan END disebut section.
Contoh: DATA-ENDDATA, SETS-ENDSETS, dan INIT-ENDINIT. Section DATA-ENDDATA dan
SETS-ENDSETS diletakkan sebelum pendeklarasian fungsi tujuan. Berikut ini struktur umum suatu
model Lingo:

Init section

Sets section
Model body
Data section

Objective function declaration

Constraints set

Pada umunya, model Lingo yang terdiri dari sets section, data section, objective function, dan constraints
sets sudah cukup untuk dapat digunakan memecahkan masalah optimisasi. Oleh karena itu pada bagian
selanjutnya yang akan dibahas hanya struktur model yang terdiri dari elemen-elemen yang disebutkan
sebelumnya.

2.2 Objective function dan constraints set 
Untuk mendeklarasikan fungsi tujuan dalam Lingo nyatakan MAX atau MIN lalu diikuti oleh tanda sama
dengan (=) dan dilanjutkan dengan ekpresi yang melibatkan variabel keputusan dan diakhiri oleh tanda
semicolon (;). Sedangkan pembuatan constraints sets mengikiti aturan matematika yaitu operator aljabar
(*, +, -, /) dan operator pertidaksamaan (<, >, =).

5
2.3 Data Section 
Data section merupakan bagian dalam badan model yang digunakan untuk memberikan nilai awal
(inisiasi) dari sets atau memberikan nilai bagi parameter. Dalam Lingo tidak ada deklarasi khusus untuk
menyatakan variabel keputusan. Secara otomatis variabel (identifier) yang tidak diberi nilai akan
diberlakukan sebagai variabel keputusan (berbeda dengan CPLEX).

NOTE: Mengetahui data sama dengan menyelesaikan 50% pemodelan.

2.4 Jenis dan struktur data  
Lingo hanya mempunyai dua struktur data, yaitu data tunggal dan data kompleks (sets). Data tunggal
yaitu data yang hanya memiliki satu elemen, sedangkan data kompleks memiliki lebih dari satu elemen.
Cara pendeklarasian data tunggal sederhana yaitu dengan menuliskan nama variabel (identifier) saja.
Sedangkan pembuatan data kompleks akan dijelaskan pada bagian selanjutnya.
Secara otomatis apabila jenis data tidak dideklarasikan secara eksplisit maka Lingo akan memberlakukan
data tersebut memiliki jenis bilangan nyata (real) dan non-negatif. Untuk membuat jenis data secara
spesifik digunakan perintah sebagai berikut:
- @BIN(Nama_variabel) untuk mendeklarasikan Nama_variabel sebagai boolean (0 dan 1)
- @GIN(Nama_variabel) untuk mendeklarasikan Nama_variabel sebagai bilangan bulat (integer)
- @FREE(Nama_variabel) untuk mendeklarasikan Nama_variabel sebagai bilangan nyata (real) yang
bernilai -∞ — +∞.
- @BND(nilai_bawah, Nama_variabel, nilai_atas) untuk mendeklarasikan nama variabel bernilai
antara nilai bawah dan nilai atas.

NOTE: Model dapat bersifat infeasible apabila belum dideklarasikan @FREE


padahal nilainya negatif.

2.5 Sets Section  
Sets section merupakan bagian dalam badan model yang digunakan untuk membentuk jenis data
kompleks. Sets merupakan fitur yang sangat penting dalam pemodelan Lingo. Sintaks dari sets adalah:

SETS:
NAMA_SETS : ATTRIBUT;
ENDSETS

Attribut dapat dideklarasikan dalam data section atau langsung dideklarasikan dalam sets section. Apabila
dideklarasikan dalam data section adalah

DATA:
NAMA_SETS = nilai_sets;
ENDSETS

Sedangkan deklarasi secara langsung dalam sets section adalah sebagai berikut:

SETS:
NAMA_SETS /nilai_sets/ : ATTRIBUT;
ENDSETS

NOTE: You don’t have to know everything but you must know
everything you need to know. (Kuasai satu saja sudah cukup.).

6
3. CONTOH KASUS OPTIMISASI

Pada bagian ini akan dibahas mengenai optomisasi dalam Teknik Industri yang meliputi Transportasi dan
Blending. Perintah baru yang dipelajari adalah @sum dan @for.

3.1 Transportasi 
Permasalahan transportasi merupakan permasalahan yang banyak ditemukan dalam keilmuan Teknik Industri,
khususnya rantai pasok. Dalam permasalahan transportasi ditentukan jumlah barang yang dikirim dari sumber
ke tujuan dengan kriteria meminimumkan ongkos transportasi. Berikut ini merupakan contoh dari suatu
model transportasi sederhana.

Wireles Widget (WW) Company mempunyai enam buah gudang untuk memasokdelapan buah vendor.
Perusahan ingin menentukan alokasi barang dari gudang ke vendor yang meminimumkan ongkos transportasi
dengan batasan demand setiap vendor terpenuhi dan jumlah barang yang dikirim dari setiap gudang tidak
melebihi kapasitasnya. Gambar 3 melukiskan permasalahan yang dihadapi oleh WW Company.

Gambar 3. Masalah transportasi WW Company 

Data-data yang berhubungan dengan masalah transportasi WWC adalah sebagai berikut:

Tabel 1. Pasokan gudang 

7
Tabel 2. Permintaan vendor 

Tabel 3. Biaya kirim per unit 

Tentukan alokasi yang meminimumkan biaya kirim?

Misalkan indeks i menunjukan indeks gudang dan j merupakan indeks vendor. Variabel keputusan dari
permasalahan tersebut di atas adalah jumlah barang yang dikirim dari gudang i ke gudang j. Apabila
dinotasikan dengan variabel dapat ditulis sebagai xij . Sehingga fungsi tujuan dapat dinyatakan sebagai:
6 8
Min ∑∑ c x
i =1 j =1
ij ij

Dengan pembatas yaitu jumlah dari seluruh barang yang dikirimkan dari gudang harus memenuhi
permintaan setiap vendor dan jumlah barang yang dikirim oleh setiap gudang tidak boleh melebihi
pasokannya. Apabila dituliskan dengan notasi sebagai berikut:
6

∑x
i =1
ij = d ij , ∀j
8

∑x
j =1
ij = sij , ∀i

Untuk memodelkan masalah di atas dengan Lingo, tentukan dulu obyek dari permasalahan di atas. Yang
dapat dijadikan obyek adalah Warehouses dan Vendors. Ada enam buah Warehouses dan delapan buah
Vendors. Pendeklarasian dengan menggunakan sets adalah sebagai berikut:

SETS:
WAREHOUSES: CAPACITY;
VENDORS: DEMAND;
LINKS( WAREHOUSES, VENDORS): COST, VOLUME;
ENDSETS

8
Selanjutnya tentukan atribut yang dimiliki oleh masing-masing obyek. Warehouses memiliki Capacity
dan Vendors memiliki Demand. Dengan demikian deklarasi yang dilakukan dalam data section adalah
sebagai berikut:

DATA:
!set members;
WAREHOUSES = WH1 WH2 WH3 WH4 WH5 WH6;
VENDORS = V1 V2 V3 V4 V5 V6 V7 V8;

!attribute values;
CAPACITY = 60 55 51 43 41 52;
DEMAND = 35 37 22 32 41 32 43 38;
COST = 6 2 6 7 4 2 5 9
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3;
ENDDATA

Fungsi tujuan merupakan penjumlahan dari seluruh pengiriman dari Warehouses menuju Vendors. Hal ini
dinyatakan sebagai berikut:

! The objective;
MIN = @SUM( LINKS( I, J):
COST( I, J) * VOLUME( I, J));
! The demand constraints;
@FOR( VENDORS( J):
@SUM( WAREHOUSES( I): VOLUME( I, J)) =
DEMAND( J));
! The capacity constraints;
@FOR( WAREHOUSES( I):
@SUM( VENDORS( J): VOLUME( I, J)) <=
CAPACITY( I));
END

Pendeklarasian fungsi tujuan dimulai dengan Min diikuti dengan perintah @SUM( LINKS( I, J): COST(
I, J) * VOLUME( I, J));. Perhatikan hal ini sangat serupa dengan notasi matematika yaitu:

MIN = @SUM( LINKS( I, J): COST( I, J) * VOLUME( I, J)); 6 8


Min ∑∑ c x
i =1 j =1
ij ij

Selanjutnya pembentukan himpunan pembatas adalah sebagai berikut:

@FOR( VENDORS( J): 6

@SUM( WAREHOUSES( I): VOLUME( I, J)) = DEMAND( J)); ∑x


i =1
ij = d ij , ∀j

Jumlah barang yang dikirim dari setiap Warehouses sama dengan Demand setiap Vendors.

@FOR( WAREHOUSES( I): 8

@SUM( VENDORS( J): VOLUME( I, J)) <= CAPACITY( I)); ∑x


j =1
ij = sij , ∀i

Jumlah barang yang dikirim ke setiap Vendors kurang dari Capacity setiap Warehouses.

Dapat dilihat bahwa sangat mudah merubah notasi matematika dan bahasa umum ke dalam perintah
Lingo.

9
3.2 Blending 
The Chess Snackfoods Co. markets four brands of mixed nuts. The four brands of nuts are called the Pawn,
Knight, Bishop, and King. Each brand contains a specified ratio of peanuts and cashews. The table below lists
the number of ounces of the two nuts contained in each pound of each brand and the price the company
receives per pound of each brand:

Tabel 4. Biaya kirim per unit 

Chess has contracts with suppliers to receive 750 pounds of peanuts/day and 250 pounds of
cashews/day. Our problem is to determine the number of pounds of each brand to produce each day to
maximize total revenue without exceeding the available supply of nuts.

Dari soal dapat ditentukan dua buah obyek, yaitu Nuts yang memiliki dua jenis dan Brands yang terdiri
dari empat jenis. Attribut yang dimiliki oleh Nuts dan Brands secara bersama, yaitu jumlah Nuts yang
dibutuhkan untuk membuat jenis Brands. Attribut ini sebut saja Formula. Dengan menggunakan sets
maka deklarasi Lingo adalah:

SETS:
NUTS / PEANUTS, CASHEWS/: SUPPLY;
BRANDS / PAWN, KNIGHT, BISHOP, KING/:
PRICE, PRODUCE;
FORMULA(NUTS, BRANDS): OUNCES;
ENDSETS

Pemberian nilai parameter dan sets dilakukan sebagai berikut:

DATA:
SUPPLY = 750 250;
PRICE = 2 3 4 5;
OUNCES = 15 10 6 2
1 6 10 14;
ENDDATA

Formulasi fungsi tujuan adalah jumlah dari perkalian Price dan Produce setiap Brands

MAX = @SUM(BRANDS(I):
PRICE(I) * PRODUCE(I));

Himpunan pembatas sebagai berikut

@FOR(NUTS(I):
@SUM(BRANDS(J):
OUNCES(I, J) * PRODUCE(J) / 16) <=
SUPPLY(I)
);

Pembatas kiri dibagi 16 untuk mengkonversi ounce ke pound.

10
4. CONTOH KASUS GOAL PROGRAMMING

4.1 Model s­SCM pada Industri Furniture  
Pada bagian ini akan dibahas mengenai Linear Goal Programming untuk masalah s-SCM yang melibatkan
Perhutani, VSU, dan Distributor.

The Development Of Sustainable Supply Chain Model Of The Relationship Between Wood
Supplier With Furniture Industry In Indonesia: A Case Study (Hisjam dkk., 2011)

Perhutani mempunyai 200.000 ha hutan jati dengan hutan produksi sebesar 40.000 ha dan sisanya hutan
lindung. Saat ini Perhutani mempunyai kapasitas produksi 300.000 m3/tahun atau sebesar
25.000 m3/bulan. Untuk memenuhi permintaan kayu jati yang diestimasi sebesar 1.200.000 m3/tahun
Perhutani mempunyai kebijakan untuk dapat menambah kapasitas produksinya. Akan tetapi kebijakan ini
akan bertentangan dengan kebijakan Pemerintah yang mewajibkan luas hutan minimal 30% dari luas
daerah yang menaunginya. Dengan demikian dapat disimpulkan beberapa masalah yang dihadapi
Perhutani:
- berapa banyak volume kayu jati yang dapat diproduksi untuk memenuhi permintaan?
- berapa banyak luas hutan yang harus ditanam untuk dapat memenuhi peraturan Pemerintah?
- berapa banyak biaya yang harus dialokasikan untuk penanaman hutan baru?

Sedangkan produsen furniture kayu jati memiliki permasalahan sebagai berikut:


- berapa banyak penjualan yang didapat?
- apakah dapat memenuhi demand distributor?
- berapakah utilitas pabrik yang digunakan?

Seluruh masalah yang dihadapi Perhutani dan produsen furniture melibatkan banyak tujuan dan
diantaranya konflik satu sama lain. Untuk dapat menganalisa trade-off yang terjadi antar tujuan tersebut
GP merupakan alat yang sesuai. Oleh karena itu pada bagian ini akan dimodelkan multi-objective decision
making dengan menggunakan Lingo.

Beberapa asumsi yang digunakan adalah sebagai berikut.


- Horizon perencanaan terdiri dari 3 periode.
- Supplier berjumlah 1 yaitu Perhutani dan Manufacturer berjumlah 1.
- Jenis kayu log diasumsikan 1 jenis.
- Jenis furniture yang diproduksi adalah 1 jenis.
- Seluruh biaya dan harga tidak berubah selama periode perencanaan.
- Volume kayu yang dihasilkan oleh 1 ha hutan homogen dan tetap.
Pembelian kayu oleh manufacturer sama dengan produksi kayu supplier

4.2 Formulasi Model kasus s­SCM 
Model Lingo lengkap adalah sebagai berikut:
MODEL:
SETS:

PERIOD;
INDEX;

!Manufacturer Variabel;
MANUFACTURER(PERIOD) : FURNITURE_DEMAND, FURNITURE_PRODUCTION, Furniture_Sold,
Log_Purchased, Furniture_Inventory;

!Perhutani Decision variabel;

11
PERHUTANI(PERIOD) : Log_Production, Forest_Harvested, Production_Forest,
Protection_Forest, Total_Forest, Forest_Planted,
Production_Capacity, Inc_Production_Capacity, Dec_Production_Capacity;

GOAL(INDEX) : N, P, B;
ENDSETS

DATA:
PERIOD = 1, 2, 3;
INDEX = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;

!Manufacturer Parameter;
Furniture_Price = 1770; !PRICE OF 1 M3 FURNITURE;
furniture_Demand = 100000, 100000, 100000; !DEMAND OF FURNITURE in m3;
MDC = 500; !DISTRIBUTION COST PER 1M3 FURNITURE;
MPC = 500; !PRODUCTION COST PER 1M3 FURNITURE ;
MHC = 50; !Manufacture holding cost per 1 m3 furniture;
Conversion_Factor = 0.5; !Conversion from 1 m3 log to Furniture;

!Perhutani Parameters;
Volume_Per_Ha = 110;
Initial_Production_Forest = 40000;
Initial_Total_Forest = 200000;
OC = 1.920; !Operational cost per m3 of Log;
HC = 4.205; !Harvesting cost per m3 of Log;
PC = 7.725; !Planting cost per m3 of Log;
CC = 10.205; !Cost to changed capacity 1 m3 of log;
Log_Price = 10.625; !Harga jual 1 m3 log;
Initial_Production_Capacity = 25000; !Kapasitas produksi log awal dalam m3;

ENDDATA
!INI TIDAK BISA DITARUH DI DATA SECTION;
Initial_Protection_Forest = Initial_Total_Forest - Initial_Production_Forest;

!Target level goal;


b(1) = 231000000; !Manufacturer Total Revenue Target;
b(2) = 200000000; !Manufacturer Total Cost Target;
b(3) = 100000000; !manufacturer Total Profit Target;
b(4) = 1; !manufacturer Demand Fulfillment Target;
b(5) = 600000; !Perhutani Forest Area Target;
b(6) = 600000; !Perhutani Forest Area Target;
b(7) = 600000; !Perhutani Forest Area Target;
b(8) = 1000000; !Perhutani Planting Cost Target;
b(9) = 1000000; !Perhutani Profit Target;
b(10) = 100000; !Perhutani Capacity Changed Cost Target;

!Objective function;
MIN = n(1) + p(2) + n(3) + n(4) + p(4) + n(5) + p(5) + n(6) + p(6) + n(7) + p(7)
+ p(8) + n(9)+ p(10);

!Manufacturer REVENUE, PROFIT, AND COSTS, TOTAL PRODUKSI, TOTAL DEMAND;


!MENGHITUNG TOTAL REVENUE;
M_Total_Revenue = @SUM(MANUFACTURER(I) : Furniture_Sold(I) * Furniture_Price );
!MENGHITUNG PRODUCTION COST;
Furniture_Production_Cost = @SUM(MANUFACTURER(I) : Furniture_Production(I) * MPC
);
!MENGHITUNG DISTRIBUTION COST;
Furniture_Distribution_Cost = @SUM(MANUFACTURER(I) : Furniture_Sold(I) * MDC );
!MENGHITUNG INVENTORY COST;

12
Furniture_Inventory_Cost = @SUM(MANUFACTURER(I) : Furniture_Inventory(I) * MHC
);
!MENGHITUNG TOTAL COST;
M_Total_Cost = Furniture_Production_Cost + Furniture_Distribution_Cost +
Furniture_Inventory_Cost;
!MENGHITUNG TOTAL PROFIT;
M_Total_Profit = M_Total_Revenue - M_Total_Cost;
!MENGHITUNG TOTAL PRODUKSI;
Total_Furniture_Production = @SUM(MANUFACTURER(I) : Furniture_Production(I) );
!MENGHITUNG TOTAL DEMAND;
Total_Furniture_Demand = @SUM(MANUFACTURER(I) : Furniture_Demand(I) ) ;

!PERHUTANI REVENUE, PROFIT, AND COSTS, TOTAL PRODUKSI, LUAS HUTAN;


!MENGHITUNG LUAS HUTAN PERIODE 1 - 3;
Total_Forest_Period1 = @SUM(PERHUTANI(I) | I #EQ# 1 : Total_Forest(I) ) ;
Total_Forest_Period2 = @SUM(PERHUTANI(I) | I #EQ# 2 : Total_Forest(I) ) ;
Total_Forest_Period3 = @SUM(PERHUTANI(I) | I #EQ# 3 : Total_Forest(I) ) ;
!MENGHITUNG TOTAL BIAYA TANAM;
Total_Planting_Cost = @SUM(PERHUTANI(I) : Forest_Planted(I) * PC );
!MENGHITUNG TOTAL BIAYA OPERASI;
Total_Operation_Cost = @SUM(PERHUTANI(I) : Total_Forest(I) * OC );
!MENGHITUNG TOTAL BIAYA PANEN;
Total_Harvesting_Cost = @SUM(PERHUTANI(I) : Forest_Harvested(I) * HC );
!MENGHITUNG TOTAL BIAYA PERUBAHAN KAPASITAS PRODUKSI;
Production_Capacity_Changed_Cost = @SUM(PERHUTANI(I) : CC * (
Inc_Production_Capacity(I) + Dec_Production_Capacity(I) ));
!MENGHITUNG TOTAL BIAYA;
P_Total_Cost = Total_Planting_Cost + Total_Operation_Cost +
Total_Harvesting_Cost + Production_Capacity_Changed_Cost;
!MENGHITUNG TOTAL REVENUE;
P_Total_Revenue = @SUM(PERHUTANI(I) : Log_Production(I) * Log_Price );
!MENGHITUNG TOTAL PROFIT;
P_Total_Profit = P_Total_Revenue - P_Total_Cost;

!SOFT CONSTRAINTS (GOAL);


!Goal1; M_Total_Revenue + n(1) - p(1) = b(1);
!Goal2; M_Total_Cost + n(2) - p(2) = b(2);
!Goal3; M_Total_Profit + n(3) - p(3) = b(3);
!Goal4; Total_Furniture_Production/Total_Furniture_Demand + n(4) - p(4) = b(4);
!Goal5; Total_Forest_Period1 + n(5) - p(5) = b(5);
!Goal6; Total_Forest_Period2 + n(6) - p(6) = b(6);
!Goal7; Total_Forest_Period3 + n(7) - p(7) = b(7);
!Goal8; Total_Planting_Cost + n(8) - p(8) = b(8);
!Goal9; P_Total_Profit + n(9) - p(9) = b(9);
!Goal10; Production_Capacity_Changed_Cost + n(10) - p(10) = b(10);

!HARD CONSTRAINTS;
!PADA PERIODE 3, FURNITURE INVENTOORY = 0;
@FOR(MANUFACTURER(I) | I #EQ# 3 : Furniture_Inventory(I) = 0 ) ;
!PADA PERIODE 1, FURNITURE INVENTOORY = FURNITURE PRODUCTION - FURBNITURE SOLD;
@FOR(MANUFACTURER(I) | I #EQ# 1 : Furniture_Inventory(I) =
Furniture_Production(I) - Furniture_Sold(I) );
!PADA PERIODE LEBIH DARI 1, FURNITURE INVENTOORY = FURNITURE INVENTORY(T-1) +
FURNITURE PRODUCTION - FURBNITURE SOLD;
@FOR(MANUFACTURER(I) | I #GT# 1 : Furniture_Inventory(I) =
Furniture_Inventory(I-1) + Furniture_Production(I) - Furniture_Sold(I) );
!PADA SELURUH PERIODE, FURNITRURE SOLD <= FURNITURE DEMAND;
@FOR(MANUFACTURER(I) : Furniture_Sold(I) <= Furniture_Demand(I) ) ;
!JUMLAH SELURUH FURNITURE YANG DIPRODUKSI = JUMLAH SELURUH FURNITURE YANG DIJUAL
+ JUMLAH SELURUH INVENTORY;

13
@SUM(MANUFACTURER(I) : Furniture_Production(I) ) = @SUM(MANUFACTURER(I) :
Furniture_Sold(I) + Furniture_Inventory(I) ) ;
!PADA SETIAP PERIODE, JUMLAH LOG YANG HARUS DIBELI MANUFACTURER = JUMLAH
FURNITURE DIBAGI FAKTOR KONVERSI;
@FOR(MANUFACTURER(I) : Furniture_Production(I) / Conversion_Factor =
Log_Purchased(I) ) ;
!PADA SETIAP PERIODE, JUMLAH LOG YANG HARUS DIBELI MANUFACTURER = JUMLAH LOG
YANG DIPRODUKSI PERHUTANI;
@FOR(PERHUTANI(I) : Log_Purchased(I) = Log_Production(I) );
!PADA SETIAP PERIODE, JUMLAH LOG YANG DIPRODUKSI PERHUTANI = KAPASITAS;
@FOR(PERHUTANI(I) : Log_Production(I) = Production_Capacity(I) );
!PADA PERIODE 1, Production_Capacity[p] = Initial_Production_Capacity +
Inc_Production_Capacity[p] - Dec_Production_Capacity[p];
@FOR(PERHUTANI(I) | I #EQ# 1 : Production_Capacity(I) =
Initial_Production_Capacity +
Inc_Production_Capacity(I) -
Dec_Production_Capacity(I) );
!PADA PERIODE > 1, Production_Capacity[p] = Inc_Production_Capacity[p-1] -
Dec_Production_Capacity[p];
@FOR(PERHUTANI(I) | I #GT# 1 : Production_Capacity(I) = Production_Capacity(I-1)
+ Inc_Production_Capacity(I) -
Dec_Production_Capacity(I) );
!PADA SETIAP PERIODE, LUAS POHON YANG DIPANEN ADALAH JUMLAH LOG YANG DIPRODUKSI
/ VOLUME PER HA;
@FOR(PERHUTANI(I) : Log_Production(I) / Volume_Per_Ha = Forest_Harvested(I) ) ;
!PADA PERIODE 1, Production_Forest[p] == Initial_Production_Forest -
Forest_Harvested[p] ;
@FOR(PERHUTANI(I) | I #EQ# 1 : Production_Forest(I) = Initial_Production_Forest
- Forest_Harvested(I) ) ;
!PADA PERIODE > 1, Production_Forest[p] == Production_Forest[p-1] -
Forest_Harvested[p] ;
@FOR(PERHUTANI(I) | I #GT# 1 : Production_Forest(I) = Production_Forest(I-1) -
Forest_Harvested(I) ) ;
!PADA PERIODE 1, Protection_Forest[p] == Initial_Protection_Forest +
Forest_Planted[p] ;
@FOR(PERHUTANI(I) | I #EQ# 1 : Protection_Forest(I) = Initial_Protection_Forest
+ Forest_Planted(I) ) ;
!PADA PERIODE > 1, Protection_Forest[p] == Protection_Forest[p-1] +
Forest_Planted[p] ;
@FOR(PERHUTANI(I) | I #GT# 1 : Protection_Forest(I) = Protection_Forest(I-1) +
Forest_Planted(I) ) ;
!PADA SETIAP PERIODE, TOTAL LUAS HUTAN = LUAS HUTAN PRODUKSI + LUAS HUTAN
LINDUNG;
@FOR(PERHUTANI(I) : Total_Forest(I) = Protection_Forest(I) +
Production_Forest(I) ) ;

END

5. LAMPIRAN
5.1 Lingo User Manual. 
5.2 Paper The Development of Sustainable Supply Chain Model of The Relationship Between Wood 
Supplier With Furniture Industry In Indonesia: A Case Study (Hisjam dkk., 2011). 

14

You might also like