İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Yazılım
  4. Diğer Yazılım Konuları
Diğer Yazılım Konuları

Python kodlamada takıldığım yeri geçemiyorum

Ezgi Çimen Ünlükal01.03.20224 cevap1.036 görüntüleme
2022'den beri3 mesaj
#1
Python kodda fonksiyon oluşturmuştum. oluşturduğum fonksiyonu kodun herhangi bir başka yerinde çağırsam da çalıştırmıyor. Yardımcı olabilecek olan varsa ayrıntı istedikleri takdir de yazarım.
👍 1
Cevaplar
bud
2014'den beri5.326 mesaj
#2
Kodu paylaşırsan yardımcı olabiliriz.
2022'den beri3 mesaj
#3
NP = int(input("Popülasyon büyüklüğünü giriniz:"))
print("NP:",NP)

F = float(input("Ölçek faktörünü giriniz:"))
print("F:",F)

CR = float(input("Çaprazlama oranını giriniz:"))
print("CR:",CR)

#Satırlar arası ve makineler arası gereken boşluk
gm = 2
gr = 2

#Satır sayısı
r=5

#ürün sayısı makine sayısı ve makinelerin genişlik uzunluklarının okunması

ezgi_dosya = open("C:/Users/kullanici/Desktop/Test Problemleri/test_1.txt","r",encoding="utf-8")
for i in range(0,4):
line=ezgi_dosya.readline()
if i==1:n=int(line) #ürün sayısı
if i==3:m=int(line) #makine sayısı

while line.find("n w l")==-1:
line=ezgi_dosya.readline()
genıslık_uzunluk={}

while 1:
line=ezgi_dosya.readline()
if line.find("bitti")!=-1:
break
(n,w,l)=line.split()
genıslık_uzunluk[int(n)]=(float(w),float(l))
ezgi_dosya.close()
print(genıslık_uzunluk)
(w,l)=genıslık_uzunluk[1]
#print(genıslık_uzunluk[1])
genıslık=[]
uzunluk=[]
for i in range(m):
(w,l)=genıslık_uzunluk[i+1]
genıslık.append(w)
uzunluk.append(l)
print("urun_genislik:",genıslık)
print("urun_uzunluk:",uzunluk)

#ürün rotalarınınokunması

ezgi_dosya2=open("C:/Users/kullanici/Desktop/Test Problemleri/test_1_rota.txt","r",encoding="utf-8")
satir=ezgi_dosya2.readline()
while satir.find("başla")==-1:
satir=ezgi_dosya2.readline()
urunno_rota={}
while 1:
satir = ezgi_dosya2.readline()
if satir.find("bitti")!=-1:
break
satir=satir[:-1]
liste1=satir.split(",")
x=len(liste1)
urunno_rota[int(liste1[0])]=liste1[1:x]
print(urunno_rota)
#print(liste1)
#print(urunno_rota[(1)])
ezgi_dosya2.close()
urun_no=[]
urun_rota=[]
for i in urunno_rota.keys():
urun_no.append(i)
print("urun_no:",urun_no)
for i in urunno_rota.values():
urun_rota.append(i)
print("urun_rota:",urun_rota)
#print(urun_rota[0])

print("**************************************************************************************")
#başlangıç çözüm oluşturma

import random
populasyon = []
for i in range(0,NP):
brey = []
for j in range(1,m+1):
brey.append("{:.4f}".format(random.uniform(1, r + 1)))
#print(brey)
populasyon.append(brey)
print("populasyon:",populasyon)
print("**************************************************************************************")
#birinci amaç fonksiyonu bulma

length=[]
depth=[]
satır_genislik_maximum=[]
def amac_bir(i):
satır_liste = []
satır_liste_uzunluk=[]
for h in range(0, r):
satır_liste.append([])
satır_liste_uzunluk.append([])
for j in range(0, m):
for k in range(0, r):
if populasyon[j][0] == str(k + 1):
satır_liste[k].append(genıslık[j])
satır_liste[k].sort(reverse=True)
satır_liste_uzunluk[k].append(uzunluk[j])
#print("genislik:",satır_liste)
#print("uzunluk:",satır_liste_uzunluk)
satır_genislik=[]
for k in range(0,r):
satır_genislik.append(satır_liste[k][:1])
satır_genislik_maximum.append(satır_liste[k][:1])
#print("satırların max genişliği:",satır_genislik)
genislik_toplam=0
for i in range(0,r):
for j in range(0,len(satır_genislik)):
genislik_toplam+=satır_genislik[j]
#print("toplam genislik:",genislik_toplam)
genislik_toplam=genislik_toplam+(gr*(r-1))
#print("toplam genislik:", genislik_toplam)
uzunluk_liste = []
for j in range(0,r):
toplam = 0
for i in range(0,len(satır_liste_uzunluk[j])):
toplam+=satır_liste_uzunluk[j]
toplam=toplam+(gm*(len(satır_liste_uzunluk[j])-1))
uzunluk_liste.append(toplam)
uzunluk_liste.sort(reverse=True)
#print(uzunluk_liste)
uzunluk_toplam=uzunluk_liste[:1]
#print("uzunluk toplam:",uzunluk_toplam)

length.append(uzunluk_toplam[0])
depth.append(genislik_toplam)

for i in range(0,NP):
amac_bir(i)

print("length:",length)
print("depth:",depth)
#print("genişlik",satır_genislik_maximum)

alan=[]
for i in range(0,NP):
alan.append(length*depth)
print("alan:",alan)

print("***********************************************************")
#ikinci amaç fonksiyounu bulma

pop_dayalı_urun_akıs_mal=[]

def amac_iki(i):
satır_liste = []
for h in range(0, r):
satır_liste.append([])
for j in range(0, m):
for k in range(0,r):
if populasyon[j][0] == str(k+1):
satır_liste[k].append(populasyon[j])
satır_liste[k].sort()
print("satırlara atanan populasyonlar:",satır_liste)
sıralı_genislik=[]
sıralı_uzunluk=[]
sıralı_makine=[]
for h in range(0,r):
sıralı_genislik.append([])
sıralı_uzunluk.append([])
sıralı_makine.append([])
for j in range(0,r):
for l in range(0,len(satır_liste[j])):
for k in range(0,m):
if satır_liste[j][l]==populasyon[k]:
sıralı_genislik[j].append(genıslık[k])
sıralı_uzunluk[j].append(uzunluk[k])
sıralı_makine[j].append(genıslık_uzunluk[(k+1)])
print("genişlikler sıralı:",sıralı_genislik)
print("uzunluklar sıralı:", sıralı_uzunluk)
print("makineler sıralı:", sıralı_makine)

for i in range(0,r):
for j in range(0,len(sıralı_uzunluk)):
sıralı_uzunluk[j]=float(sıralı_uzunluk[j])

for i in range(0,len(urun_no)):
for j in range(0,len(urun_rota)):
urun_rota[j]=int(urun_rota[j])

satır_uzunluk=[]
for i in range(0,r):
satır_uzunluk.append([])
#print(satır_uzunluk)
for j in range(0,r):
toplam = 0
for i in range(0,len(sıralı_uzunluk[j])):
toplam+=sıralı_uzunluk[j]
toplam=toplam + ((len(sıralı_uzunluk[j])-1) * gm)
satır_uzunluk[j].append(toplam)
#print(toplam)
print("satırların uzunluğu:",satır_uzunluk)
satır_genislik_maximum=[]
for i in range(0,r):
sıralı_genislik.sort(reverse=True)
if sıralı_genislik!=[]:
satır_genislik_maximum.append(sıralı_genislik[:1])
else:
satır_genislik_maximum.append([])
#print(satır_genislik_maximum)
print("satırların genişliği:", satır_genislik_maximum)
print("******************************************************************")
# print(type(urun_rota[0][0]))
akıs_liste = []
for i in range(0, len(urun_rota)):
akıs_liste.append([])
# print(liste)
def urun_akıs(k):
for h in range(0, len(urun_rota[k])):
akıs_liste[k].append(uzunluk[urun_rota[k]

- 1])
# akıs_liste[k].append(uzunluk[urun_rota[k][h + 1] - 1])
for k in range(0, len(urun_no)):
urun_akıs(k)
print("ürünlerin akış sırasındaki makine uzunluğu:",akıs_liste)
print("*************************************************************")
urun_akıs_maliyet = []
toplam_aynı_satır = []
for i in range(0, len(urun_no)):
toplam_aynı_satır.append([])
toplam_farklı = []
for i in range(0, len(urun_no)):
toplam_farklı.append([])
toplam_farklı_sağ = []
for i in range(0, len(urun_no)):
toplam_farklı_sağ.append([])
toplam_min = []
for i in range(0, len(urun_no)):
toplam_min.append([])
#print(toplam_min)
for k in range(0, len(akıs_liste)):
#print("k:", k)
#print(akıs_liste[k])
for l in range(0, len(akıs_liste[k]) - 1):
for e in range(0, len(akıs_liste[k])):
if e - l == 1:
#print("l:", l)
#print("e:", e)
#print("kl:", akıs_liste[k][l])
#print("ke:", akıs_liste[k][e])
# print(akıs_liste[k][l])
# print(akıs_liste[k][e])
for s in range(0, len(sıralı_uzunluk)):
for h in range(0, len(sıralı_uzunluk)):
if s == h:
if akıs_liste[k][l] in sıralı_uzunluk and akıs_liste[k][e] in sıralı_uzunluk

:
#print("a:", akıs_liste[k][l])
a = sıralı_uzunluk.index(akıs_liste[k][l])
#print("a:", a)
#print("b", akıs_liste[k][e])
b = sıralı_uzunluk

.index(akıs_liste[k][e])
#print("b:", b)
if a > b:
a, b = b, a
toplam = 0
for t in range(a, b + 1):
toplam += sıralı_uzunluk[t]
toplam = toplam - (akıs_liste[k][l] / 2 + akıs_liste[k][e] / 2)
toplam = toplam + (abs(a - b) * gm)
#print("toplam:", toplam)
toplam_aynı_satır[k].append(toplam)
else:
toplam = 0
for t in range(a, b + 1):
toplam += sıralı_uzunluk[t]
toplam = toplam - (akıs_liste[k][l] / 2 + akıs_liste[k][e] / 2)
toplam = toplam + (abs(a - b) * gm)
#print("toplam:", toplam)
toplam_aynı_satır[k].append(toplam)
else:
if akıs_liste[k][l] in sıralı_uzunluk and akıs_liste[k][e] in sıralı_uzunluk

:
#print("a:", akıs_liste[k][l])
a = sıralı_uzunluk.index(akıs_liste[k][l])
#print("a:", a)
#print("b:", akıs_liste[k][e])
b = sıralı_uzunluk

.index(akıs_liste[k][e])
#print("b:", b)
if a == 0 and b == 0:
if s < h:
toplam = akıs_liste[k][l] / 2 + akıs_liste[k][e] / 2
toplam_sağ = (satır_uzunluk[0] - akıs_liste[k][l] / 2) + (
satır_uzunluk

[0] - akıs_liste[k][e] / 2)
toplam1 = 0
for t in range(s + 1, h + 1):
if len(satır_genislik_maximum[t]) == 0:
satır_genislik_maximum[t].append(0)
toplam1 += satır_genislik_maximum[t][0]
toplam1 = toplam1 + (abs(h - s) * gr)
toplam = toplam + toplam1
#print("toplam:", toplam)
toplam_sağ = toplam_sağ + toplam1
#print("toplam sağ:", toplam_sağ)
toplam_farklı[k].append(toplam)
toplam_farklı_sağ[k].append(toplam_sağ)
else:
toplam = akıs_liste[k][l] / 2 + akıs_liste[k][e] / 2
toplam_sağ = (satır_uzunluk[0] - akıs_liste[k][l] / 2) + (
satır_uzunluk

[0] - akıs_liste[k][e] / 2)
toplam1 = 0
for t in range(h + 1, s + 1):
if len(satır_genislik_maximum[t]) == 0:
satır_genislik_maximum[t].append(0)
toplam1 += satır_genislik_maximum[t][0]
toplam1 = toplam1 + (abs(h - s) * gr)
toplam = toplam + toplam1
#print("toplam:", toplam)
toplam_sağ = toplam_sağ + toplam1
#print("toplam sağ:", toplam_sağ)
toplam_farklı[k].append(toplam)
toplam_farklı_sağ[k].append(toplam_sağ)
elif a == 0 and b != 0:
if s < h:
toplam = akıs_liste[k][l] / 2
toplam_sağ = satır_uzunluk[0] - akıs_liste[k][l] / 2
toplam_b = 0
for t in range(0, b):
toplam_b += sıralı_uzunluk

[t]
toplam_b = toplam_b + akıs_liste[k][e] / 2 + (b * gm)
toplam_b_sağ = satır_uzunluk

[0] - toplam_b
toplam = toplam + toplam_b
toplam_sağ = toplam_sağ + toplam_b_sağ
toplam1 = 0
for t in range(s + 1, h + 1):
if len(satır_genislik_maximum[t]) == 0:
satır_genislik_maximum[t].append(0)
toplam1 += satır_genislik_maximum[t][0]
toplam1 = toplam1 + (abs(h - s) * gr)
toplam = toplam + toplam1
#print("toplam:", toplam)
toplam_sağ = toplam_sağ + toplam1
#print("toplam sağ:", toplam_sağ)
toplam_farklı[k].append(toplam)
toplam_farklı_sağ[k].append(toplam_sağ)
else:
toplam = akıs_liste[k][l] / 2
toplam_sağ = satır_uzunluk[0] - akıs_liste[k][l] / 2
toplam_b = 0
for t in range(0, b):
toplam_b += sıralı_uzunluk

[t]
toplam_b = toplam_b + akıs_liste[k][e] / 2 + (b * gm)
toplam_b_sağ = satır_uzunluk

[0] - toplam_b
toplam = toplam + toplam_b
toplam_sağ = toplam_sağ + toplam_b_sağ
toplam1 = 0
for t in range(h + 1, s + 1):
if len(satır_genislik_maximum[t]) == 0:
satır_genislik_maximum[t].append(0)
toplam1 += satır_genislik_maximum[t][0]
toplam1 = toplam1 + (abs(h - s) * gr)
toplam = toplam + toplam1
#print("toplam:", toplam)
toplam_sağ = toplam_sağ + toplam1
#print("toplam sağ:", toplam_sağ)
toplam_farklı[k].append(toplam)
toplam_farklı_sağ[k].append(toplam_sağ)
elif a != 0 and b == 0:
if s < h:
toplam = akıs_liste[k][e] / 2
toplam_sağ = satır_uzunluk

[0] - akıs_liste[k][e] / 2
# print("sağ",toplam_sağ)
toplam_a = 0
for t in range(0, a):
toplam_a += sıralı_uzunluk[t]
toplam_a = toplam_a + (akıs_liste[k][l] / 2) + (a * gm)
toplam_a_sağ = satır_uzunluk[0] - toplam_a
# print("sağ",toplam_a_sağ)
toplam = toplam + toplam_a
toplam_sağ = toplam_sağ + toplam_a_sağ
# print("sağ",toplam_sağ)
toplam1 = 0
for t in range(s + 1, h + 1):
if len(satır_genislik_maximum[t]) == 0:
satır_genislik_maximum[t].append(0)
toplam1 += satır_genislik_maximum[t][0]
toplam1 = toplam1 + (abs(h - s) * gr)
toplam = toplam + toplam1
#print("toplam:", toplam)
toplam_sağ = toplam_sağ + toplam1
#print("toplam sağ:", toplam_sağ)
toplam_farklı[k].append(toplam)
toplam_farklı_sağ[k].append(toplam_sağ)
else:
toplam = akıs_liste[k][e] / 2
toplam_sağ = satır_uzunluk

[0] - akıs_liste[k][e] / 2
# print("sağ",toplam_sağ)
toplam_a = 0
for t in range(0, a):
toplam_a += sıralı_uzunluk[t]
toplam_a = toplam_a + (akıs_liste[k][l] / 2) + (a * gm)
toplam_a_sağ = satır_uzunluk[0] - toplam_a
# print("sağ",toplam_a_sağ)
toplam = toplam + toplam_a
toplam_sağ = toplam_sağ + toplam_a_sağ
# print("sağ",toplam_sağ)
toplam1 = 0
for t in range(h + 1, s + 1):
if len(satır_genislik_maximum[t]) == 0:
satır_genislik_maximum[t].append(0)
toplam1 += satır_genislik_maximum[t][0]
toplam1 = toplam1 + (abs(h - s) * gr)
toplam = toplam + toplam1
#print("toplam:", toplam)
toplam_sağ = toplam_sağ + toplam1
#print("toplam sağ:", toplam_sağ)
toplam_farklı[k].append(toplam)
toplam_farklı_sağ[k].append(toplam_sağ)
elif a != 0 and b != 0:
if s < h:
toplam_a = 0
for t in range(0, a):
toplam_a += sıralı_uzunluk[t]
toplam_a = toplam_a + (akıs_liste[k][l] / 2) + (a * gm)
toplam_a_sağ = satır_uzunluk[0] - toplam_a
toplam_b = 0
for t in range(0, b):
toplam_b += sıralı_uzunluk

[t]
toplam_b = toplam_b + (akıs_liste[k][e] / 2) + (b * gm)
toplam_b_sağ = satır_uzunluk

[0] - toplam_b
toplam = toplam_a + toplam_b
toplam_sağ = toplam_a_sağ + toplam_b_sağ
toplam1 = 0
for t in range(s + 1, h + 1):
if len(satır_genislik_maximum[t]) == 0:
satır_genislik_maximum[t].append(0)
toplam1 += satır_genislik_maximum[t][0]
toplam1 = toplam1 + (abs(h - s) * gr)
toplam = toplam + toplam1
#print("toplam:", toplam)
toplam_sağ = toplam_sağ + toplam1
#print("toplam sağ:", toplam_sağ)
toplam_farklı[k].append(toplam)
toplam_farklı_sağ[k].append(toplam_sağ)
else:
toplam_a = 0
for t in range(0, a):
toplam_a += sıralı_uzunluk[t]
toplam_a = toplam_a + (akıs_liste[k][l] / 2) + (a * gm)
toplam_a_sağ = satır_uzunluk[0] - toplam_a
toplam_b = 0
for t in range(0, b):
toplam_b += sıralı_uzunluk

[t]
toplam_b = toplam_b + (akıs_liste[k][e] / 2) + (b * gm)
toplam_b_sağ = satır_uzunluk

[0] - toplam_b
toplam = toplam_a + toplam_b
toplam_sağ = toplam_a_sağ + toplam_b_sağ
toplam1 = 0
for t in range(h + 1, s + 1):
if len(satır_genislik_maximum[t]) == 0:
satır_genislik_maximum[t].append(0)
toplam1 += satır_genislik_maximum[t][0]
toplam1 = toplam1 + (abs(h - s) * gr)
toplam = toplam + toplam1
#print("toplam:", toplam)
toplam_sağ = toplam_sağ + toplam1
#print("toplam sağ:", toplam_sağ)
toplam_farklı[k].append(toplam)
toplam_farklı_sağ[k].append(toplam_sağ)
for i in range(0, len(toplam_farklı)):
for j in range(0, len(toplam_farklı)):
if toplam_farklı[j] <= toplam_farklı_sağ[j]:
toplam_min.append(toplam_farklı[j])
else:
toplam_min.append(toplam_farklı_sağ[j])
# print("min toplam:", toplam_min)
for i in range(0, len(urun_no)):
for j in range(0, len(toplam_aynı_satır)):
if len(toplam_aynı_satır) != 0:
toplam_min.append(toplam_aynı_satır[j])
# print("min toplam:", toplam_min)
for k in range(0, len(toplam_min)):
toplam = 0
for j in range(0, len(toplam_min[k])):
toplam += toplam_min[k][j]
#print(toplam)
urun_akıs_maliyet.append(toplam)
print("aynı satır:", toplam_aynı_satır)
print("farklı satır:", toplam_farklı)
print("farklı satır sağ:", toplam_farklı_sağ)
print("min toplam:", toplam_min)
print("ürünlerin akış maliyeti:", urun_akıs_maliyet)
pop_dayalı_urun_akıs_mal.append(urun_akıs_maliyet)
for i in range(0,NP):
amac_iki(i)
print("*************************************************************************")
print("tüm populasyonların ürün akış maliyeti:",pop_dayalı_urun_akıs_mal)
#normalleştirme
urun_akıs_mal=[]
def akıstoplam(j):
toplam=0
for i in range(0,len(urun_no)):
toplam+=pop_dayalı_urun_akıs_mal[j]
urun_akıs_mal.append(toplam)
for j in range(0,NP):
akıstoplam(j)
print("toplam urun akıs maliyeti:",urun_akıs_mal)
Fmax=[]
Fmin=[]
Amax=[]
Amin=[]
def max_min_bulma(i):
Fmax.append(max(urun_akıs_mal))
Fmin.append(min(urun_akıs_mal))
Amax.append(max(alan))
Amin.append(min(alan))
for i in range(0,NP):
max_min_bulma(i)
print("fmax:",Fmax)
print("fmin:",Fmin)
print("amax:",Amax)
print("amin:",Amin)
normallesmis_akıs=[]
normallesmis_alan=[]
def norm_akıs_alan(i):
flow=(urun_akıs_mal - Fmin[0]) / (Fmax[0]-Fmin[0])
normallesmis_akıs.append(flow)
norm_alan= (alan-Amin[0]) / (Amax[0]-Amin[0])
normallesmis_alan.append(norm_alan)
for i in range(0,NP):
norm_akıs_alan(i)
print("normalleşmiş akış:",normallesmis_akıs)
print("normalleşmiş alan:",normallesmis_alan)
normallesmis_amac=[]
def normal_amac(i):
amac=normallesmis_akıs+normallesmis_alan
normallesmis_amac.append(amac)
for i in range(0,NP):
normal_amac(i)
print("normalleşmiş amaç:",normallesmis_amac)
print("***************************************************************************")
#Mutasyon evresi
from random import sample
import random
mutant_populasyon=[]
aday_popuplasyon=[]
def mutasyon(i):
mutant_populasyon.append([])
aday_popuplasyon.append([])
aday=list(range(0,NP))
#print("aday:",aday)
aday.remove(i)
#print("aday:", aday)
rasgele_index = sample(aday, 3)
#print("rasgele index:",rasgele_index)
XA = populasyon[rasgele_index[0]]
XB = populasyon[rasgele_index[1]]
XC = populasyon[rasgele_index[2]]
#print("XA:", XA)
#print("XB:",XB)
#print("XC:",XC)
for j in range(0,len(populasyon)):
XA[j] = float(XA[j])
XB[j] = float(XB[j])
XC[j] = float(XC[j])
mutasyon= XA[j] + F*(XB[j]-XC[j])
mutant_populasyon.append(mutasyon)
# Çaprazlama evresi
rassal= random.random()
#print("rassal:",rassal)
k= random.randint(0,m)
#print("k:",k)
if rassal <= CR or k==j:
aday_popuplasyon.append(mutant_populasyon[j])
else:
aday_popuplasyon.append(populasyon[j])
# Kendime göre adayı düzenleme
aday_popuplasyon[j] = float(aday_popuplasyon[j])
if aday_popuplasyon[j] < 0:
aday_popuplasyon[j] = aday_popuplasyon[j] * (-1)
aday_popuplasyon[j] = str(aday_popuplasyon[j])
if aday_popuplasyon[j][0] == "0":
aday_popuplasyon[j] = float(aday_popuplasyon[j])
aday_popuplasyon[j] = aday_popuplasyon[j] + 1
aday_popuplasyon[j] = float(aday_popuplasyon[j])
if aday_popuplasyon[j] >= r + 1:
aday_popuplasyon[j] = str(aday_popuplasyon[j])
a = aday_popuplasyon[j][0]
a = int(a)
aday_popuplasyon[j] = float(aday_popuplasyon[j])
aday_popuplasyon[j] = aday_popuplasyon[j] - abs(a - r)
for i in range(0,NP):
mutasyon(i)
print("mutant populasyon:",mutant_populasyon)
print("aday populasyon:",aday_popuplasyon)
baslangıc_alan=[]
baslangıc_akısmal=[]
baslangıc_normallesmisamac=[]
for i in range(0,NP):
baslangıc_alan.append(alan)
baslangıc_akısmal.append(urun_akıs_mal)
baslangıc_normallesmisamac.append(normallesmis_amac)
print("ilk çözümün alanı:",baslangıc_alan)
print("ilk çözümün akış maliyeti:",baslangıc_akısmal)
print("ilk çözümün normalleştirilmiş amaç fonksiyon değeri:",baslangıc_normallesmisamac)

Uzunca bir kod. Yukarıda oluşturduğum amaç fonksiyonlarını en sonda oluşturduğum aday populasyon listemin içindeki değerler için hesaplatmak istiyorum.


üstü çizili gelmiş anlaşılır değilse dosya halinde yükleyeyim
bud
2014'den beri5.326 mesaj
#4
1646137662311.png

Kod ekleme kısmından paylaşırsan daha iyi olur yoksa kodun anlaşılması imkansız.
2022'den beri3 mesaj
#5
bud dedi: ↑
Kodu paylaşırsan yardımcı olabiliriz.
bud dedi: ↑
Kodu paylaşırsan yardımcı olabiliriz.
NP = int(input("Popülasyon büyüklüğünü giriniz:"))
print("NP:",NP)

F = float(input("Ölçek faktörünü giriniz:"))
print("F:",F)

CR = float(input("Çaprazlama oranını giriniz:"))
print("CR:",CR)

#Satırlar arası ve makineler arası gereken boşluk
gm = 2
gr = 2

#Satır sayısı
r=5

#ürün sayısı makine sayısı ve makinelerin genişlik uzunluklarının okunması

ezgi_dosya = open("C:/Users/kullanici/Desktop/Test Problemleri/test_1.txt","r",encoding="utf-8")
for i in range(0,4):
    line=ezgi_dosya.readline()
    if i==1:n=int(line) #ürün sayısı
    if i==3:m=int(line) #makine sayısı

while line.find("n w  l")==-1:
    line=ezgi_dosya.readline()
genıslık_uzunluk={}

while 1:
    line=ezgi_dosya.readline()
    if line.find("bitti")!=-1:
        break
    (n,w,l)=line.split()
    genıslık_uzunluk[int(n)]=(float(w),float(l))
ezgi_dosya.close()
print(genıslık_uzunluk)
(w,l)=genıslık_uzunluk[1]
#print(genıslık_uzunluk[1])
genıslık=[]
uzunluk=[]
for i in range(m):
    (w,l)=genıslık_uzunluk[i+1]
    genıslık.append(w)
    uzunluk.append(l)
print("urun_genislik:",genıslık)
print("urun_uzunluk:",uzunluk)

#ürün rotalarınınokunması

ezgi_dosya2=open("C:/Users/kullanici/Desktop/Test Problemleri/test_1_rota.txt","r",encoding="utf-8")
satir=ezgi_dosya2.readline()
while satir.find("başla")==-1:
    satir=ezgi_dosya2.readline()
urunno_rota={}
while 1:
    satir = ezgi_dosya2.readline()
    if satir.find("bitti")!=-1:
        break
    satir=satir[:-1]
    liste1=satir.split(",")
    x=len(liste1)
    urunno_rota[int(liste1[0])]=liste1[1:x]
print(urunno_rota)
#print(liste1)
#print(urunno_rota[(1)])
ezgi_dosya2.close()
urun_no=[]
urun_rota=[]
for i in  urunno_rota.keys():
    urun_no.append(i)
print("urun_no:",urun_no)
for i in urunno_rota.values():
    urun_rota.append(i)
print("urun_rota:",urun_rota)
#print(urun_rota[0])

print("**************************************************************************************")
#başlangıç çözüm oluşturma

import random
populasyon = []
for i in range(0,NP):
    brey = []
    for j in range(1,m+1):
        brey.append("{:.4f}".format(random.uniform(1, r + 1)))
    #print(brey)
    populasyon.append(brey)
print("populasyon:",populasyon)
print("**************************************************************************************")
#birinci amaç fonksiyonu bulma

length=[]
depth=[]
satır_genislik_maximum=[]
def amac_bir(i):
    satır_liste = []
    satır_liste_uzunluk=[]
    for h in range(0, r):
        satır_liste.append([])
        satır_liste_uzunluk.append([])
    for j in range(0, m):
        for k in range(0, r):
            if populasyon[i][j][0] == str(k + 1):
                satır_liste[k].append(genıslık[j])
                satır_liste[k].sort(reverse=True)
                satır_liste_uzunluk[k].append(uzunluk[j])
    #print("genislik:",satır_liste)
    #print("uzunluk:",satır_liste_uzunluk)
    satır_genislik=[]
    for k in range(0,r):
        satır_genislik.append(satır_liste[k][:1])
        satır_genislik_maximum.append(satır_liste[k][:1])
    #print("satırların max genişliği:",satır_genislik)
    genislik_toplam=0
    for i in range(0,r):
        for j in range(0,len(satır_genislik[i])):
            genislik_toplam+=satır_genislik[i][j]
    #print("toplam genislik:",genislik_toplam)
    genislik_toplam=genislik_toplam+(gr*(r-1))
    #print("toplam genislik:", genislik_toplam)
    uzunluk_liste = []
    for j in range(0,r):
        toplam = 0
        for i in range(0,len(satır_liste_uzunluk[j])):
            toplam+=satır_liste_uzunluk[j][i]
        toplam=toplam+(gm*(len(satır_liste_uzunluk[j])-1))
        uzunluk_liste.append(toplam)
        uzunluk_liste.sort(reverse=True)
    #print(uzunluk_liste)
    uzunluk_toplam=uzunluk_liste[:1]
    #print("uzunluk toplam:",uzunluk_toplam)

    length.append(uzunluk_toplam[0])
    depth.append(genislik_toplam)

for i in range(0,NP):
    amac_bir(i)

print("length:",length)
print("depth:",depth)
#print("genişlik",satır_genislik_maximum)

alan=[]
for i in range(0,NP):
    alan.append(length[i]*depth[i])
print("alan:",alan)

print("***********************************************************")
#ikinci amaç fonksiyounu bulma

pop_dayalı_urun_akıs_mal=[]

def amac_iki(i):
    satır_liste = []
    for h in range(0, r):
        satır_liste.append([])
    for j in range(0, m):
        for k in range(0,r):
            if populasyon[i][j][0] == str(k+1):
                satır_liste[k].append(populasyon[i][j])
                satır_liste[k].sort()
    print("satırlara atanan populasyonlar:",satır_liste)
    sıralı_genislik=[]
    sıralı_uzunluk=[]
    sıralı_makine=[]
    for h in range(0,r):
        sıralı_genislik.append([])
        sıralı_uzunluk.append([])
        sıralı_makine.append([])
    for j in range(0,r):
        for l in range(0,len(satır_liste[j])):
            for k in range(0,m):
                if satır_liste[j][l]==populasyon[i][k]:
                    sıralı_genislik[j].append(genıslık[k])
                    sıralı_uzunluk[j].append(uzunluk[k])
                    sıralı_makine[j].append(genıslık_uzunluk[(k+1)])
    print("genişlikler sıralı:",sıralı_genislik)
    print("uzunluklar sıralı:", sıralı_uzunluk)
    print("makineler sıralı:", sıralı_makine)

    for i in range(0,r):
        for j in range(0,len(sıralı_uzunluk[i])):
            sıralı_uzunluk[i][j]=float(sıralı_uzunluk[i][j])

    for i in range(0,len(urun_no)):
        for j in range(0,len(urun_rota[i])):
            urun_rota[i][j]=int(urun_rota[i][j])

    satır_uzunluk=[]
    for i in range(0,r):
        satır_uzunluk.append([])
    #print(satır_uzunluk)
    for j in range(0,r):
        toplam = 0
        for i in range(0,len(sıralı_uzunluk[j])):
            toplam+=sıralı_uzunluk[j][i]
        toplam=toplam + ((len(sıralı_uzunluk[j])-1) * gm)
        satır_uzunluk[j].append(toplam)
        #print(toplam)
    print("satırların uzunluğu:",satır_uzunluk)
    satır_genislik_maximum=[]
    for i in range(0,r):
        sıralı_genislik[i].sort(reverse=True)
        if sıralı_genislik[i]!=[]:
            satır_genislik_maximum.append(sıralı_genislik[i][:1])
        else:
            satır_genislik_maximum.append([])
    #print(satır_genislik_maximum)
    print("satırların genişliği:", satır_genislik_maximum)
    print("******************************************************************")
    # print(type(urun_rota[0][0]))
    akıs_liste = []
    for i in range(0, len(urun_rota)):
        akıs_liste.append([])
    # print(liste)
    def urun_akıs(k):
        for h in range(0, len(urun_rota[k])):
            akıs_liste[k].append(uzunluk[urun_rota[k][h] - 1])
            # akıs_liste[k].append(uzunluk[urun_rota[k][h + 1] - 1])
    for k in range(0, len(urun_no)):
        urun_akıs(k)
    print("ürünlerin akış sırasındaki makine uzunluğu:",akıs_liste)
    print("*************************************************************")
    urun_akıs_maliyet = []
    toplam_aynı_satır = []
    for i in range(0, len(urun_no)):
        toplam_aynı_satır.append([])
    toplam_farklı = []
    for i in range(0, len(urun_no)):
        toplam_farklı.append([])
    toplam_farklı_sağ = []
    for i in range(0, len(urun_no)):
        toplam_farklı_sağ.append([])
    toplam_min = []
    for i in range(0, len(urun_no)):
        toplam_min.append([])
    #print(toplam_min)
    for k in range(0, len(akıs_liste)):
        #print("k:", k)
        #print(akıs_liste[k])
        for l in range(0, len(akıs_liste[k]) - 1):
            for e in range(0, len(akıs_liste[k])):
                if e - l == 1:
                    #print("l:", l)
                    #print("e:", e)
                    #print("kl:", akıs_liste[k][l])
                    #print("ke:", akıs_liste[k][e])
                    # print(akıs_liste[k][l])
                    # print(akıs_liste[k][e])
                    for s in range(0, len(sıralı_uzunluk)):
                        for h in range(0, len(sıralı_uzunluk)):
                            if s == h:
                                if akıs_liste[k][l] in sıralı_uzunluk[s] and akıs_liste[k][e] in sıralı_uzunluk[h]:
                                    #print("a:", akıs_liste[k][l])
                                    a = sıralı_uzunluk[s].index(akıs_liste[k][l])
                                    #print("a:", a)
                                    #print("b", akıs_liste[k][e])
                                    b = sıralı_uzunluk[h].index(akıs_liste[k][e])
                                    #print("b:", b)
                                    if a > b:
                                        a, b = b, a
                                        toplam = 0
                                        for t in range(a, b + 1):
                                            toplam += sıralı_uzunluk[s][t]
                                        toplam = toplam - (akıs_liste[k][l] / 2 + akıs_liste[k][e] / 2)
                                        toplam = toplam + (abs(a - b) * gm)
                                        #print("toplam:", toplam)
                                        toplam_aynı_satır[k].append(toplam)
                                    else:
                                        toplam = 0
                                        for t in range(a, b + 1):
                                            toplam += sıralı_uzunluk[s][t]
                                        toplam = toplam - (akıs_liste[k][l] / 2 + akıs_liste[k][e] / 2)
                                        toplam = toplam + (abs(a - b) * gm)
                                        #print("toplam:", toplam)
                                        toplam_aynı_satır[k].append(toplam)
                            else:
                                if akıs_liste[k][l] in sıralı_uzunluk[s] and akıs_liste[k][e] in sıralı_uzunluk[h]:
                                    #print("a:", akıs_liste[k][l])
                                    a = sıralı_uzunluk[s].index(akıs_liste[k][l])
                                    #print("a:", a)
                                    #print("b:", akıs_liste[k][e])
                                    b = sıralı_uzunluk[h].index(akıs_liste[k][e])
                                    #print("b:", b)
                                    if a == 0 and b == 0:
                                        if s < h:
                                            toplam = akıs_liste[k][l] / 2 + akıs_liste[k][e] / 2
                                            toplam_sağ = (satır_uzunluk[s][0] - akıs_liste[k][l] / 2) + (
                                                        satır_uzunluk[h][0] - akıs_liste[k][e] / 2)
                                            toplam1 = 0
                                            for t in range(s + 1, h + 1):
                                                if len(satır_genislik_maximum[t]) == 0:
                                                    satır_genislik_maximum[t].append(0)
                                                toplam1 += satır_genislik_maximum[t][0]
                                            toplam1 = toplam1 + (abs(h - s) * gr)
                                            toplam = toplam + toplam1
                                            #print("toplam:", toplam)
                                            toplam_sağ = toplam_sağ + toplam1
                                            #print("toplam sağ:", toplam_sağ)
                                            toplam_farklı[k].append(toplam)
                                            toplam_farklı_sağ[k].append(toplam_sağ)
                                        else:
                                            toplam = akıs_liste[k][l] / 2 + akıs_liste[k][e] / 2
                                            toplam_sağ = (satır_uzunluk[s][0] - akıs_liste[k][l] / 2) + (
                                                        satır_uzunluk[h][0] - akıs_liste[k][e] / 2)
                                            toplam1 = 0
                                            for t in range(h + 1, s + 1):
                                                if len(satır_genislik_maximum[t]) == 0:
                                                    satır_genislik_maximum[t].append(0)
                                                toplam1 += satır_genislik_maximum[t][0]
                                            toplam1 = toplam1 + (abs(h - s) * gr)
                                            toplam = toplam + toplam1
                                            #print("toplam:", toplam)
                                            toplam_sağ = toplam_sağ + toplam1
                                            #print("toplam sağ:", toplam_sağ)
                                            toplam_farklı[k].append(toplam)
                                            toplam_farklı_sağ[k].append(toplam_sağ)
                                    elif a == 0 and b != 0:
                                        if s < h:
                                            toplam = akıs_liste[k][l] / 2
                                            toplam_sağ = satır_uzunluk[s][0] - akıs_liste[k][l] / 2
                                            toplam_b = 0
                                            for t in range(0, b):
                                                toplam_b += sıralı_uzunluk[h][t]
                                            toplam_b = toplam_b + akıs_liste[k][e] / 2 + (b * gm)
                                            toplam_b_sağ = satır_uzunluk[h][0] - toplam_b
                                            toplam = toplam + toplam_b
                                            toplam_sağ = toplam_sağ + toplam_b_sağ
                                            toplam1 = 0
                                            for t in range(s + 1, h + 1):
                                                if len(satır_genislik_maximum[t]) == 0:
                                                    satır_genislik_maximum[t].append(0)
                                                toplam1 += satır_genislik_maximum[t][0]
                                            toplam1 = toplam1 + (abs(h - s) * gr)
                                            toplam = toplam + toplam1
                                            #print("toplam:", toplam)
                                            toplam_sağ = toplam_sağ + toplam1
                                            #print("toplam sağ:", toplam_sağ)
                                            toplam_farklı[k].append(toplam)
                                            toplam_farklı_sağ[k].append(toplam_sağ)
                                        else:
                                            toplam = akıs_liste[k][l] / 2
                                            toplam_sağ = satır_uzunluk[s][0] - akıs_liste[k][l] / 2
                                            toplam_b = 0
                                            for t in range(0, b):
                                                toplam_b += sıralı_uzunluk[h][t]
                                            toplam_b = toplam_b + akıs_liste[k][e] / 2 + (b * gm)
                                            toplam_b_sağ = satır_uzunluk[h][0] - toplam_b
                                            toplam = toplam + toplam_b
                                            toplam_sağ = toplam_sağ + toplam_b_sağ
                                            toplam1 = 0
                                            for t in range(h + 1, s + 1):
                                                if len(satır_genislik_maximum[t]) == 0:
                                                    satır_genislik_maximum[t].append(0)
                                                toplam1 += satır_genislik_maximum[t][0]
                                            toplam1 = toplam1 + (abs(h - s) * gr)
                                            toplam = toplam + toplam1
                                            #print("toplam:", toplam)
                                            toplam_sağ = toplam_sağ + toplam1
                                            #print("toplam sağ:", toplam_sağ)
                                            toplam_farklı[k].append(toplam)
                                            toplam_farklı_sağ[k].append(toplam_sağ)
                                    elif a != 0 and b == 0:
                                        if s < h:
                                            toplam = akıs_liste[k][e] / 2
                                            toplam_sağ = satır_uzunluk[h][0] - akıs_liste[k][e] / 2
                                            # print("sağ",toplam_sağ)
                                            toplam_a = 0
                                            for t in range(0, a):
                                                toplam_a += sıralı_uzunluk[s][t]
                                            toplam_a = toplam_a + (akıs_liste[k][l] / 2) + (a * gm)
                                            toplam_a_sağ = satır_uzunluk[s][0] - toplam_a
                                            # print("sağ",toplam_a_sağ)
                                            toplam = toplam + toplam_a
                                            toplam_sağ = toplam_sağ + toplam_a_sağ
                                            # print("sağ",toplam_sağ)
                                            toplam1 = 0
                                            for t in range(s + 1, h + 1):
                                                if len(satır_genislik_maximum[t]) == 0:
                                                    satır_genislik_maximum[t].append(0)
                                                toplam1 += satır_genislik_maximum[t][0]
                                            toplam1 = toplam1 + (abs(h - s) * gr)
                                            toplam = toplam + toplam1
                                            #print("toplam:", toplam)
                                            toplam_sağ = toplam_sağ + toplam1
                                            #print("toplam sağ:", toplam_sağ)
                                            toplam_farklı[k].append(toplam)
                                            toplam_farklı_sağ[k].append(toplam_sağ)
                                        else:
                                            toplam = akıs_liste[k][e] / 2
                                            toplam_sağ = satır_uzunluk[h][0] - akıs_liste[k][e] / 2
                                            # print("sağ",toplam_sağ)
                                            toplam_a = 0
                                            for t in range(0, a):
                                                toplam_a += sıralı_uzunluk[s][t]
                                            toplam_a = toplam_a + (akıs_liste[k][l] / 2) + (a * gm)
                                            toplam_a_sağ = satır_uzunluk[s][0] - toplam_a
                                            # print("sağ",toplam_a_sağ)
                                            toplam = toplam + toplam_a
                                            toplam_sağ = toplam_sağ + toplam_a_sağ
                                            # print("sağ",toplam_sağ)
                                            toplam1 = 0
                                            for t in range(h + 1, s + 1):
                                                if len(satır_genislik_maximum[t]) == 0:
                                                    satır_genislik_maximum[t].append(0)
                                                toplam1 += satır_genislik_maximum[t][0]
                                            toplam1 = toplam1 + (abs(h - s) * gr)
                                            toplam = toplam + toplam1
                                            #print("toplam:", toplam)
                                            toplam_sağ = toplam_sağ + toplam1
                                            #print("toplam sağ:", toplam_sağ)
                                            toplam_farklı[k].append(toplam)
                                            toplam_farklı_sağ[k].append(toplam_sağ)
                                    elif a != 0 and b != 0:
                                        if s < h:
                                            toplam_a = 0
                                            for t in range(0, a):
                                                toplam_a += sıralı_uzunluk[s][t]
                                            toplam_a = toplam_a + (akıs_liste[k][l] / 2) + (a * gm)
                                            toplam_a_sağ = satır_uzunluk[s][0] - toplam_a
                                            toplam_b = 0
                                            for t in range(0, b):
                                                toplam_b += sıralı_uzunluk[h][t]
                                            toplam_b = toplam_b + (akıs_liste[k][e] / 2) + (b * gm)
                                            toplam_b_sağ = satır_uzunluk[h][0] - toplam_b
                                            toplam = toplam_a + toplam_b
                                            toplam_sağ = toplam_a_sağ + toplam_b_sağ
                                            toplam1 = 0
                                            for t in range(s + 1, h + 1):
                                                if len(satır_genislik_maximum[t]) == 0:
                                                    satır_genislik_maximum[t].append(0)
                                                toplam1 += satır_genislik_maximum[t][0]
                                            toplam1 = toplam1 + (abs(h - s) * gr)
                                            toplam = toplam + toplam1
                                            #print("toplam:", toplam)
                                            toplam_sağ = toplam_sağ + toplam1
                                            #print("toplam sağ:", toplam_sağ)
                                            toplam_farklı[k].append(toplam)
                                            toplam_farklı_sağ[k].append(toplam_sağ)
                                        else:
                                            toplam_a = 0
                                            for t in range(0, a):
                                                toplam_a += sıralı_uzunluk[s][t]
                                            toplam_a = toplam_a + (akıs_liste[k][l] / 2) + (a * gm)
                                            toplam_a_sağ = satır_uzunluk[s][0] - toplam_a
                                            toplam_b = 0
                                            for t in range(0, b):
                                                toplam_b += sıralı_uzunluk[h][t]
                                            toplam_b = toplam_b + (akıs_liste[k][e] / 2) + (b * gm)
                                            toplam_b_sağ = satır_uzunluk[h][0] - toplam_b
                                            toplam = toplam_a + toplam_b
                                            toplam_sağ = toplam_a_sağ + toplam_b_sağ
                                            toplam1 = 0
                                            for t in range(h + 1, s + 1):
                                                if len(satır_genislik_maximum[t]) == 0:
                                                    satır_genislik_maximum[t].append(0)
                                                toplam1 += satır_genislik_maximum[t][0]
                                            toplam1 = toplam1 + (abs(h - s) * gr)
                                            toplam = toplam + toplam1
                                            #print("toplam:", toplam)
                                            toplam_sağ = toplam_sağ + toplam1
                                            #print("toplam sağ:", toplam_sağ)
                                            toplam_farklı[k].append(toplam)
                                            toplam_farklı_sağ[k].append(toplam_sağ)
    for i in range(0, len(toplam_farklı)):
        for j in range(0, len(toplam_farklı[i])):
            if toplam_farklı[i][j] <= toplam_farklı_sağ[i][j]:
                toplam_min[i].append(toplam_farklı[i][j])
            else:
                toplam_min[i].append(toplam_farklı_sağ[i][j])
    # print("min toplam:", toplam_min)
    for i in range(0, len(urun_no)):
        for j in range(0, len(toplam_aynı_satır[i])):
            if len(toplam_aynı_satır[i]) != 0:
                toplam_min[i].append(toplam_aynı_satır[i][j])
    # print("min toplam:", toplam_min)
    for k in range(0, len(toplam_min)):
        toplam = 0
        for j in range(0, len(toplam_min[k])):
            toplam += toplam_min[k][j]
        #print(toplam)
        urun_akıs_maliyet.append(toplam)
    print("aynı satır:", toplam_aynı_satır)
    print("farklı satır:", toplam_farklı)
    print("farklı satır sağ:", toplam_farklı_sağ)
    print("min toplam:", toplam_min)
    print("ürünlerin akış maliyeti:", urun_akıs_maliyet)
    pop_dayalı_urun_akıs_mal.append(urun_akıs_maliyet)
for i in range(0,NP):
    amac_iki(i)
print("*************************************************************************")
print("tüm populasyonların ürün akış maliyeti:",pop_dayalı_urun_akıs_mal)
#normalleştirme
urun_akıs_mal=[]
def akıstoplam(j):
    toplam=0
    for i in range(0,len(urun_no)):
        toplam+=pop_dayalı_urun_akıs_mal[j][i]
    urun_akıs_mal.append(toplam)
for j in range(0,NP):
    akıstoplam(j)
print("toplam urun akıs maliyeti:",urun_akıs_mal)
Fmax=[]
Fmin=[]
Amax=[]
Amin=[]
def max_min_bulma(i):
    Fmax.append(max(urun_akıs_mal))
    Fmin.append(min(urun_akıs_mal))
    Amax.append(max(alan))
    Amin.append(min(alan))
for i in range(0,NP):
    max_min_bulma(i)
print("fmax:",Fmax)
print("fmin:",Fmin)
print("amax:",Amax)
print("amin:",Amin)
normallesmis_akıs=[]
normallesmis_alan=[]
def norm_akıs_alan(i):
    flow=(urun_akıs_mal[i] - Fmin[0]) / (Fmax[0]-Fmin[0])
    normallesmis_akıs.append(flow)
    norm_alan= (alan[i]-Amin[0]) / (Amax[0]-Amin[0])
    normallesmis_alan.append(norm_alan)
for i in range(0,NP):
    norm_akıs_alan(i)
print("normalleşmiş akış:",normallesmis_akıs)
print("normalleşmiş alan:",normallesmis_alan)
normallesmis_amac=[]
def normal_amac(i):
    amac=normallesmis_akıs[i]+normallesmis_alan[i]
    normallesmis_amac.append(amac)
for i in range(0,NP):
     normal_amac(i)
print("normalleşmiş amaç:",normallesmis_amac)
print("***************************************************************************")
#Mutasyon evresi
from random import sample
import random
mutant_populasyon=[]
aday_popuplasyon=[]
def mutasyon(i):
    mutant_populasyon.append([])
    aday_popuplasyon.append([])
    aday=list(range(0,NP))
    #print("aday:",aday)
    aday.remove(i)
    #print("aday:", aday)
    rasgele_index = sample(aday, 3)
    #print("rasgele index:",rasgele_index)
    XA = populasyon[rasgele_index[0]]
    XB = populasyon[rasgele_index[1]]
    XC = populasyon[rasgele_index[2]]
    #print("XA:", XA)
    #print("XB:",XB)
    #print("XC:",XC)
    for j in range(0,len(populasyon[i])):
        XA[j] = float(XA[j])
        XB[j] = float(XB[j])
        XC[j] = float(XC[j])
        mutasyon= XA[j] + F*(XB[j]-XC[j])
        mutant_populasyon[i].append(mutasyon)
        # Çaprazlama evresi
        rassal= random.random()
        #print("rassal:",rassal)
        k= random.randint(0,m)
        #print("k:",k)
        if rassal <= CR or k==j:
            aday_popuplasyon[i].append(mutant_populasyon[i][j])
        else:
            aday_popuplasyon[i].append(populasyon[i][j])
        # Kendime göre adayı düzenleme
        aday_popuplasyon[i][j] = float(aday_popuplasyon[i][j])
        if aday_popuplasyon[i][j] < 0:
            aday_popuplasyon[i][j] = aday_popuplasyon[i][j] * (-1)
        aday_popuplasyon[i][j] = str(aday_popuplasyon[i][j])
        if aday_popuplasyon[i][j][0] == "0":
            aday_popuplasyon[i][j] = float(aday_popuplasyon[i][j])
            aday_popuplasyon[i][j] = aday_popuplasyon[i][j] + 1
        aday_popuplasyon[i][j] = float(aday_popuplasyon[i][j])
        if aday_popuplasyon[i][j] >= r + 1:
            aday_popuplasyon[i][j] = str(aday_popuplasyon[i][j])
            a = aday_popuplasyon[i][j][0]
            a = int(a)
            aday_popuplasyon[i][j] = float(aday_popuplasyon[i][j])
            aday_popuplasyon[i][j] = aday_popuplasyon[i][j] - abs(a - r)
for i in range(0,NP):
    mutasyon(i)
print("mutant populasyon:",mutant_populasyon)
print("aday populasyon:",aday_popuplasyon)
baslangıc_alan=[]
baslangıc_akısmal=[]
baslangıc_normallesmisamac=[]
for i in range(0,NP):
    baslangıc_alan.append(alan[i])
    baslangıc_akısmal.append(urun_akıs_mal[i])
    baslangıc_normallesmisamac.append(normallesmis_amac[i])
print("ilk çözümün alanı:",baslangıc_alan)
print("ilk çözümün akış maliyeti:",baslangıc_akısmal)
print("ilk çözümün normalleştirilmiş amaç fonksiyon değeri:",baslangıc_normallesmisamac)
👍 1

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.