merhaba if komutuyla gerçekleşmesini istemediğim bir durum var bir minimizasyon problemi çözüyorum genetik algoritma kodları ile. yukarıdaki koddan da anlaşılacağı üzere basıncın min ve max değerleri arasında kalmasını istiyorum ancak algoritmayı çalıştırınca basınç değeri sürekli sadece bir i değerinde Pmin den daha küçük oluyor sebebini bir türlü bulamadım. yazdığım kodda sıkıntı var mı başka nasıl yapabilirim.
Sanırım istediğiniz aralığın dışındaysa çok büyük bir sayıyla toplayarak bir nevi ceza uygulamış oluyorsunuz. Eklediğiniz bu cevaları yakınsama grafiğinde gözlemliyor musunuz?
Görünürde çalışıyor gibi gözüküyor ancak değişkenlerinizin değerlerini bilemediğimiz için bir şey söylemek çok güç. Size tavsiyem, eğer tek şüpheniz yukarıdaki fonksiyon ile ilgiliyse GA ile çalıştırmadan önce ayrı değerlendirin.
Ek olarak çalıştırdığınız optimizasyon algoritmasının da çalışıp çalışmadığına göre yakınsama grafiğinden kontrol etmenizi tavsiye ederim.
Ek olarak,
Sanırım istediğiniz aralığın dışındaysa çok büyük bir sayıyla toplayarak bir nevi ceza uygulamış oluyorsunuz. Eklediğiniz bu cevaları yakınsama grafiğinde gözlemliyor musunuz?
Aynen maliyete yüksek bir ceza maliyeti ekleyip o pozisyonun seçilmesini engellemek istiyorum fakat bu ceza maliyetine rağmen istediğim aralığın altına iniyor.
Bu yapmak istediğimi if komutundan başka bir komutla yada formatla yapabilirmiyiz
Evet maliyetin belli bir noktaya kadar minimize olduğunu grafikten gözlemliyorum. Fakat bu kısıtı aşmasını istemiyorum kısıtı aşıyor olması gerekenden daha minimum bir değer aliyor
Bu kisitinizi amac fonksiyonu icerisinde ifade etmeyi deneyebilirsiniz belki ama bunu matematiksel olarak dusunmek gerek. Literature bakmak faydali olabilir. Buna ek olarak GA icerisinde kisitlari tanimlamayi deneyebilirsiniz. Detaylar icin:
https://it.mathworks.com/help/gads/constrained-minimization-using-ga.html