idea worker - fikir işçisi


PYTHON PULP ve MIN ÖRNEĞİ

06.08.2019 04:57

Bu yazımda Pulp ile minimization örneği kodlarını ekleyeceğim. "Neden uğraşıyorsun? Şirketten bütçe çıkartırsın ve paket yazılım alınır." diyenler olacaktır, ama bireysel vizyon ve misyon ifademi hatırlatmak isterim. Python ücretsiz ve güvenilir bir dost, bunu da unutmayalım.

 

 

Python IDE'de olan kodları aşağıya ekliyorum. İlk başta karmaşık gelebilir, ama birkaç defa okumak karmaşayı azaltacaktır.

 

# doğrusal programlama minimization örneği

#Örnek Aydın Ulucan'ın "Yöneylem Araştırması" adlı kitabında mevcuttur.

'''

min X1 +X2 + X3 +X4 + X5 + X6

kısıtlar:

X6 +X1 >= 47

X1 +X2 >= 122

X2 + X3 >= 286

X3 + X4 >= 258

X4 + X5 >= 194

X5 + X6 >= 90

Xi >=0

''' 

from pulp import *

prob_planlama = LpProblem("Min Hemşire Sayısı" , LpMinimize)

 

X1 = LpVariable("Değişken 1" , 0 , None , LpInteger)

X2 = LpVariable("Değişken 2" , 0 , None , LpInteger)

X3 = LpVariable("Değişken 3" , 0 , None , LpInteger)

X4 = LpVariable("Değişken 4" , 0 , None , LpInteger)

X5 = LpVariable("Değişken 5" , 0 , None , LpInteger)

X6 = LpVariable("Değişken 6" , 0 , None , LpInteger)

 

prob_planlama += X1 + X2 + X3 + X4 + X5 + X6

 

prob_planlama += X6 +X1 >= 47 , "Kısıt 1"

prob_planlama += X1 +X2 >= 122 , "Kısıt 2"

prob_planlama += X2 + X3 >= 286 , "Kısıt 3"

prob_planlama += X3 + X4 >= 258 , "Kısıt 4"

prob_planlama += X4 + X5 >= 194 , "Kısıt 5"

prob_planlama += X5 + X6 >= 90 , "Kısıt 6"

 

prob_planlama.solve()

print ("Statü: " , LpStatus[prob_planlama.status])

 

for v in prob_planlama.variables():

      print (v.name , " = " , v.varValue)

print (pulp.value(prob_planlama.objective))

 

Kodları çalıştırınca elde dttiğimiz sonuçlar şunlar:

 

Statü:  Optimal

Değişken_1  =  0.0

Değişken_2  =  179.0

Değişken_3  =  107.0

Değişken_4  =  151.0

Değişken_5  =  43.0

Değişken_6  =  47.0

527.0

# doğrusal programlama minimization örneği
 
#Örnek Aydın Ulucan'ın "Yöneylem Araştırması" adlı kitabında mevcuttur.
 
'''
min X1 +X2 + X3 +X4 + X5 + X6
 
kısıtlar
 
X6 +X1 >= 47
 
X1 +X2 >= 122
 
X2 + X3 >= 286
 
X3 + X4 >= 258
 
X4 + X5 >= 194
 
X5 + X6 >= 90
 
Xi >=0
 
''' 
 
from pulp import *
 
 
prob_planlama = LpProblem("Min Hemşire Sayısı" , LpMinimize)
 
 
 
X1 = LpVariable("Değişken 1" , 0 , None , LpInteger)
 
X2 = LpVariable("Değişken 2" , 0 , None , LpInteger)
 
X3 = LpVariable("Değişken 3" , 0 , None , LpInteger)
 
X4 = LpVariable("Değişken 4" , 0 , None , LpInteger)
 
X5 = LpVariable("Değişken 5" , 0 , None , LpInteger)
 
X6 = LpVariable("Değişken 6" , 0 , None , LpInteger)
 
 
 
prob_planlama += X1 + X2 + X3 + X4 + X5 + X6
 
 
prob_planlama += X6 +X1 >= 47 , "Kısıt 1"
 
 
prob_planlama += X1 +X2 >= 122 , "Kısıt 2"
 
 
prob_planlama += X2 + X3 >= 286 , "Kısıt 3"
 
 
prob_planlama += X3 + X4 >= 258 , "Kısıt 4"
 
 
prob_planlama += X4 + X5 >= 194 , "Kısıt 5"
 
 
prob_planlama += X5 + X6 >= 90 , "Kısıt 6"
 
 
prob_planlama.solve()
 
 
print ("Statü: " , LpStatus[prob_planlama.status])
 
 
for v in prob_planlama.variables():
 
    print (v.name , " = " , v.varValue)
 
 
print (pulp.value(prob_planlama.objective))

—————

Geri