idea worker - fikir işçisi


PYTHON PULP ve MAX ÖRNEĞİ

05.08.2019 01:26

Python Pulp ile amaç işlevini max. etmeyi deneyeceğiz. Aydın Ulucan'ın "Yöneylem Araştırması" adlı kitabında yer alan bir problemi Python Pulp ile çözeceğiz. Hocamız, Solver ile bu problemi çözmüştür. Kodları aşağıya ekliyorum.

 

# max 12X1 + 9X2 + 6X3 (amaç fonksiyonu)
 
#Kısıtlar aşağıda sıralanmaktadır.
 
# 8X1+4X2+5X3<=6000 (makine 1 kapasitesi)
 
# X1+5X2+4X3<=6000 (makine 2 kapasitesi)
 
# X1+X2+X3<=1500 (depolama kısıtı)
 
# X1>=300 (min üretim kısıtı)
 
# X1,X2,X3>=0 (negatif olamama koşulu)
 
 
from pulp import *
 
 
# Problem verisini tutacak "prob_uretim" değişkenini oluşturuyoruz.
 
prob_uretim = LpProblem("Üretimi Max etme" , LpMaximize)
 
 
# Problem değişkenlerini tanımlıyoruz.
 
X1 = LpVariable("Değişken 1", 300 , None , LpInteger)
 
X2 = LpVariable("Değişken 2" , 0 , None , LpInteger)
 
X3 = LpVariable("Değişken 3" , 0, None , LpInteger)
 
 
# Amaç fonksiyonunu ekliyoruz
 
prob_uretim += 12*X1 + 9*X2 + 6*X3
 
 
#Kısıtları eklemeye başlıyoruz
 
prob_uretim += 8*X1 + 4*X2 + 5*X3 <= 6000 , "Makine 1 kapasitesi"
 
prob_uretim += X1 + 5*X2 + 4*X3 <=6000 , "Makine 2 kapasitesi"
 
prob_uretim += X1 + X2 + X3 <= 1500 ,"Depolama kısıtı"
 
 
 
prob_uretim.solve()
 
print("Statü: " , LpStatus[prob_uretim.status])
 
 
 
for v in prob_uretim.variables():
    print (v.name , " = " , v.varValue)
 
print(pulp.value(prob_uretim.objective))
# max 12X1 + 9X2 + 6X3 (amaç fonksiyonu)
 
#Kısıtlar aşağıda sıralanmaktadır.
 
# 8X1+4X2+5X3<=6000 (makine 1 kapasitesi)
 
# X1+5X2+4X3<=6000 (makine 2 kapasitesi)
 
# X1+X2+X3<=1500 (depolama kısıtı)
 
# X1>=300 (min üretim kısıtı)
 
# X1,X2,X3>=0 (negatif olamama koşulu)
 
 
from pulp import *
 
 
# Problem verisini tutacak "prob_uretim" değişkenini oluşturuyoruz.
 
prob_uretim = LpProblem("Üretimi Max etme" , LpMaximize)
 
 
# Problem değişkenlerini tanımlıyoruz.
 
X1 = LpVariable("Değişken 1", 300 , None , LpInteger)
 
X2 = LpVariable("Değişken 2" , 0 , None , LpInteger)
 
X3 = LpVariable("Değişken 3" , 0, None , LpInteger)
 
 
# Amaç fonksiyonunu ekliyoruz
 
prob_uretim += 12*X1 + 9*X2 + 6*X3
 
 
#Kısıtları eklemeye başlıyoruz
 
prob_uretim += 8*X1 + 4*X2 + 5*X3 <= 6000 , "Makine 1 kapasitesi"
 
prob_uretim += X1 + 5*X2 + 4*X3 <=6000 , "Makine 2 kapasitesi"
 
prob_uretim += X1 + X2 + X3 <= 1500 ,"Depolama kısıtı"
 
 
 
prob_uretim.solve()
 
print("Statü: " , LpStatus[prob_uretim.status])
 
 
 
for v in prob_uretim.variables():
    print (v.name , " = " , v.varValue)
 
print(pulp.value(prob_uretim.objective))
 
 
 
Kodları çalıştırınca elde ettiğimiz sonuçlar da şunlar:
 
 
>>> 
 RESTART: F:/Mustafa Professional/Python/Pulp ve Dogrusal Programlama/MaxOrnek.py 
Statü:  Optimal
Değişken_1  =  300.0
Değişken_2  =  900.0
Değişken_3  =  0.0
11700.0
>>> 
 

—————

Geri