{"id":36697,"date":"2025-12-21T19:30:44","date_gmt":"2025-12-21T16:30:44","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/"},"modified":"2025-12-21T19:30:44","modified_gmt":"2025-12-21T16:30:44","slug":"python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/","title":{"rendered":"Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu"},"content":{"rendered":"<h2>Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu<\/h2>\n<p>Daire yerle\u015ftirme problemi, belirli bir alan i\u00e7erisine m\u00fcmk\u00fcn olan en fazla say\u0131da veya en b\u00fcy\u00fck \u00e7apl\u0131 daireleri, \u00e7ak\u0131\u015fmayacak \u015fekilde yerle\u015ftirmeyi ama\u00e7layan klasik bir optimizasyon problemidir. Bu makalede, \u00f6zellikle end\u00fcstriyel uygulamalarda s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan tamsay\u0131 k\u0131s\u0131tlar\u0131 alt\u0131nda daire yerle\u015ftirme probleminin, g\u00fc\u00e7l\u00fc bir evrimsel algoritma olan Diferansiyel Evrim (DE) kullan\u0131larak Python ile nas\u0131l optimize edilece\u011fi detayl\u0131 bir \u015fekilde incelenecektir.<\/p>\n<hr>\n<h2>1. Daire Yerle\u015ftirme Problemi ve \u00d6nemi<\/h2>\n<p>Daire yerle\u015ftirme, matematiksel optimizasyonun en zorlu ve ilgi \u00e7ekici alanlar\u0131ndan biridir. Genellikle NP-hard olarak kabul edilen bu problem, \u00e7e\u015fitli end\u00fcstriyel ve bilimsel senaryolarda kar\u015f\u0131m\u0131za \u00e7\u0131kar.<\/p>\n<h3>1.1. Problem Tan\u0131m\u0131 ve Ama\u00e7<\/h3>\n<p>Temel olarak, daire yerle\u015ftirme problemi, belirli bir geometrik b\u00f6lgeye (genellikle bir dikd\u00f6rtgen veya ba\u015fka bir daire) \u00f6nceden tan\u0131mlanm\u0131\u015f bir dizi daireyi (ayn\u0131 veya farkl\u0131 yar\u0131\u00e7aplarda) birbirleriyle \u00e7ak\u0131\u015fmayacak \u015fekilde s\u0131\u011fd\u0131rmay\u0131 ama\u00e7lar. Ama\u00e7, genellikle yerle\u015ftirilebilecek daire say\u0131s\u0131n\u0131 maksimize etmek veya belirli say\u0131da daireyi en k\u00fc\u00e7\u00fck alana s\u0131\u011fd\u0131rmakt\u0131r. Tamsay\u0131 k\u0131s\u0131tlar\u0131 ise dairelerin konumlar\u0131n\u0131n (x, y koordinatlar\u0131) veya yar\u0131\u00e7aplar\u0131n\u0131n belirli bir \u0131zgara \u00fczerinde olmas\u0131n\u0131 ya da ayr\u0131k de\u011ferler almas\u0131n\u0131 gerektirir.<\/p>\n<h3>1.2. Ger\u00e7ek D\u00fcnya Uygulamalar\u0131<\/h3>\n<p>Daire yerle\u015ftirme probleminin pratik uygulamalar\u0131 olduk\u00e7a geni\u015ftir:<\/p>\n<ul>\n<li><strong>Malzeme Kesimi:<\/strong> Metal, kuma\u015f, cam gibi malzemelerden dairesel par\u00e7alar\u0131n en az fireyle kesilmesi.<\/li>\n<li><strong>Ambalajlama ve Lojistik:<\/strong> Dairesel \u00fcr\u00fcnlerin kutulara veya konteynerlere en verimli \u015fekilde yerle\u015ftirilmesi.<\/li>\n<li><strong>Elektronik Tasar\u0131m:<\/strong> Bask\u0131l\u0131 devre kartlar\u0131 (PCB) \u00fczerinde dairesel bile\u015fenlerin d\u00fczenlenmesi.<\/li>\n<li><strong>Uzay ve Savunma:<\/strong> Anten dizilimleri veya sens\u00f6r yerle\u015fimleri.<\/li>\n<li><strong>\u015eehir Planlama:<\/strong> Kentsel alanlarda dairesel hizmet noktalar\u0131n\u0131n (\u00f6rn. baz istasyonlar\u0131) optimal konumland\u0131r\u0131lmas\u0131.<\/li>\n<\/ul>\n<h3>1.3. Zorluklar ve Karma\u015f\u0131kl\u0131k<\/h3>\n<p>Bu problemin karma\u015f\u0131kl\u0131\u011f\u0131, daire say\u0131s\u0131n\u0131n artmas\u0131yla \u00fcstel olarak b\u00fcy\u00fcr. \u00c7ak\u0131\u015fmama k\u0131s\u0131tlar\u0131 do\u011frusal olmayan yap\u0131ya sahiptir ve tamsay\u0131 k\u0131s\u0131tlar\u0131, s\u00fcrekli optimizasyon tekniklerinin do\u011frudan uygulanmas\u0131n\u0131 engeller, bu da problemin \u00e7\u00f6z\u00fcm\u00fcn\u00fc daha da zorla\u015ft\u0131r\u0131r. Geleneksel optimizasyon y\u00f6ntemleri genellikle yerel optimumlarda tak\u0131l\u0131 kalabilirken, evrimsel algoritmalar daha geni\u015f bir arama uzay\u0131n\u0131 ke\u015ffetme yetene\u011fi sunar.<\/p>\n<hr>\n<h2>2. Diferansiyel Evrim Algoritmas\u0131n\u0131n Temelleri<\/h2>\n<p>Diferansiyel Evrim (DE), s\u00fcrekli ve k\u00fcresel optimizasyon problemleri i\u00e7in etkili bir meta-sezgisel algoritmad\u0131r. Sezgisel do\u011fas\u0131 gere\u011fi, zorlu ve do\u011frusal olmayan problemlerin \u00e7\u00f6z\u00fcm\u00fcnde ba\u015far\u0131l\u0131d\u0131r.<\/p>\n<h3>2.1. Evrimsel Algoritmalara Genel Bak\u0131\u015f<\/h3>\n<p>Evrimsel algoritmalar (EA&#8217;lar), do\u011fal se\u00e7ilim ve genetik mutasyon gibi biyolojik evrim prensiplerinden esinlenerek geli\u015ftirilmi\u015f optimizasyon teknikleridir. Pop\u00fclasyon tabanl\u0131d\u0131rlar ve potansiyel \u00e7\u00f6z\u00fcmlerden olu\u015fan bir &#8220;pop\u00fclasyonu&#8221; s\u00fcrekli olarak iyile\u015ftirerek optimum \u00e7\u00f6z\u00fcme yakla\u015fmaya \u00e7al\u0131\u015f\u0131rlar. Genetik Algoritmalar, Par\u00e7ac\u0131k S\u00fcr\u00fc Optimizasyonu ve Diferansiyel Evrim, bu kategorinin pop\u00fcler \u00f6rnekleridir.<\/p>\n<h3>2.2. Diferansiyel Evrim&#8217;in \u00c7al\u0131\u015fma Prensibi<\/h3>\n<p>DE, di\u011fer evrimsel algoritmalara benzer \u015fekilde bir pop\u00fclasyonla ba\u015flar, ancak yeni aday \u00e7\u00f6z\u00fcmler \u00fcretme mekanizmas\u0131 farkl\u0131d\u0131r. Temel ad\u0131mlar\u0131 \u015funlard\u0131r:<\/p>\n<ol>\n<li><strong>Ba\u015flang\u0131\u00e7 Pop\u00fclasyonu:<\/strong> Belirli bir aral\u0131kta rastgele olu\u015fturulan \u00e7\u00f6z\u00fcm adaylar\u0131ndan (vekt\u00f6rler) olu\u015fan bir pop\u00fclasyon ba\u015flat\u0131l\u0131r.<\/li>\n<li><strong>Mutasyon:<\/strong> Her hedef vekt\u00f6r (<code>X_i<\/code>) i\u00e7in, pop\u00fclasyondan rastgele se\u00e7ilen \u00fc\u00e7 farkl\u0131 vekt\u00f6r (<code>X_a, X_b, X_c<\/code>) kullan\u0131larak bir &#8220;mutant vekt\u00f6r&#8221; (<code>V_i<\/code>) olu\u015fturulur. En yayg\u0131n mutasyon stratejisi: <code>V_i = X_a + F * (X_b - X_c)<\/code>. Burada <code>F<\/code>, diferansiyel a\u011f\u0131rl\u0131k (scaling factor) olarak adland\u0131r\u0131lan bir sabittir.<\/li>\n<li><strong>\u00c7aprazlama (Crossover):<\/strong> Mutant vekt\u00f6r (<code>V_i<\/code>) ile hedef vekt\u00f6r (<code>X_i<\/code>) aras\u0131nda \u00e7aprazlama yap\u0131larak bir &#8220;deneme vekt\u00f6r\u00fc&#8221; (<code>U_i<\/code>) olu\u015fturulur. Bu ad\u0131m, her bir boyut i\u00e7in belirli bir olas\u0131l\u0131kla (\u00e7aprazlama oran\u0131, <code>CR<\/code>) mutant vekt\u00f6rden veya hedef vekt\u00f6rden de\u011ferler al\u0131r.<\/li>\n<li><strong>Se\u00e7ilim (Selection):<\/strong> Deneme vekt\u00f6r\u00fc (<code>U_i<\/code>) ile hedef vekt\u00f6r (<code>X_i<\/code>) aras\u0131ndaki uygunluk de\u011ferleri kar\u015f\u0131la\u015ft\u0131r\u0131l\u0131r. E\u011fer <code>U_i<\/code>&#8216;nin uygunlu\u011fu daha iyiyse, <code>X_i<\/code> yerine <code>U_i<\/code> yeni pop\u00fclasyona ge\u00e7er; aksi takdirde <code>X_i<\/code> korunur.<\/li>\n<\/ol>\n<p>Bu ad\u0131mlar, belirli bir iterasyon say\u0131s\u0131na veya bir durdurma kriterine ula\u015fana kadar tekrarlan\u0131r.<\/p>\n<h3>2.3. Avantajlar\u0131 ve Dezavantajlar\u0131<\/h3>\n<p><strong>Avantajlar\u0131:<\/strong><\/p>\n<ul>\n<li>Az say\u0131da parametreye (<code>F<\/code>, <code>CR<\/code>, pop\u00fclasyon boyutu) sahip olmas\u0131 ve bu parametrelerin genellikle kolay ayarlanabilmesi.<\/li>\n<li>K\u00fcresel optimumu bulma konusunda g\u00fc\u00e7l\u00fc olmas\u0131.<\/li>\n<li>Do\u011frusal olmayan ve d\u0131\u015fb\u00fckey olmayan problemler i\u00e7in uygun olmas\u0131.<\/li>\n<\/ul>\n<p><strong>Dezavantajlar\u0131:<\/strong><\/p>\n<ul>\n<li>Baz\u0131 durumlarda yava\u015f yak\u0131nsama.<\/li>\n<li>Parametre se\u00e7imi performans \u00fczerinde etkili olabilir.<\/li>\n<\/ul>\n<hr>\n<h2>3. Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Probleminin Modellenmesi<\/h2>\n<p>Daire yerle\u015ftirme problemini Diferansiyel Evrim ile \u00e7\u00f6zmek i\u00e7in, \u00f6ncelikle problemi matematiksel olarak form\u00fcle etmeli ve bir ama\u00e7 fonksiyonu tan\u0131mlamal\u0131y\u0131z.<\/p>\n<h3>3.1. Ama\u00e7 Fonksiyonu Tan\u0131m\u0131<\/h3>\n<p>Amac\u0131m\u0131z, belirli bir alana yerle\u015ftirilecek daire say\u0131s\u0131n\u0131 maksimize etmek veya belirli say\u0131da daireyi en k\u00fc\u00e7\u00fck alana s\u0131\u011fd\u0131rmak olabilir. En yayg\u0131n yakla\u015f\u0131m, dairelerin \u00e7ak\u0131\u015fmas\u0131n\u0131 cezaland\u0131ran bir uygunluk (fitness) fonksiyonu tan\u0131mlamakt\u0131r. \u00d6rne\u011fin, belirli bir dikd\u00f6rtgen alana <code>N<\/code> adet daireyi yerle\u015ftirirken, ama\u00e7 fonksiyonu dairelerin \u00e7ak\u0131\u015fma miktar\u0131n\u0131 minimize etmeye odaklanabilir. Bu durumda, uygunluk de\u011feri ne kadar d\u00fc\u015f\u00fckse \u00e7\u00f6z\u00fcm o kadar iyidir.<\/p>\n<p>Bir \u00e7\u00f6z\u00fcm vekt\u00f6r\u00fc <code>X = [x1, y1, r1, x2, y2, r2, ..., xN, yN, rN]<\/code> \u015feklinde temsil edilebilir. Burada <code>(xi, yi)<\/code> i-inci dairenin merkezi, <code>ri<\/code> ise yar\u0131\u00e7ap\u0131d\u0131r.<\/p>\n<h3>3.2. K\u0131s\u0131tlay\u0131c\u0131lar (\u00c7ak\u0131\u015fmama, S\u0131n\u0131rlar, Tamsay\u0131 K\u0131s\u0131tlar\u0131)<\/h3>\n<p>Problemin \u00e7\u00f6z\u00fcm\u00fcn\u00fc k\u0131s\u0131tlayan temel unsurlar \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>\u00c7ak\u0131\u015fmama K\u0131s\u0131t\u0131:<\/strong> Herhangi iki daire <code>i<\/code> ve <code>j<\/code> i\u00e7in, merkezleri aras\u0131ndaki mesafe, yar\u0131\u00e7aplar\u0131n\u0131n toplam\u0131ndan k\u00fc\u00e7\u00fck olmamal\u0131d\u0131r: <code>sqrt((xi-xj)^2 + (yi-yj)^2) >= ri + rj<\/code>.<\/li>\n<li><strong>S\u0131n\u0131r K\u0131s\u0131t\u0131:<\/strong> T\u00fcm daireler, tan\u0131mlanan alan\u0131n (\u00f6rn. dikd\u00f6rtgenin) i\u00e7inde kalmal\u0131d\u0131r. \u00d6rne\u011fin, <code>xmin <= xi - ri<\/code>, <code>xi + ri <= xmax<\/code>, vb.<\/li>\n<li><strong>Tamsay\u0131 K\u0131s\u0131tlar\u0131:<\/strong> Daire merkezlerinin <code>x<\/code> ve <code>y<\/code> koordinatlar\u0131 veya yar\u0131\u00e7aplar\u0131 gibi parametreler, sadece tamsay\u0131 de\u011ferler alabilir. Bu, problemin do\u011fas\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde de\u011fi\u015ftirir ve standart DE uygulamalar\u0131n\u0131 zorlar.<\/li>\n<\/ul>\n<h3>3.3. Problem Uzay\u0131n\u0131n Temsili<\/h3>\n<p>DE algoritmas\u0131 s\u00fcrekli de\u011ferlerle \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, tamsay\u0131 k\u0131s\u0131tlar\u0131n\u0131 do\u011frudan ele almak i\u00e7in baz\u0131 stratejiler geli\u015ftirmemiz gerekir. Bir \u00e7\u00f6z\u00fcm vekt\u00f6r\u00fcndeki her bir de\u011fi\u015fken (x, y, r), algoritma taraf\u0131ndan s\u00fcrekli bir aral\u0131kta optimize edilir. Daha sonra bu s\u00fcrekli de\u011ferler, tamsay\u0131 k\u0131s\u0131tlar\u0131na uymas\u0131 i\u00e7in i\u015flenir.<\/p>\n<hr>\n<h2>4. Python ile Diferansiyel Evrim Uygulamas\u0131<\/h2>\n<p>Python, bilimsel hesaplama ve optimizasyon i\u00e7in zengin k\u00fct\u00fcphaneleri sayesinde Diferansiyel Evrim gibi algoritmalar\u0131 uygulamak i\u00e7in ideal bir platformdur.<\/p>\n<h3>4.1. Gerekli K\u00fct\u00fcphaneler (SciPy, NumPy)<\/h3>\n<p>Python'da Diferansiyel Evrim'i uygulamak i\u00e7in ba\u015fl\u0131ca k\u00fct\u00fcphaneler:<\/p>\n<ul>\n<li><strong>NumPy:<\/strong> Say\u0131sal i\u015flemler, vekt\u00f6r ve matris manip\u00fclasyonlar\u0131 i\u00e7in temel k\u00fct\u00fcphane.<\/li>\n<li><strong>SciPy:<\/strong> Bilimsel ve teknik hesaplama ara\u00e7lar\u0131 sunar. \u00d6zellikle <code>scipy.optimize<\/code> mod\u00fcl\u00fc, Diferansiyel Evrim'in haz\u0131r bir uygulamas\u0131n\u0131 (<code>differential_evolution<\/code>) i\u00e7erir.<\/li>\n<\/ul>\n<pre><code class=\"language-python\">\nimport numpy as np\nfrom scipy.optimize import differential_evolution\n<\/pre>\n<p><\/code><\/p>\n<h3>4.2. Ama\u00e7 Fonksiyonunun Kodlanmas\u0131<\/h3>\n<p>Ama\u00e7 fonksiyonu, bir \u00e7\u00f6z\u00fcm vekt\u00f6r\u00fcn\u00fc (dairelerin konum ve yar\u0131\u00e7aplar\u0131n\u0131) girdi olarak al\u0131r ve bu \u00e7\u00f6z\u00fcm\u00fcn \"k\u00f6t\u00fcl\u00fc\u011f\u00fcn\u00fc\" (\u00e7ak\u0131\u015fma miktar\u0131n\u0131 ve s\u0131n\u0131r d\u0131\u015f\u0131na ta\u015fmay\u0131) temsil eden bir say\u0131 d\u00f6nd\u00fcr\u00fcr. DE algoritmas\u0131 bu de\u011feri minimize etmeye \u00e7al\u0131\u015f\u0131r.<\/p>\n<pre><code class=\"language-python\">\ndef objective_function(solution_vector, num_circles, container_width, container_height):\n    # solution_vector: [x1, y1, r1, x2, y2, r2, ...]\n    # Tamsay\u0131 k\u0131s\u0131tlar\u0131 i\u00e7in yuvarlama burada yap\u0131labilir\n    solution_vector = np.round(solution_vector) # Tamsay\u0131 k\u0131s\u0131t\u0131n\u0131 burada uyguluyoruz\n\n    penalty = 0\n    circles = []\n    for i in range(num_circles):\n        x = solution_vector[i * 3]\n        y = solution_vector[i * 3 + 1]\n        r = solution_vector[i * 3 + 2]\n        circles.append({'x': x, 'y': y, 'r': r})\n\n        # S\u0131n\u0131r k\u0131s\u0131tlar\u0131\n        if not (0 <= x - r and x + r <= container_width and \\\n                0 <= y - r and y + r <= container_height):\n            penalty += 1000 # B\u00fcy\u00fck bir ceza ekle\n\n    # \u00c7ak\u0131\u015fma k\u0131s\u0131tlar\u0131\n    for i in range(num_circles):\n        for j in range(i + 1, num_circles):\n            c1 = circles[i]\n            c2 = circles[j]\n            dist = np.sqrt((c1['x'] - c2['x'])<strong>2 + (c1['y'] - c2['y'])<\/strong>2)\n            min_dist = c1['r'] + c2['r']\n            if dist < min_dist:\n                penalty += (min_dist - dist) * 100 # \u00c7ak\u0131\u015fma miktar\u0131na g\u00f6re ceza\n\n    return penalty\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte, <code>np.round()<\/code> fonksiyonu ile tamsay\u0131 k\u0131s\u0131t\u0131 basit\u00e7e uygulanm\u0131\u015ft\u0131r. Bu, DE'nin s\u00fcrekli uzayda arama yap\u0131p, uygunluk hesaplanmadan \u00f6nce aday \u00e7\u00f6z\u00fcm\u00fc tamsay\u0131ya yuvarlamas\u0131 anlam\u0131na gelir.<\/p>\n<h3>4.3. DE Algoritmas\u0131n\u0131n Yap\u0131land\u0131r\u0131lmas\u0131<\/h3>\n<p><code>scipy.optimize.differential_evolution<\/code> fonksiyonu, DE algoritmas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131r. Bu fonksiyon, ama\u00e7 fonksiyonunu, de\u011fi\u015fkenlerin s\u0131n\u0131rlar\u0131n\u0131 ve DE parametrelerini (pop\u00fclasyon boyutu, <code>F<\/code>, <code>CR<\/code>, iterasyon say\u0131s\u0131) al\u0131r.<\/p>\n<pre><code class=\"language-python\">\n# Parametreler\nnum_circles = 5\ncontainer_width = 100\ncontainer_height = 100\n\n# Her daire i\u00e7in (x, y, r) -> 3 de\u011fi\u015fken\n# x: [r, container_width - r]\n# y: [r, container_height - r]\n# r: [min_radius, max_radius]\n# Basitlik ad\u0131na r'yi de tamsay\u0131 k\u0131s\u0131tl\u0131 kabul edelim ve sabit tutal\u0131m\nmin_r = 5\nmax_r = 15 # Yar\u0131\u00e7aplar i\u00e7in de tamsay\u0131 k\u0131s\u0131t\u0131 olabilir\n\nbounds = []\nfor _ in range(num_circles):\n    # x koordinat\u0131 i\u00e7in s\u0131n\u0131rlar\n    bounds.append((min_r, container_width - min_r))\n    # y koordinat\u0131 i\u00e7in s\u0131n\u0131rlar\n    bounds.append((min_r, container_height - min_r))\n    # r yar\u0131\u00e7ap\u0131 i\u00e7in s\u0131n\u0131rlar (e\u011fer de\u011fi\u015fken ise)\n    bounds.append((min_r, max_r))\n\n# Diferansiyel Evrim'i \u00e7al\u0131\u015ft\u0131rma\nresult = differential_evolution(\n    objective_function,\n    bounds,\n    args=(num_circles, container_width, container_height),\n    strategy='best1bin',\n    maxiter=1000,\n    popsize=10,\n    tol=0.01,\n    mutation=(0.5, 1.0),\n    recombination=0.7,\n    seed=42\n)\n\nprint(\"En iyi \u00e7\u00f6z\u00fcm bulundu (yuvarlanm\u0131\u015f):\", np.round(result.x))\nprint(\"Minimum ceza (uygunluk):\", result.fun)\n<\/pre>\n<p><\/code><\/p>\n<hr>\n<h2>5. K\u0131s\u0131tlar\u0131n Y\u00f6netimi ve Optimizasyon Stratejileri<\/h2>\n<p>Tamsay\u0131 k\u0131s\u0131tlar\u0131, DE gibi s\u00fcrekli optimizasyon algoritmalar\u0131 i\u00e7in \u00f6zel stratejiler gerektirir.<\/p>\n<h3>5.1. Sert K\u0131s\u0131tlar\u0131n Ele Al\u0131nmas\u0131 (Penalty Fonksiyonlar\u0131)<\/h3>\n<p>\u00c7ak\u0131\u015fmama ve s\u0131n\u0131r d\u0131\u015f\u0131na \u00e7\u0131kmama gibi \"sert k\u0131s\u0131tlar\", ama\u00e7 fonksiyonuna eklenen b\u00fcy\u00fck cezalar (penalty) ile y\u00f6netilir. E\u011fer bir \u00e7\u00f6z\u00fcm bu k\u0131s\u0131tlar\u0131 ihlal ediyorsa, uygunluk de\u011feri \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131l\u0131r, b\u00f6ylece algoritma bu \u00e7\u00f6z\u00fcmlerden ka\u00e7\u0131nmaya te\u015fvik edilir. Yukar\u0131daki kod \u00f6rne\u011finde bu yakla\u015f\u0131m kullan\u0131lm\u0131\u015ft\u0131r.<\/p>\n<h3>5.2. Tamsay\u0131 K\u0131s\u0131tlar\u0131n\u0131n Entegrasyonu (Yuvarlama, Karma Yakla\u015f\u0131m)<\/h3>\n<p>Tamsay\u0131 k\u0131s\u0131tlar\u0131n\u0131 ele almak i\u00e7in birka\u00e7 yayg\u0131n strateji bulunmaktad\u0131r:<\/p>\n<ol>\n<li><strong>Basit Yuvarlama:<\/strong> En basit y\u00f6ntem, DE'nin s\u00fcrekli uzayda arama yapmas\u0131na izin vermek ve ama\u00e7 fonksiyonunu \u00e7a\u011f\u0131rmadan hemen \u00f6nce veya ama\u00e7 fonksiyonunun i\u00e7inde, ilgili de\u011fi\u015fkenleri en yak\u0131n tamsay\u0131ya yuvarlamakt\u0131r (<code>np.round()<\/code>). Bu y\u00f6ntem h\u0131zl\u0131d\u0131r ancak optimal tamsay\u0131 \u00e7\u00f6z\u00fcmlerini ka\u00e7\u0131rma riski ta\u015f\u0131r \u00e7\u00fcnk\u00fc algoritma yuvarlama nedeniyle olu\u015fan \"d\u00fcz\" b\u00f6lgelerde etkili arama yapamayabilir.<\/li>\n<li><strong>Karma Yakla\u015f\u0131m (Hybrid Approach):<\/strong> DE'yi s\u00fcrekli de\u011fi\u015fkenler i\u00e7in kullan\u0131rken, tamsay\u0131 de\u011fi\u015fkenler i\u00e7in ayr\u0131 bir optimizasyon ad\u0131m\u0131 (\u00f6rn. yerel arama veya k\u0131s\u0131t programlama) entegre edilebilir. Bu daha karma\u015f\u0131k bir yakla\u015f\u0131md\u0131r ancak daha iyi sonu\u00e7lar verebilir.<\/li>\n<li><strong>\u00d6zel Operat\u00f6rler:<\/strong> DE'nin mutasyon ve \u00e7aprazlama operat\u00f6rlerini tamsay\u0131 de\u011fi\u015fkenlere uygun hale getirmek. Ancak bu, standart <code>scipy.optimize.differential_evolution<\/code> fonksiyonunun do\u011frudan kullan\u0131m\u0131n\u0131 zorla\u015ft\u0131r\u0131r ve algoritman\u0131n manuel olarak uygulanmas\u0131n\u0131 gerektirebilir.<\/li>\n<\/ol>\n<p>Bu makalede, basit yuvarlama stratejisi (1. madde) kullan\u0131lm\u0131\u015ft\u0131r. Pratik uygulamalarda, problemin hassasiyetine g\u00f6re daha geli\u015fmi\u015f y\u00f6ntemler denenebilir.<\/p>\n<h3>5.3. Parametre Ayarlama ve \u0130terasyon Y\u00f6netimi<\/h3>\n<p>Diferansiyel Evrim'in performans\u0131, <code>popsize<\/code> (pop\u00fclasyon boyutu), <code>mutation<\/code> (F) ve <code>recombination<\/code> (CR) parametrelerinin se\u00e7imine ba\u011fl\u0131d\u0131r. Bu parametreler genellikle deneme yan\u0131lma yoluyla veya adaptif stratejilerle ayarlan\u0131r. <code>maxiter<\/code> (maksimum iterasyon say\u0131s\u0131) ise algoritman\u0131n ne kadar s\u00fcre \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirler. Daha fazla iterasyon genellikle daha iyi sonu\u00e7lar verir ancak hesaplama s\u00fcresini art\u0131r\u0131r.<\/p>\n<p>Yayg\u0131n olarak kullan\u0131lan ba\u015flang\u0131\u00e7 de\u011ferleri: <code>popsize=10*D<\/code> (D: problem boyutu), <code>F=0.5-1.0<\/code>, <code>CR=0.7-0.9<\/code>.<\/p>\n<hr>\n<h2>6. Uygulama Sonu\u00e7lar\u0131 ve De\u011ferlendirme<\/h2>\n<p>Yukar\u0131daki Python kodunu kullanarak basit bir tamsay\u0131 k\u0131s\u0131tl\u0131 daire yerle\u015ftirme senaryosunu de\u011ferlendirelim.<\/p>\n<h3>6.1. \u00d6rnek Senaryo ve Veri Seti<\/h3>\n<p>Bir 100x100 birimlik kare alana, 5 adet daireyi, yar\u0131\u00e7aplar\u0131 5 ile 15 birim aras\u0131nda tamsay\u0131 de\u011ferler alacak \u015fekilde ve merkez koordinatlar\u0131 da tamsay\u0131 olacak \u015fekilde yerle\u015ftirmeye \u00e7al\u0131\u015fal\u0131m. Ama\u00e7, \u00e7ak\u0131\u015fmay\u0131 ve s\u0131n\u0131r d\u0131\u015f\u0131na \u00e7\u0131kmay\u0131 minimize etmektir.<\/p>\n<p><strong>Daire Say\u0131s\u0131:<\/strong> 5<br \/>\n<strong>Konteyner Boyutlar\u0131:<\/strong> Geni\u015flik=100, Y\u00fckseklik=100<br \/>\n<strong>Yar\u0131\u00e7ap S\u0131n\u0131rlar\u0131:<\/strong> 5 <= r <= 15 (tamsay\u0131)<\/p>\n<h3>6.2. Optimizasyon S\u00fcreci ve G\u00f6zlemler<\/h3>\n<p>Diferansiyel Evrim algoritmas\u0131, ba\u015flang\u0131\u00e7ta rastgele olu\u015fturulan daire yerle\u015fimlerinden ba\u015flayarak, mutasyon, \u00e7aprazlama ve se\u00e7ilim ad\u0131mlar\u0131 arac\u0131l\u0131\u011f\u0131yla pop\u00fclasyonu s\u00fcrekli olarak iyile\u015ftirir. Ama\u00e7 fonksiyonu, her iterasyonda dairelerin \u00e7ak\u0131\u015fma ve s\u0131n\u0131r ihlali miktar\u0131n\u0131 hesaplar ve algoritma daha d\u00fc\u015f\u00fck ceza puan\u0131na sahip \u00e7\u00f6z\u00fcmlere do\u011fru ilerler.<\/p>\n<p>Tamsay\u0131 k\u0131s\u0131tlar\u0131 nedeniyle, algoritma s\u00fcrekli uzayda arama yaparken yuvarlama i\u015flemi, uygunluk y\u00fczeyinde \"basamaklar\" olu\u015fturur. Bu durum, algoritman\u0131n bazen yerel optimumlarda tak\u0131lmas\u0131na neden olabilir. Ancak DE'nin k\u00fcresel arama yetene\u011fi sayesinde, genellikle tatmin edici sonu\u00e7lara ula\u015f\u0131l\u0131r.<\/p>\n<h3>6.3. Elde Edilen \u00c7\u00f6z\u00fcmlerin Analizi<\/h3>\n<p>Yukar\u0131daki \u00f6rnek kodun \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 sonucunda elde edilen <code>result.x<\/code> vekt\u00f6r\u00fc, optimize edilmi\u015f daire merkezleri ve yar\u0131\u00e7aplar\u0131n\u0131 i\u00e7erir. <code>result.fun<\/code> de\u011feri ise elde edilen en iyi \u00e7\u00f6z\u00fcm\u00fcn ceza puan\u0131n\u0131 g\u00f6sterir. \u0130deal bir senaryoda, bu ceza puan\u0131 s\u0131f\u0131ra yak\u0131n olmal\u0131d\u0131r, bu da dairelerin hi\u00e7 \u00e7ak\u0131\u015fmad\u0131\u011f\u0131 ve s\u0131n\u0131rlar i\u00e7inde kald\u0131\u011f\u0131 anlam\u0131na gelir.<\/p>\n<p>\u00c7\u00f6z\u00fcm vekt\u00f6r\u00fcn\u00fc g\u00f6rselle\u015ftirmek, elde edilen yerle\u015fimin kalitesini anlamak i\u00e7in kritik \u00f6neme sahiptir. \u00d6rne\u011fin, bir matplotlib \u00e7izimi ile dairelerin konteyner i\u00e7indeki konumlar\u0131 g\u00f6sterilebilir.<\/p>\n<pre><code class=\"language-python\">\n# G\u00f6rselle\u015ftirme (\u00d6rnek)\nimport matplotlib.pyplot as plt\n\n# ... (Yukar\u0131daki DE \u00e7al\u0131\u015ft\u0131rma kodu) ...\n\nif result.fun < 100: # Kabul edilebilir bir \u00e7\u00f6z\u00fcm bulunduysa\n    optimized_circles = []\n    solution = np.round(result.x)\n    for i in range(num_circles):\n        x = solution[i * 3]\n        y = solution[i * 3 + 1]\n        r = solution[i * 3 + 2]\n        optimized_circles.append({'x': x, 'y': y, 'r': r})\n\n    fig, ax = plt.subplots(figsize=(8, 8))\n    ax.set_xlim(0, container_width)\n    ax.set_ylim(0, container_height)\n    ax.set_aspect('equal', adjustable='box')\n\n    for circle_data in optimized_circles:\n        circle = plt.Circle((circle_data['x'], circle_data['y']), circle_data['r'],\n                            color='blue', alpha=0.6, ec='black')\n        ax.add_patch(circle)\n        ax.text(circle_data['x'], circle_data['y'], f'R={int(circle_data[\"r\"])}',\n                color='white', ha='center', va='center', fontsize=8)\n\n    plt.title(f'Optimize Edilmi\u015f Daire Yerle\u015fimi (Ceza: {result.fun:.2f})')\n    plt.xlabel('X Koordinat\u0131')\n    plt.ylabel('Y Koordinat\u0131')\n    plt.grid(True)\n    plt.show()\nelse:\n    print(\"Tatmin edici bir \u00e7\u00f6z\u00fcm bulunamad\u0131 veya ceza \u00e7ok y\u00fcksek.\")\n<\/pre>\n<p><\/code><\/p>\n<p>Bu g\u00f6rselle\u015ftirme, dairelerin birbirine de\u011fip de\u011fmedi\u011fini ve konteyner i\u00e7inde kal\u0131p kalmad\u0131\u011f\u0131n\u0131 net bir \u015fekilde g\u00f6rmemizi sa\u011flar.<\/p>\n<hr>\n<h2>7. Sonu\u00e7<\/h2>\n<p>Bu makalede, tamsay\u0131 k\u0131s\u0131tl\u0131 daire yerle\u015ftirme probleminin karma\u015f\u0131kl\u0131\u011f\u0131na ve bu zorlu\u011fun \u00fcstesinden gelmek i\u00e7in Diferansiyel Evrim algoritmas\u0131n\u0131n Python ile nas\u0131l kullan\u0131labilece\u011fine odakland\u0131k. Diferansiyel Evrim, esnek yap\u0131s\u0131 ve k\u00fcresel arama yetene\u011fi sayesinde bu t\u00fcr NP-hard problemler i\u00e7in g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm sunmaktad\u0131r.<\/p>\n<p>Python'\u0131n <code>scipy.optimize<\/code> mod\u00fcl\u00fc arac\u0131l\u0131\u011f\u0131yla Diferansiyel Evrim'i kolayca uygulayabildi\u011fimizi ve tamsay\u0131 k\u0131s\u0131tlar\u0131n\u0131 basit yuvarlama stratejisiyle entegre edebildi\u011fimizi g\u00f6rd\u00fck. Ama\u00e7 fonksiyonunun dikkatli bir \u015fekilde tan\u0131mlanmas\u0131 ve k\u0131s\u0131tlar\u0131n ceza terimleri arac\u0131l\u0131\u011f\u0131yla y\u00f6netilmesi, ba\u015far\u0131l\u0131 bir optimizasyon i\u00e7in anahtard\u0131r.<\/p>\n<h3>7.1. Bulgular\u0131n \u00d6zeti<\/h3>\n<p>Diferansiyel Evrim, daire yerle\u015ftirme gibi do\u011frusal olmayan ve k\u0131s\u0131tl\u0131 optimizasyon problemlerinde etkili bir ara\u00e7t\u0131r. Tamsay\u0131 k\u0131s\u0131tlar\u0131, algoritman\u0131n s\u00fcrekli arama uzay\u0131n\u0131 tamsay\u0131 \u00e7\u00f6z\u00fcmlere y\u00f6nlendirmek i\u00e7in yuvarlama gibi basit ama etkili stratejilerle ele al\u0131nabilir. Bu yakla\u015f\u0131m, malzeme kesimi, ambalajlama ve lojistik gibi bir\u00e7ok ger\u00e7ek d\u00fcnya uygulamas\u0131nda de\u011ferli optimizasyonlar sa\u011flayabilir.<\/p>\n<h3>7.2. Diferansiyel Evrimin Katk\u0131s\u0131<\/h3>\n<p>Diferansiyel Evrim, yerel optimumlara tak\u0131lma riskini azaltarak ve geni\u015f bir \u00e7\u00f6z\u00fcm uzay\u0131n\u0131 ke\u015ffederek, geleneksel y\u00f6ntemlerin zorland\u0131\u011f\u0131 durumlarda bile rekabet\u00e7i \u00e7\u00f6z\u00fcmler sunar. Parametrelerinin ayarlanabilirli\u011fi ve nispeten basit uygulama yap\u0131s\u0131, onu m\u00fchendislik ve bilimsel problemler i\u00e7in cazip bir se\u00e7enek haline getirir.<\/p>\n<h3>7.3. Gelecek \u00c7al\u0131\u015fma Alanlar\u0131<\/h3>\n<p>Gelecekteki \u00e7al\u0131\u015fmalar, tamsay\u0131 k\u0131s\u0131tlar\u0131n\u0131 daha sofistike y\u00f6ntemlerle (\u00f6rn. karma tamsay\u0131 programlama ile hibrit yakla\u015f\u0131mlar) entegre etmeye odaklanabilir. Ayr\u0131ca, farkl\u0131 mutasyon ve \u00e7aprazlama stratejileri deneyerek veya adaptif parametre ayarlama teknikleri kullanarak Diferansiyel Evrim'in performans\u0131n\u0131 daha da iyile\u015ftirmek m\u00fcmk\u00fcnd\u00fcr. \u00c7ok ama\u00e7l\u0131 daire yerle\u015ftirme problemleri (\u00f6rn. hem daire say\u0131s\u0131n\u0131 hem de yerle\u015fim s\u00fcresini optimize etme) de ilgi \u00e7ekici ara\u015ft\u0131rma alanlar\u0131d\u0131r.<\/p>\n<hr>\n<h2>8. S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<h3>Daire yerle\u015ftirme neden zor bir problemdir?<\/h3>\n<p>Daire yerle\u015ftirme, dairelerin \u00e7ak\u0131\u015fmamas\u0131 gibi do\u011frusal olmayan k\u0131s\u0131tlar ve genellikle b\u00fcy\u00fck bir arama uzay\u0131 nedeniyle NP-hard bir problemdir. Daire say\u0131s\u0131 artt\u0131k\u00e7a \u00e7\u00f6z\u00fcm uzay\u0131 \u00fcstel olarak b\u00fcy\u00fcr, bu da geleneksel y\u00f6ntemlerle optimal \u00e7\u00f6z\u00fcm\u00fc bulmay\u0131 imkans\u0131z hale getirir.<\/p>\n<h3>Diferansiyel Evrim yerine ba\u015fka algoritmalar kullan\u0131labilir mi?<\/h3>\n<p>Evet, Genetik Algoritmalar, Par\u00e7ac\u0131k S\u00fcr\u00fc Optimizasyonu, Sim\u00fcle Tavlama veya Kar\u0131nca Kolonisi Optimizasyonu gibi di\u011fer evrimsel ve meta-sezgisel algoritmalar da daire yerle\u015ftirme problemleri i\u00e7in kullan\u0131labilir. Her algoritman\u0131n kendine \u00f6zg\u00fc avantajlar\u0131 ve dezavantajlar\u0131 vard\u0131r ve performans, problemin spesifik \u00f6zelliklerine g\u00f6re de\u011fi\u015febilir.<\/p>\n<h3>Tamsay\u0131 k\u0131s\u0131tlar\u0131 performans\u0131 nas\u0131l etkiler?<\/h3>\n<p>Tamsay\u0131 k\u0131s\u0131tlar\u0131, \u00e7\u00f6z\u00fcm uzay\u0131n\u0131 ayr\u0131k hale getirir ve s\u00fcrekli optimizasyon algoritmalar\u0131 i\u00e7in ek bir zorluk te\u015fkil eder. Basit yuvarlama gibi y\u00f6ntemler, algoritman\u0131n \"d\u00fcz\" uygunluk y\u00fczeylerinde arama yapmas\u0131na neden olabilir, bu da yak\u0131nsama h\u0131z\u0131n\u0131 yava\u015flatabilir veya suboptimal \u00e7\u00f6z\u00fcmlere yol a\u00e7abilir. Daha karma\u015f\u0131k stratejiler genellikle daha iyi sonu\u00e7lar verir ancak uygulama karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<h3>Bu y\u00f6ntem hangi end\u00fcstrilerde kullan\u0131labilir?<\/h3>\n<p>Bu y\u00f6ntem, malzeme kesim end\u00fcstrisi (metal, ah\u015fap, tekstil), ambalajlama ve lojistik, elektronik \u00fcretim (PCB tasar\u0131m\u0131), optik ve anten tasar\u0131m\u0131, kentsel planlama ve hatta sanat ve tasar\u0131m gibi bir\u00e7ok alanda kullan\u0131labilir.<\/p>\n","protected":false},"excerpt":{"rendered":"Daire yerle\u015ftirme problemi, belirli bir alan i\u00e7erisine m\u00fcmk\u00fcn olan en fazla say\u0131da veya en b\u00fcy\u00fck \u00e7apl\u0131 daireleri, \u00e7ak\u0131\u015fmayacak \u015fekilde yerle\u015fti&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1403],"tags":[],"class_list":{"0":"post-36697","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu\" \/>\n<meta property=\"og:description\" content=\"Daire yerle\u015ftirme problemi, belirli bir alan i\u00e7erisine m\u00fcmk\u00fcn olan en fazla say\u0131da veya en b\u00fcy\u00fck \u00e7apl\u0131 daireleri, \u00e7ak\u0131\u015fmayacak \u015fekilde yerle\u015fti...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-21T16:30:44+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu\",\"datePublished\":\"2025-12-21T16:30:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/\"},\"wordCount\":1768,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/\",\"name\":\"Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-21T16:30:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/","og_locale":"tr_TR","og_type":"article","og_title":"Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu","og_description":"Daire yerle\u015ftirme problemi, belirli bir alan i\u00e7erisine m\u00fcmk\u00fcn olan en fazla say\u0131da veya en b\u00fcy\u00fck \u00e7apl\u0131 daireleri, \u00e7ak\u0131\u015fmayacak \u015fekilde yerle\u015fti...","og_url":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-21T16:30:44+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu","datePublished":"2025-12-21T16:30:44+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/"},"wordCount":1768,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/","url":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/","name":"Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-21T16:30:44+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/python-ile-diferansiyel-evrim-kullanarak-tamsayi-kisitli-daire-yerlestirme-optimizasyonu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python ile Diferansiyel Evrim Kullanarak Tamsay\u0131 K\u0131s\u0131tl\u0131 Daire Yerle\u015ftirme Optimizasyonu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36697","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36697"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36697\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36697"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36697"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36697"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}