<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://program.sonsuz.us/feed.xml" rel="self" type="application/atom+xml" /><link href="https://program.sonsuz.us/" rel="alternate" type="text/html" /><updated>2026-10-27T12:05:42+00:00</updated><id>https://program.sonsuz.us/feed.xml</id><title type="html">SonsuzUs</title><subtitle>Programlama ve Yazılım</subtitle><author><name>Sonsuz Us</name></author><entry><title type="html">Bir Dakika mı, Sonsuzluk mu? Oyunlarda Zaman Algısının Tasarımı</title><link href="https://program.sonsuz.us/posts/bir-dakika-mi-sonsuzluk-mu-oyunlarda-zaman-algisinin-tasarimi/" rel="alternate" type="text/html" title="Bir Dakika mı, Sonsuzluk mu? Oyunlarda Zaman Algısının Tasarımı" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/bir-dakika-mi-sonsuzluk-mu-oyunlarda-zaman-algisinin-tasarimi</id><content type="html" xml:base="https://program.sonsuz.us/posts/bir-dakika-mi-sonsuzluk-mu-oyunlarda-zaman-algisinin-tasarimi/"><![CDATA[<p>Bir oyunda geçen 30 saniye her zaman 30 saniye gibi hissedilmez. Çatışmanın ortasında göz açıp kapayıncaya kadar geçen bu süre, boş bir yükleme ekranında küçük bir sonsuzluğa dönüşebilir. Çünkü oyuncunun sabrı yalnızca kronometreyle değil; dikkat, beklenti, kontrol hissi ve sunulan geri bildirimle yönetilir. İyi oyun tasarımı zamanı hızlandıramasa bile beynin onu nasıl yorumladığını ustalıkla değiştirebilir.</p>

<p><img src="/img/bir-dakika-mi-15.svg" alt="bir-dakika-mi-15" /></p>

<p>``</p>

<h2 id="fiziksel-zaman-ve-algılanan-zaman">Fiziksel zaman ve algılanan zaman</h2>

<p>Fiziksel zaman ölçülebilirken algılanan zaman öznel bir deneyimdir. Bunu basitleştirilmiş bir modelle şöyle ifade edebiliriz:</p>

\[T_a = T_g \times \frac{B + D}{E + K}\]

<p>Burada $T_a$ algılanan zamanı, $T_g$ gerçek süreyi, $B$ belirsizliği, $D$ dikkatin beklemeye yönelmesini, $E$ eğlenceyi ve $K$ kontrol hissini temsil eder. Bu bilimsel bir ölçüm formülü değil, tasarım kararlarını düşünmek için kullanışlı bir modeldir. Belirsizlik ve beklemeye odaklanma arttıkça süre uzamış gibi hissedilir. Eğlence ve kontrol hissi yükseldiğinde ise aynı süre daha kısa algılanır.</p>

<p>Örneğin yüzde göstergesi bulunmayan donmuş bir ekran, oyuncuya sistemin çalışıp çalışmadığını düşündürür. Belirsizlik yükselir ve oyuncu her saniyeyi izlemeye başlar. Hareketli bir ipucu, ilerleme çubuğu veya etkileşimli mini oyun ise dikkati dağıtır.</p>

<table>
  <thead>
    <tr>
      <th>Bekleme tasarımı</th>
      <th>Oyuncunun düşüncesi</th>
      <th>Algılanan etki</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Boş ve hareketsiz ekran</td>
      <td>“Oyun çöktü mü?”</td>
      <td>Süre çok uzun gelir</td>
    </tr>
    <tr>
      <td>İlerleme çubuğu</td>
      <td>“Ne kadar kaldığını biliyorum.”</td>
      <td>Belirsizlik azalır</td>
    </tr>
    <tr>
      <td>Oynanış ipuçları</td>
      <td>“Bu bilgiyi kullanabilirim.”</td>
      <td>Bekleme faydalı görünür</td>
    </tr>
    <tr>
      <td>Etkileşimli animasyon</td>
      <td>“Hâlâ bir şey yapıyorum.”</td>
      <td>Kontrol hissi artar</td>
    </tr>
    <tr>
      <td>Gizli yükleme koridoru</td>
      <td>“Dünyada ilerliyorum.”</td>
      <td>Yükleme fark edilmez</td>
    </tr>
  </tbody>
</table>

<h2 id="i̇lerleme-çubuğunun-küçük-oyunları">İlerleme çubuğunun küçük oyunları</h2>

<p>İlerleme çubukları her zaman yüklemenin gerçek hızını birebir göstermez. Dosyaların boyutu, disk hızı ve ağ gecikmesi değişken olduğu için doğrusal ilerleme üretmek zordur. Çubuğun uzun süre yüzde 99’da kalması özellikle sinir bozucudur; çünkü arayüz, bitiş sözü vermiş gibi görünür.</p>

<p>Daha dengeli bir gösterge için ölçülen ilerleme doğrudan ekrana verilmek yerine yumuşatılabilir:</p>

\[P_{yeni} = P_{eski} + \alpha(P_{gerçek} - P_{eski})\]

<p>$\alpha$ değeri 0 ile 1 arasındadır. Küçük değerler daha akıcı fakat daha yavaş tepki veren bir animasyon oluşturur. Aşağıdaki JavaScript örneği ani sıçramaları azaltır:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">let</span> <span class="nx">displayedProgress</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>

<span class="kd">function</span> <span class="nf">updateLoading</span><span class="p">(</span><span class="nx">realProgress</span><span class="p">)</span> <span class="p">{</span>
  <span class="kd">const</span> <span class="nx">smoothing</span> <span class="o">=</span> <span class="mf">0.12</span><span class="p">;</span>
  <span class="nx">displayedProgress</span> <span class="o">+=</span>
    <span class="nx">smoothing</span> <span class="o">*</span> <span class="p">(</span><span class="nx">realProgress</span> <span class="o">-</span> <span class="nx">displayedProgress</span><span class="p">);</span>

  <span class="kd">const</span> <span class="nx">percent</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nf">floor</span><span class="p">(</span><span class="nx">displayedProgress</span> <span class="o">*</span> <span class="mi">100</span><span class="p">);</span>
  <span class="nb">document</span><span class="p">.</span><span class="nf">querySelector</span><span class="p">(</span><span class="dl">"</span><span class="s2">.progress-bar</span><span class="dl">"</span><span class="p">).</span><span class="nx">style</span><span class="p">.</span><span class="nx">width</span> <span class="o">=</span> <span class="s2">`</span><span class="p">${</span><span class="nx">percent</span><span class="p">}</span><span class="s2">%`</span><span class="p">;</span>
  <span class="nb">document</span><span class="p">.</span><span class="nf">querySelector</span><span class="p">(</span><span class="dl">"</span><span class="s2">.progress-label</span><span class="dl">"</span><span class="p">).</span><span class="nx">textContent</span> <span class="o">=</span> <span class="s2">`</span><span class="p">${</span><span class="nx">percent</span><span class="p">}</span><span class="s2">%`</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Kod, gerçek yükleme oranına bir anda atlamak yerine ona kademeli biçimde yaklaşır. Ancak gösterge kullanıcıyı kandırmamalıdır. Gerçek işlem tamamlanmadan yüzde 100 göstermek, kısa vadede hızlı görünse de güven kaybına yol açabilir.</p>

<h2 id="beklemeyi-oynanışa-dönüştürmek">Beklemeyi oynanışa dönüştürmek</h2>

<p>Bazı oyunlar yüklemeyi dar geçitler, asansör yolculukları veya yavaş açılan kapılar içine saklar. Oyuncu hareket etmeye devam ettiği için teknik bekleme, kurgu dünyasının parçası olur. Buna karşılık aynı numara çok sık kullanılırsa oyuncular “Bu asansör aslında yükleme ekranı” diyerek perdenin arkasını görmeye başlar.</p>

<p>Respawn süreleri de bilinçli biçimde tasarlanır. Anında yeniden doğmak cezayı anlamsızlaştırabilir; aşırı uzun beklemek ise öfke yaratır. Takım oyunlarında bekleme süresi, oyuncuya haritayı izleme ve strateji kurma fırsatı veriyorsa pasif ceza olmaktan çıkar.</p>

<p>Başarılı zaman manipülasyonunun amacı oyuncuyu aldatmak değil, beklemeyi anlaşılır ve tahmin edilebilir kılmaktır. Geri bildirim verin, belirsizliği azaltın, mümkünse küçük bir kontrol alanı sunun. Saat aynı hızda ilerlese de oyuncunun zihnindeki kronometre böylece çok daha insaflı çalışır.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="oyun tasarımı" /><category term="kullanıcı deneyimi" /><category term="zaman algısı" /><category term="yükleme ekranları" /><category term="oyuncu psikolojisi" /><category term="game development" /><summary type="html"><![CDATA[Bir oyunda geçen 30 saniye her zaman 30 saniye gibi hissedilmez. Çatışmanın ortasında göz açıp kapayıncaya kadar geçen bu süre, boş bir yükleme ekranında küçük bir sonsuzluğa dönüşebilir. Çünkü oyuncunun sabrı yalnızca kronometreyle değil; dikkat, beklenti, kontrol hissi ve sunulan geri bildirimle yönetilir. İyi oyun tasarımı zamanı hızlandıramasa bile beynin onu nasıl yorumladığını ustalıkla değiştirebilir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/bir-dakika-mi-15.png" /><media:content medium="image" url="https://program.sonsuz.us/img/bir-dakika-mi-15.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Director AI: Oyun Zorluğunu Oyuncuya Göre Yöneten Görünmez Yönetmen</title><link href="https://program.sonsuz.us/posts/director-ai-oyun-zorlugunu-oyuncuya-gore-yoneten-gorunmez-yonetmen/" rel="alternate" type="text/html" title="Director AI: Oyun Zorluğunu Oyuncuya Göre Yöneten Görünmez Yönetmen" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/director-ai-oyun-zorlugunu-oyuncuya-gore-yoneten-gorunmez-yonetmen</id><content type="html" xml:base="https://program.sonsuz.us/posts/director-ai-oyun-zorlugunu-oyuncuya-gore-yoneten-gorunmez-yonetmen/"><![CDATA[<p>Bir oyunda tam rahatladığınız anda zombilerin koridordan taşması tesadüf olmayabilir. <em>Left 4 Dead</em> gibi yapımlarda kullanılan Director AI, önceden hazırlanmış olayları sırayla oynatmak yerine oyuncuların durumunu izler, gerilim seviyesini tahmin eder ve karşılaşmaları dinamik biçimde düzenler. Kısacası bu sistem, oyun dünyasının görünmez film yönetmenidir.</p>

<p><img src="/img/director-ai-oyun-26.svg" alt="director-ai-oyun-26" /></p>

<p>``</p>

<h2 id="director-ai-tam-olarak-nedir">Director AI tam olarak nedir?</h2>

<p>Director AI, tek bir düşmanın nasıl hareket edeceğini belirleyen klasik yapay zekâdan farklıdır. Bireysel düşman AI’ı hedef seçme, siper alma veya yol bulma gibi yerel kararlarla ilgilenirken yönetmen sistemi bütün oyun deneyimini denetler.</p>

<table>
  <thead>
    <tr>
      <th>Sistem</th>
      <th>İzlediği ölçek</th>
      <th>Tipik karar</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Düşman AI</td>
      <td>Tek karakter</td>
      <td>Kime saldırmalıyım?</td>
    </tr>
    <tr>
      <td>Director AI</td>
      <td>Takım ve bölüm</td>
      <td>Ne zaman saldırı başlamalı?</td>
    </tr>
    <tr>
      <td>Sabit zorluk</td>
      <td>Önceden tanımlı kurallar</td>
      <td>Düşman ne kadar güçlü?</td>
    </tr>
    <tr>
      <td>Dinamik zorluk</td>
      <td>Anlık oyuncu performansı</td>
      <td>Baskı artırılmalı mı?</td>
    </tr>
  </tbody>
</table>

<p>Amaç oyuncuyu sürekli cezalandırmak değildir. İyi bir yönetmen; stres, rahatlama ve yeniden yükselişten oluşan dramatik bir ritim üretir. Kesintisiz baskı yorucu, sürekli kolaylık ise sıkıcıdır.</p>

<h2 id="oyuncunun-stresi-nasıl-ölçülür">Oyuncunun stresi nasıl ölçülür?</h2>

<p>Sistem doğrudan oyuncunun heyecanını okuyamaz; bunun yerine ölçülebilir sinyaller kullanır. Can miktarı, takım üyeleri arasındaki mesafe, isabet oranı, alınan hasar, cephane ve son saldırıdan beri geçen süre bunlardan bazılarıdır.</p>

<p>Basitleştirilmiş bir stres puanı şöyle hesaplanabilir:</p>

\[S = 0.35D + 0.25(1-H) + 0.20I + 0.20A\]

<p>Burada $D$ normalize edilmiş hasarı, $H$ kalan sağlık oranını, $I$ takımın dağılma seviyesini ve $A$ aktif düşman yoğunluğunu temsil eder. Katsayıların toplamının $1$ olması yorumlamayı kolaylaştırır. Örneğin $S$ değeri $1$’e yaklaştıkça oyuncuların baskı altında olduğu varsayılır.</p>

<p>Tek karelik ölçümler yanıltıcı olabileceğinden üstel hareketli ortalama kullanılabilir:</p>

\[S_t = \alpha x_t + (1-\alpha)S_{t-1}\]

<p>Küçük bir $\alpha$, sistemin ani değişimlere aşırı tepki vermesini engeller. Böylece tek bir kötü nişan, hemen devasa bir zombi sürüsüyle sonuçlanmaz.</p>

<h2 id="gerilim-döngüsü">Gerilim döngüsü</h2>

<p>Director AI genellikle deneyimi aşamalara böler:</p>

<ol>
  <li><strong>Hazırlık:</strong> Oyuncular kaynak toplar ve çevreyi inceler.</li>
  <li><strong>Yükseliş:</strong> Düşman sayısı veya özel tehdit olasılığı artar.</li>
  <li><strong>Zirve:</strong> Yoğun bir saldırı ya da kritik karşılaşma yaşanır.</li>
  <li><strong>Rahatlama:</strong> Baskı azaltılır, oyuncuya toparlanma fırsatı verilir.</li>
</ol>

<p>Bu döngü yalnızca düşman sayısını değiştirmez. Sağlık paketlerinin konumu, müzik, özel düşman türleri ve alternatif yollar da yönetilebilir. Ancak sistem oyuncuya açıkça yardım ederse yapaylık hissi doğar. Bu nedenle ayarlamalar çoğunlukla perde arkasında yapılır.</p>

<h2 id="basit-bir-yönetmen-prototipi">Basit bir yönetmen prototipi</h2>

<p>Aşağıdaki Python örneği, stres puanına göre yönetmenin hangi aşamaya geçeceğini gösterir:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">Director</span><span class="p">:</span>
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
        <span class="n">self</span><span class="p">.</span><span class="n">stress</span> <span class="o">=</span> <span class="mf">0.0</span>
        <span class="n">self</span><span class="p">.</span><span class="n">phase</span> <span class="o">=</span> <span class="sh">"</span><span class="s">hazirlik</span><span class="sh">"</span>

    <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="n">damage</span><span class="p">,</span> <span class="n">low_health</span><span class="p">,</span> <span class="n">isolation</span><span class="p">,</span> <span class="n">enemies</span><span class="p">):</span>
        <span class="n">sample</span> <span class="o">=</span> <span class="p">(</span>
            <span class="mf">0.35</span> <span class="o">*</span> <span class="n">damage</span>
            <span class="o">+</span> <span class="mf">0.25</span> <span class="o">*</span> <span class="n">low_health</span>
            <span class="o">+</span> <span class="mf">0.20</span> <span class="o">*</span> <span class="n">isolation</span>
            <span class="o">+</span> <span class="mf">0.20</span> <span class="o">*</span> <span class="n">enemies</span>
        <span class="p">)</span>

        <span class="c1"># Ölçümü yumuşatarak ani ve dengesiz kararları önler.
</span>        <span class="n">self</span><span class="p">.</span><span class="n">stress</span> <span class="o">=</span> <span class="mf">0.2</span> <span class="o">*</span> <span class="n">sample</span> <span class="o">+</span> <span class="mf">0.8</span> <span class="o">*</span> <span class="n">self</span><span class="p">.</span><span class="n">stress</span>

        <span class="k">if</span> <span class="n">self</span><span class="p">.</span><span class="n">stress</span> <span class="o">&lt;</span> <span class="mf">0.25</span><span class="p">:</span>
            <span class="n">self</span><span class="p">.</span><span class="n">phase</span> <span class="o">=</span> <span class="sh">"</span><span class="s">yukselis</span><span class="sh">"</span>
        <span class="k">elif</span> <span class="n">self</span><span class="p">.</span><span class="n">stress</span> <span class="o">&gt;</span> <span class="mf">0.75</span><span class="p">:</span>
            <span class="n">self</span><span class="p">.</span><span class="n">phase</span> <span class="o">=</span> <span class="sh">"</span><span class="s">rahatlama</span><span class="sh">"</span>
        <span class="k">else</span><span class="p">:</span>
            <span class="n">self</span><span class="p">.</span><span class="n">phase</span> <span class="o">=</span> <span class="sh">"</span><span class="s">denge</span><span class="sh">"</span>

        <span class="k">return</span> <span class="n">self</span><span class="p">.</span><span class="n">phase</span>
</code></pre></div></div>

<p>Buradaki önemli ayrıntı ters dengedir: stres düşükken tehdit artırılır, yüksekken oyuncuya nefes aldırılır. Gerçek projelerde eşiklerin sürekli aşılmasını önlemek için histerezis, aşamalar için minimum süre ve rastlantısal seçim ağırlıkları da eklenir.</p>

<h2 id="adil-görünmek-adil-olmaktan-farklıdır">Adil görünmek, adil olmaktan farklıdır</h2>

<p>Dinamik zorluk sisteminin en büyük riski oyuncunun başarılarını değersizleştirmesidir. İyi oynayan kişiye durmadan daha güçlü düşman göndermek, ilerleme hissini yok edebilir. Çözüm; zorluğu yalnızca sayısal güçle değil, karşılaşma çeşitliliği ve tempo üzerinden düzenlemektir.</p>

<p>Başarılı bir Director AI, oyuncunun ne kazanacağını belirlemez; unutulmaz bir mücadele yaşayabileceği koşulları hazırlar. En iyi yönetmen de zaten varlığını hissettirmeden sahneyi yöneten yönetmendir.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="yapay zeka" /><category term="oyun geliştirme" /><category term="director ai" /><category term="dinamik zorluk" /><category term="left 4 dead" /><category term="oyuncu deneyimi" /><summary type="html"><![CDATA[Bir oyunda tam rahatladığınız anda zombilerin koridordan taşması tesadüf olmayabilir. Left 4 Dead gibi yapımlarda kullanılan Director AI, önceden hazırlanmış olayları sırayla oynatmak yerine oyuncuların durumunu izler, gerilim seviyesini tahmin eder ve karşılaşmaları dinamik biçimde düzenler. Kısacası bu sistem, oyun dünyasının görünmez film yönetmenidir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/director-ai-oyun-26.png" /><media:content medium="image" url="https://program.sonsuz.us/img/director-ai-oyun-26.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Genom Dizileme Verilerinin Biyoinformatik Analizi: Bazlardan Biyolojik Anlama</title><link href="https://program.sonsuz.us/posts/genom-dizileme-verilerinin-biyoinformatik-analizi-bazlardan-biyolojik-anlama/" rel="alternate" type="text/html" title="Genom Dizileme Verilerinin Biyoinformatik Analizi: Bazlardan Biyolojik Anlama" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/genom-dizileme-verilerinin-biyoinformatik-analizi-bazlardan-biyolojik-anlama</id><content type="html" xml:base="https://program.sonsuz.us/posts/genom-dizileme-verilerinin-biyoinformatik-analizi-bazlardan-biyolojik-anlama/"><![CDATA[<p><img src="/img/genom-dizileme-verilerinin-43.svg" alt="genom-dizileme-verilerinin-43" /></p>

<p>Modern dizileme cihazları tek bir deneyde milyarlarca DNA bazı üretebilir. Ancak cihazdan çıkan A, T, G ve C harfleri tek başına pek anlamlı değildir. Bu devasa yapbozu çözmek; kısa DNA parçalarını referans genoma yerleştirmeyi, farklılıkları bulmayı ve sonuçların güvenilirliğini ölçmeyi gerektirir. İşte biyoinformatik, moleküler biyoloji ile algoritmaların el sıkıştığı noktada devreye girer.
``</p>

<h2 id="ham-veriden-genoma-uzanan-yol">Ham veriden genoma uzanan yol</h2>

<p>Dizileme sonucu çoğunlukla <strong>FASTQ</strong> dosyaları elde edilir. Her okuma, yani <em>read</em>, bir DNA dizisiyle birlikte baz kalitesini belirten sayısal değerlere sahiptir. Phred kalite skoru şu ilişkiyle tanımlanır:</p>

\[Q = -10 \log_{10}(P)\]

<p>Buradaki $P$, bazın yanlış okunma olasılığıdır. Örneğin $Q=30$, yaklaşık $P=0.001$ hata olasılığına, yani %99,9 doğruluğa karşılık gelir. Analizin ilk aşamasında FastQC gibi araçlarla kalite dağılımı, GC oranı ve adaptör kalıntıları incelenir. Düşük kaliteli uçlar ve adaptörler temizlenmezse sonraki algoritmalar biyolojik olmayan eşleşmeler üretebilir.</p>

<h2 id="hizalama-neden-zordur">Hizalama neden zordur?</h2>

<p>İnsan genomu yaklaşık 3,2 milyar baz çifti içerir. Buna karşılık tipik bir kısa okuma yalnızca 100–150 baz uzunluğundadır. Üstelik genomda tekrar eden bölgeler, dizileme hataları, eklemeler ve silinmeler bulunur. Dolayısıyla amaç yalnızca aynı metni aramak değil, küçük farklılıklara izin veren en olası konumu bulmaktır.</p>

<p>İki diziyi karşılaştıran klasik dinamik programlama yaklaşımında genel süre karmaşıklığı $O(nm)$ seviyesindedir. Milyonlarca okumada bu maliyet kabul edilemez. Modern hizalayıcılar bu yüzden genomu indeksler ve yalnızca umut vadeden bölgeleri ayrıntılı olarak değerlendirir.</p>

<table>
  <thead>
    <tr>
      <th>Yaklaşım</th>
      <th>Temel fikir</th>
      <th>Güçlü yanı</th>
      <th>Sınırlaması</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Needleman–Wunsch</td>
      <td>Dizileri uçtan uca hizalar</td>
      <td>Küresel hizalamada kesin sonuç</td>
      <td>Büyük veride yavaş</td>
    </tr>
    <tr>
      <td>Smith–Waterman</td>
      <td>En iyi yerel bölgeyi arar</td>
      <td>Hassas eşleşme</td>
      <td>Yüksek hesaplama maliyeti</td>
    </tr>
    <tr>
      <td>Hash indeksleri</td>
      <td>Kısa kelimeleri konumlarla eşler</td>
      <td>Hızlı aday bulma</td>
      <td>Bellek tüketebilir</td>
    </tr>
    <tr>
      <td>BWT/FM-index</td>
      <td>Sıkıştırılmış genom indeksi kullanır</td>
      <td>Hız ve bellek dengesi</td>
      <td>Tekrar bölgelerinde belirsizlik</td>
    </tr>
    <tr>
      <td>De Bruijn grafı</td>
      <td>Okumaları $k$-mer bağlantılarıyla birleştirir</td>
      <td>Referanssız genom montajı</td>
      <td>Hatalara ve $k$ seçimine duyarlı</td>
    </tr>
  </tbody>
</table>

<p>BWA ve Bowtie2 gibi araçlar <strong>Burrows–Wheeler Dönüşümü</strong> ile oluşturulan FM-index yapısından yararlanır. Böylece referans genomun tamamını her okuma için baştan taramak yerine eşleşme aralığı hızlı biçimde daraltılır. Uzun okumalar için Minimap2, dizilerden seçilmiş temsilci parçaları kullanarak aday konumları bulur.</p>

<h2 id="küçük-bir-dizi-karşılaştırma-örneği">Küçük bir dizi karşılaştırma örneği</h2>

<p>Aşağıdaki Python kodu, iki eşit uzunluklu dizinin farklı olduğu konumları belirler. Gerçek hizalayıcıların yaptığı iş çok daha karmaşıktır; ancak varyant bulmanın temel fikrini gösterir:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">reference</span> <span class="o">=</span> <span class="sh">"</span><span class="s">ACGTTGCAACGT</span><span class="sh">"</span>
<span class="n">sample</span> <span class="o">=</span> <span class="sh">"</span><span class="s">ACGTCGCAATGT</span><span class="sh">"</span>

<span class="n">variants</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">position</span><span class="p">,</span> <span class="p">(</span><span class="n">ref_base</span><span class="p">,</span> <span class="n">sample_base</span><span class="p">)</span> <span class="ow">in</span> <span class="nf">enumerate</span><span class="p">(</span>
    <span class="nf">zip</span><span class="p">(</span><span class="n">reference</span><span class="p">,</span> <span class="n">sample</span><span class="p">),</span> <span class="n">start</span><span class="o">=</span><span class="mi">1</span>
<span class="p">):</span>
    <span class="k">if</span> <span class="n">ref_base</span> <span class="o">!=</span> <span class="n">sample_base</span><span class="p">:</span>
        <span class="n">variants</span><span class="p">.</span><span class="nf">append</span><span class="p">({</span>
            <span class="sh">"</span><span class="s">position</span><span class="sh">"</span><span class="p">:</span> <span class="n">position</span><span class="p">,</span>
            <span class="sh">"</span><span class="s">reference</span><span class="sh">"</span><span class="p">:</span> <span class="n">ref_base</span><span class="p">,</span>
            <span class="sh">"</span><span class="s">sample</span><span class="sh">"</span><span class="p">:</span> <span class="n">sample_base</span>
        <span class="p">})</span>

<span class="k">for</span> <span class="n">variant</span> <span class="ow">in</span> <span class="n">variants</span><span class="p">:</span>
    <span class="nf">print</span><span class="p">(</span><span class="n">variant</span><span class="p">)</span>
</code></pre></div></div>

<p>Kod, referans ile örneği baz baz karşılaştırır ve değişen konumları kaydeder. Gerçek analizlerde GATK, FreeBayes veya DeepVariant gibi araçlar yalnızca harf farkına bakmaz; okuma derinliği, baz kalitesi ve hizalama güvenini de hesaba katar.</p>

<p>Bir varyantın destek oranı kabaca $f = a/d$ ile ifade edilebilir. Burada $a$ alternatif bazı destekleyen okuma sayısı, $d$ ise toplam kapsama derinliğidir. Örneğin 40 okumanın 20’si farklı bazı taşıyorsa $f=0.5$ olur; bu durum diploid bir genomda heterozigot varyanta işaret edebilir.</p>

<h2 id="sonuçların-biyolojik-yorumu">Sonuçların biyolojik yorumu</h2>

<p>Hizalama sonrasında SAM/BAM dosyaları düzenlenir, yinelenen okumalar işaretlenir ve varyantlar VCF biçiminde raporlanır. Ardından bulunan değişikliklerin genleri, proteinleri veya hastalık riskini etkileyip etkilemediği araştırılır. En hızlı algoritma bile kötü kaliteli veriyle güvenilir biyoloji üretemez. Bu nedenle genom analizi; doğru indeksleme, istatistiksel değerlendirme, kalite kontrolü ve biyolojik yorumun birlikte yürütüldüğü dikkatli bir süreçtir.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="biyoinformatik" /><category term="genomik" /><category term="dna" /><category term="dizileme" /><category term="algoritma" /><category term="python" /><summary type="html"><![CDATA[Modern dizileme cihazları tek bir deneyde milyarlarca DNA bazı üretebilir. Ancak cihazdan çıkan A, T, G ve C harfleri tek başına pek anlamlı değildir. Bu devasa yapbozu çözmek; kısa DNA parçalarını referans genoma yerleştirmeyi, farklılıkları bulmayı ve sonuçların güvenilirliğini ölçmeyi gerektirir. İşte biyoinformatik, moleküler biyoloji ile algoritmaların el sıkıştığı noktada devreye girer.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/genom-dizileme-verilerinin-43.png" /><media:content medium="image" url="https://program.sonsuz.us/img/genom-dizileme-verilerinin-43.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Görünmez Öğretmen: Oyun Tasarımında Zımni Öğretim</title><link href="https://program.sonsuz.us/posts/gorunmez-ogretmen-oyun-tasariminda-zimni-ogretim/" rel="alternate" type="text/html" title="Görünmez Öğretmen: Oyun Tasarımında Zımni Öğretim" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/gorunmez-ogretmen-oyun-tasariminda-zimni-ogretim</id><content type="html" xml:base="https://program.sonsuz.us/posts/gorunmez-ogretmen-oyun-tasariminda-zimni-ogretim/"><![CDATA[<p>Bir oyun size ekrana kocaman bir pencere açıp “Zıplamak için Space tuşuna bas!” demeden zıplamayı öğretebilir mi? Elbette. Hatta iyi tasarlanmış bir oyun, kurallarını açıktan anlatmak yerine merakınızı, çevreyi okuma yeteneğinizi ve deneme isteğinizi kullanır. İşte oyuncunun farkında olmadan öğrendiği bu yaklaşım, <strong>zımni öğretim</strong> veya İngilizce adıyla <em>implicit tutorial</em> olarak bilinir.</p>

<p><img src="/img/gorunmez-ogretmen-oyun-29.svg" alt="gorunmez-ogretmen-oyun-29" /></p>

<p>``</p>
<h2 id="zımni-öğretim-nedir">Zımni öğretim nedir?</h2>

<p>Zımni öğretim, oyunun mekaniklerini metin kutuları veya uzun açıklamalar yerine <strong>seviye düzeni, görsel ipuçları, güvenli deneyler ve sonuçlar</strong> aracılığıyla öğretmesidir. Tasarımcı oyuncuya doğrudan ne yapacağını söylemez; doğru davranışı keşfedebileceği kontrollü bir durum hazırlar.</p>

<p>Bu yaklaşımın temel döngüsü şöyle modellenebilir:</p>

\[Gözlem \rightarrow Deneme \rightarrow Geri\ Bildirim \rightarrow Öğrenme\]

<p>Örneğin oyuncunun önüne küçük bir çukur yerleştirilir. İlerlemek için zıplaması gerekir; fakat çukur ölümcül değildir. Oyuncu düşse bile kolayca geri çıkabilir. Böylece oyun hem zıplama gereksinimini gösterir hem de hata yapmayı cezalandırmadan denemeye izin verir.</p>

<h2 id="açık-ve-zımni-öğretimin-farkı">Açık ve zımni öğretimin farkı</h2>

<table>
  <thead>
    <tr>
      <th>Özellik</th>
      <th>Açık öğretim</th>
      <th>Zımni öğretim</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Bilgi aktarımı</td>
      <td>Metin, ses veya tuş göstergesi</td>
      <td>Seviye ve çevre düzeni</td>
    </tr>
    <tr>
      <td>Oyuncunun rolü</td>
      <td>Talimatı uygulamak</td>
      <td>Kuralı keşfetmek</td>
    </tr>
    <tr>
      <td>Akışa etkisi</td>
      <td>Oyunu durdurabilir</td>
      <td>Oynanışla bütünleşir</td>
    </tr>
    <tr>
      <td>Hatırlanabilirlik</td>
      <td>Okunan bilgi unutulabilir</td>
      <td>Deneyimlenen bilgi daha kalıcıdır</td>
    </tr>
    <tr>
      <td>Risk</td>
      <td>Bilgi bombardımanı</td>
      <td>İpucunun anlaşılmaması</td>
    </tr>
  </tbody>
</table>

<p>Zımni öğretim her durumda üstün değildir. Karmaşık envanter sistemleri veya erişilebilirlik seçenekleri açık açıklamalar gerektirebilir. İyi tasarım, iki yaklaşımı rakip değil tamamlayıcı araçlar olarak görür.</p>

<h2 id="seviye-tasarımı-nasıl-öğretmene-dönüşür">Seviye tasarımı nasıl öğretmene dönüşür?</h2>

<p>İlk yöntem <strong>odak yönetimidir</strong>. Işık, renk, hareket ve mimari çizgiler oyuncunun bakışını önemli noktaya taşır. Karanlık bir koridordaki tek parlak kapı, üzerinde “Buraya git” yazmasa da oldukça konuşkandır.</p>

<p>İkinci yöntem, yeni mekaniği güvenli bir ortamda tanıtmaktır. Oyuncu patlayan bir varili ilk kez düşmansız bir odada görürse ona ateş ederek sonucunu inceleyebilir. Daha sonra aynı varil düşmanların yanında kullanıldığında oyuncu bağlantıyı kendisi kurar.</p>

<p>Öğrenme başarısını basitçe şu şekilde düşünebiliriz:</p>

\[Öğrenme = İpucuNetliği \times DenemeFırsatı \times GeriBildirimGücü\]

<p>Çarpanlardan biri sıfıra yaklaşırsa öğretim de zayıflar. Parlayan bir nesne dikkat çekebilir; ancak oyuncu onunla etkileşime giremiyorsa anlamlı öğrenme oluşmaz.</p>

<h2 id="küçük-bir-tasarım-örneği">Küçük bir tasarım örneği</h2>

<p>Bir platform oyununda duvardan zıplama mekaniğini tanıttığımızı varsayalım. Seviyenin davranışı aşağıdaki sözde kodla ifade edilebilir:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>oyuncu öğretim_odasına_girince:
    çıkışı yüksek bir noktaya yerleştir
    iki zıplanabilir duvarı karşılıklı konumlandır
    düşülen zemini güvenli yap

oyuncu duvara temas edince:
    karakteri kısa süre duvara tutundur
    görsel parçacık ve ses geri bildirimi üret

oyuncu çıkışa ulaşınca:
    aynı mekaniği düşük riskli bir engelde tekrar kullan
</code></pre></div></div>

<p>Bu kod gerçek bir oyun motoruna bağlı değildir; tasarımın mantığını gösterir. Yüksek çıkış hedefi belirler, karşılıklı duvarlar çözüm alanını sınırlar, güvenli zemin ise korkmadan denemeyi sağlar. Parçacık ve ses, duvarın özel bir davranış sunduğunu bildirir.</p>

<h2 id="tasarımcının-görünmez-eli">Tasarımcının görünmez eli</h2>

<p>Başarılı bir zımni öğretimde oyuncu “Tasarımcı bana bunu öğretti” demez; “Ben bunu çözdüm!” der. Bu sahiplenme duygusu motivasyonu artırır. Ancak ipuçları fazla belirgin olursa keşif hissi kaybolur, fazla belirsiz olursa oyuncu sıkışır.</p>

<p>Bu nedenle iyi bir seviye önce mekaniği <strong>gösterir</strong>, sonra güvenle <strong>denetir</strong>, ardından farklı bir bağlamda <strong>sınar</strong>. Oyuncu kuralları okumak yerine yaşar. Görünmez öğretmenin en büyük başarısı da ders verdiğini hiç belli etmemesidir.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="oyun tasarımı" /><category term="seviye tasarımı" /><category term="zımni öğretim" /><category term="oyuncu deneyimi" /><category term="game design" /><category term="çevresel anlatım" /><summary type="html"><![CDATA[Bir oyun size ekrana kocaman bir pencere açıp “Zıplamak için Space tuşuna bas!” demeden zıplamayı öğretebilir mi? Elbette. Hatta iyi tasarlanmış bir oyun, kurallarını açıktan anlatmak yerine merakınızı, çevreyi okuma yeteneğinizi ve deneme isteğinizi kullanır. İşte oyuncunun farkında olmadan öğrendiği bu yaklaşım, zımni öğretim veya İngilizce adıyla implicit tutorial olarak bilinir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/gorunmez-ogretmen-oyun-29.png" /><media:content medium="image" url="https://program.sonsuz.us/img/gorunmez-ogretmen-oyun-29.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Hücresel Otomata ile Kentsel Büyüme Modellemesi</title><link href="https://program.sonsuz.us/posts/hucresel-otomata-ile-kentsel-buyume-modellemesi/" rel="alternate" type="text/html" title="Hücresel Otomata ile Kentsel Büyüme Modellemesi" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/hucresel-otomata-ile-kentsel-buyume-modellemesi</id><content type="html" xml:base="https://program.sonsuz.us/posts/hucresel-otomata-ile-kentsel-buyume-modellemesi/"><![CDATA[<p>Şehirler bazen planlı caddelerle, bazen de “Şuraya da bir bina konduralım!” yaklaşımıyla büyür. Gerçek kentsel gelişim ekonomi, ulaşım, nüfus ve coğrafya gibi pek çok değişkene bağlıdır. Yine de yalnızca karelerden ve birkaç komşuluk kuralından yararlanarak şaşırtıcı derecede gerçekçi büyüme desenleri üretebiliriz. Bunun için kullanacağımız araç, hücresel otomata modelidir.
``</p>

<h2 id="hücresel-otomata-nedir">Hücresel otomata nedir?</h2>

<p>Hücresel otomata, uzayı hücrelerden oluşan bir ızgaraya bölen ayrık bir modeldir. Her hücre belirli bir durumda bulunur ve bir sonraki zaman adımındaki durumu, kendi mevcut durumuna ve komşularına göre hesaplanır.</p>

<p>Kentsel büyüme modelinde hücreler arazi parçalarını temsil edebilir:</p>

<table>
  <thead>
    <tr>
      <th style="text-align: right">Hücre değeri</th>
      <th>Arazi türü</th>
      <th>Büyüyebilir mi?</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: right">0</td>
      <td>Boş arazi</td>
      <td>Evet</td>
    </tr>
    <tr>
      <td style="text-align: right">1</td>
      <td>Kentsel alan</td>
      <td>Zaten gelişmiş</td>
    </tr>
    <tr>
      <td style="text-align: right">2</td>
      <td>Su veya koruma alanı</td>
      <td>Hayır</td>
    </tr>
  </tbody>
</table>

<p>En yaygın iki komşuluk yaklaşımı şunlardır:</p>

<table>
  <thead>
    <tr>
      <th>Komşuluk</th>
      <th style="text-align: right">Hücre sayısı</th>
      <th>Özellik</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Von Neumann</td>
      <td style="text-align: right">4</td>
      <td>Yalnızca yatay ve dikey komşular</td>
    </tr>
    <tr>
      <td>Moore</td>
      <td style="text-align: right">8</td>
      <td>Çapraz hücreler dâhil tüm çevre</td>
    </tr>
  </tbody>
</table>

<p>Moore komşuluğu, şehrin daha yuvarlak ve yaygın biçimde büyümesine izin verir. Von Neumann komşuluğu ise daha köşeli desenler oluşturabilir.</p>

<h2 id="büyüme-kuralını-kurmak">Büyüme kuralını kurmak</h2>

<p>Boş bir hücrenin kentleşme olasılığını, çevresindeki kentsel hücrelerin oranıyla ilişkilendirebiliriz. Hücrenin sekiz komşusundan $n$ tanesi kentleşmişse temel olasılık şöyle tanımlanabilir:</p>

\[P = b + w(n / 8)\]

<p>Burada $b$ kendiliğinden büyüme olasılığı, $w$ ise komşuluk etkisinin ağırlığıdır. Örneğin $b=0.01$ ve $w=0.6$ olduğunda, mevcut şehre yakın araziler daha hızlı yapılaşırken uzakta küçük uydu yerleşimler de doğabilir. Olasılığın 1’i aşmaması için $P = min(1, P)$ kullanılır.</p>

<p>Bu basit denklem önemli bir fikri yakalar: Kentsel alanlar altyapı, ulaşım ve hizmetlere yakınlık nedeniyle çoğunlukla mevcut yerleşimlerin çevresinde gelişir.</p>

<h2 id="python-ile-küçük-bir-simülasyon">Python ile küçük bir simülasyon</h2>

<p>Aşağıdaki kod, 50x50 hücrelik bir haritada Moore komşuluğunu kullanarak büyümeyi simüle eder:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="n">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="n">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>

<span class="n">size</span> <span class="o">=</span> <span class="mi">50</span>
<span class="n">city</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="nf">zeros</span><span class="p">((</span><span class="n">size</span><span class="p">,</span> <span class="n">size</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">int</span><span class="p">)</span>
<span class="n">city</span><span class="p">[</span><span class="mi">24</span><span class="p">:</span><span class="mi">27</span><span class="p">,</span> <span class="mi">24</span><span class="p">:</span><span class="mi">27</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># Başlangıçtaki kent merkezi
</span>
<span class="n">base_probability</span> <span class="o">=</span> <span class="mf">0.01</span>
<span class="n">neighbor_weight</span> <span class="o">=</span> <span class="mf">0.60</span>

<span class="k">def</span> <span class="nf">step</span><span class="p">(</span><span class="n">grid</span><span class="p">):</span>
    <span class="n">new_grid</span> <span class="o">=</span> <span class="n">grid</span><span class="p">.</span><span class="nf">copy</span><span class="p">()</span>

    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="nf">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
        <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="nf">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
            <span class="k">if</span> <span class="n">grid</span><span class="p">[</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
                <span class="k">continue</span>

            <span class="n">neighborhood</span> <span class="o">=</span> <span class="n">grid</span><span class="p">[</span><span class="n">row</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="n">row</span><span class="o">+</span><span class="mi">2</span><span class="p">,</span> <span class="n">col</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="n">col</span><span class="o">+</span><span class="mi">2</span><span class="p">]</span>
            <span class="n">urban_neighbors</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="nf">count_nonzero</span><span class="p">(</span><span class="n">neighborhood</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
            <span class="n">probability</span> <span class="o">=</span> <span class="nf">min</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">base_probability</span> <span class="o">+</span>
                              <span class="n">neighbor_weight</span> <span class="o">*</span> <span class="n">urban_neighbors</span> <span class="o">/</span> <span class="mi">8</span><span class="p">)</span>

            <span class="k">if</span> <span class="n">np</span><span class="p">.</span><span class="n">random</span><span class="p">.</span><span class="nf">random</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">probability</span><span class="p">:</span>
                <span class="n">new_grid</span><span class="p">[</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>

    <span class="k">return</span> <span class="n">new_grid</span>

<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nf">range</span><span class="p">(</span><span class="mi">30</span><span class="p">):</span>
    <span class="n">city</span> <span class="o">=</span> <span class="nf">step</span><span class="p">(</span><span class="n">city</span><span class="p">)</span>

<span class="n">plt</span><span class="p">.</span><span class="nf">imshow</span><span class="p">(</span><span class="n">city</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="sh">'</span><span class="s">Greys</span><span class="sh">'</span><span class="p">,</span> <span class="n">interpolation</span><span class="o">=</span><span class="sh">'</span><span class="s">nearest</span><span class="sh">'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="nf">title</span><span class="p">(</span><span class="sh">'</span><span class="s">30 Adım Sonra Kentsel Yayılım</span><span class="sh">'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="nf">axis</span><span class="p">(</span><span class="sh">'</span><span class="s">off</span><span class="sh">'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="nf">show</span><span class="p">()</span>
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">step</code> fonksiyonu her boş araziyi inceler, kentleşmiş komşuları sayar ve hesaplanan olasılığa göre hücrenin durumunu değiştirir. Güncelleme sırasında ayrı bir kopya kullanılması kritiktir; aksi hâlde aynı turda yeni kentleşen hücreler hemen komşularını etkiler ve zaman mantığı bozulur.</p>

<h2 id="modeli-daha-gerçekçi-yapmak">Modeli daha gerçekçi yapmak</h2>

<p>Basit modeli yükselti, yol ve koruma alanı katmanlarıyla geliştirebiliriz. Bir hücrenin toplam uygunluğu örneğin $S = 0.5N + 0.3R - 0.2E$ biçiminde hesaplanabilir. Burada $N$ komşuluk etkisini, $R$ yola yakınlığı, $E$ ise eğim maliyetini temsil eder.</p>

<p>Farklı parametrelerle çok sayıda deney yapmak, tek bir kesin gelecek üretmekten daha değerlidir. Çünkü model bir kehanet makinesi değil, “Bu kurallar geçerliyse ne olabilir?” sorusuna cevap veren bir düşünme laboratuvarıdır. Birkaç satırlık kodla plansız yayılımı, uydu kentleri veya koruma politikalarının etkisini karşılaştırabilir; şehirlerin karmaşık görünümünün basit yerel kararlardan nasıl doğabildiğini gözlemleyebilirsiniz.</p>

<p><img src="/img/hucresel-otomata-ile-80.svg" alt="hucresel-otomata-ile-80" /></p>]]></content><author><name>Sonsuz Us</name></author><category term="Proje" /><category term="hücresel otomata" /><category term="kentsel büyüme" /><category term="python" /><category term="simülasyon" /><category term="modelleme" /><category term="şehir planlama" /><summary type="html"><![CDATA[Şehirler bazen planlı caddelerle, bazen de “Şuraya da bir bina konduralım!” yaklaşımıyla büyür. Gerçek kentsel gelişim ekonomi, ulaşım, nüfus ve coğrafya gibi pek çok değişkene bağlıdır. Yine de yalnızca karelerden ve birkaç komşuluk kuralından yararlanarak şaşırtıcı derecede gerçekçi büyüme desenleri üretebiliriz. Bunun için kullanacağımız araç, hücresel otomata modelidir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/hucresel-otomata-ile-80.png" /><media:content medium="image" url="https://program.sonsuz.us/img/hucresel-otomata-ile-80.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Prosedürel Animasyon Sistemleri: Hareketi Oynatmak Yerine Hesaplamak</title><link href="https://program.sonsuz.us/posts/prosedurel-animasyon-sistemleri-hareketi-oynatmak-yerine-hesaplamak/" rel="alternate" type="text/html" title="Prosedürel Animasyon Sistemleri: Hareketi Oynatmak Yerine Hesaplamak" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/prosedurel-animasyon-sistemleri-hareketi-oynatmak-yerine-hesaplamak</id><content type="html" xml:base="https://program.sonsuz.us/posts/prosedurel-animasyon-sistemleri-hareketi-oynatmak-yerine-hesaplamak/"><![CDATA[<p>Bir karakterin merdivene bastığında ayağını gerçekten basamağa koyduğunu, eğimli arazide dengesini koruduğunu veya dev bir yaratığın her adımda çevreye uyum sağladığını düşünün. Bu hareketlerin tamamını önceden hazırlamak yerine çalışma anında hesaplamak, <strong>prosedürel animasyonun</strong> temel fikridir. Böylece karakter yalnızca bir animasyon klibini oynatan kukla olmaktan çıkar; çevresine tepki veren dinamik bir sisteme dönüşür.</p>

<p><img src="/img/prosedurel-animasyon-sistemleri-95.svg" alt="prosedurel-animasyon-sistemleri-95" /></p>

<p>``</p>

<h2 id="önceden-kaydedilmiş-animasyon-mu-prosedürel-hareket-mi">Önceden kaydedilmiş animasyon mu, prosedürel hareket mi?</h2>

<p>Geleneksel sistemlerde sanatçı; yürüme, koşma ve zıplama gibi hareketleri önceden üretir. Oyun motoru uygun klibi seçerek kemiklere uygular. Prosedürel yaklaşımda ise kemiklerin konum ve dönüşleri; hedefler, fizik kuralları, arazi verileri ve karakterin mevcut durumu kullanılarak hesaplanır.</p>

<table>
  <thead>
    <tr>
      <th>Özellik</th>
      <th>Hazır animasyon</th>
      <th>Prosedürel animasyon</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Hareket kaynağı</td>
      <td>Önceden hazırlanmış klip</td>
      <td>Gerçek zamanlı hesaplama</td>
    </tr>
    <tr>
      <td>Çevreye uyum</td>
      <td>Sınırlı</td>
      <td>Yüksek</td>
    </tr>
    <tr>
      <td>Sanatçı kontrolü</td>
      <td>Çok yüksek</td>
      <td>Kurallara bağlı</td>
    </tr>
    <tr>
      <td>İşlem maliyeti</td>
      <td>Genellikle düşük</td>
      <td>Daha yüksek olabilir</td>
    </tr>
    <tr>
      <td>Tekrar hissi</td>
      <td>Belirginleşebilir</td>
      <td>Daha doğal çeşitlilik sağlar</td>
    </tr>
  </tbody>
</table>

<p>Bu iki yöntem rakip olmak zorunda değildir. Modern oyunlar çoğunlukla temel yürüyüş klibini oynatır, ardından ayakları zemine yerleştirmek veya karakterin başını hedefe çevirmek için prosedürel düzeltmeler uygular.</p>

<h2 id="matematiksel-temel">Matematiksel temel</h2>

<p>Karakter iskeleti, birbirine bağlı dönüşümlerden oluşan bir hiyerarşidir. Bir kemiğin dünya uzayındaki dönüşümü, ebeveynlerinin dönüşümleriyle çarpılarak bulunur:</p>

\[T_{dunya} = T_0 T_1 T_2 ... T_n\]

<p>Buradaki her $T$, konum, dönüş ve ölçek bilgisi taşıyan bir dönüşüm matrisidir. El veya ayak gibi uç noktanın istenen hedefe ulaşması gerektiğinde <strong>ters kinematik</strong> (Inverse Kinematics, IK) kullanılır. İleri kinematik eklem açılarını kullanarak elin yerini bulurken ters kinematik, hedef konumdan yola çıkarak gerekli eklem açılarını arar.</p>

<p>İki kemikli bir bacakta kosinüs teoremi önemli bir rol oynar:</p>

\[c^2 = a^2 + b^2 - 2ab\cos(\theta)\]

<p>$a$ ve $b$ kemik uzunluklarını, $c$ kalça ile ayak hedefi arasındaki mesafeyi temsil eder. Buradan elde edilen $\theta$, dizin ne kadar büküleceğini belirlemeye yardım eder. Hedef erişim alanının dışındaysa sistem mesafeyi sınırlandırmalıdır; aksi hâlde bacak lastik gibi uzayabilir.</p>

<h2 id="zemine-uyum-sağlayan-ayaklar">Zemine uyum sağlayan ayaklar</h2>

<p>Basit bir ayak yerleştirme sistemi, ayağın üstünden aşağı doğru ışın göndererek zemini bulur. Çarpışma noktası ayağın hedef konumu, yüzey normali ise yaklaşık yönelimi olur.</p>

<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">void</span> <span class="nf">UpdateFoot</span><span class="p">(</span><span class="n">Transform</span> <span class="n">foot</span><span class="p">,</span> <span class="n">Vector3</span> <span class="n">hipPosition</span><span class="p">)</span>
<span class="p">{</span>
    <span class="n">Vector3</span> <span class="n">origin</span> <span class="p">=</span> <span class="n">foot</span><span class="p">.</span><span class="n">position</span> <span class="p">+</span> <span class="n">Vector3</span><span class="p">.</span><span class="n">up</span> <span class="p">*</span> <span class="m">0.5f</span><span class="p">;</span>

    <span class="k">if</span> <span class="p">(</span><span class="n">Physics</span><span class="p">.</span><span class="nf">Raycast</span><span class="p">(</span><span class="n">origin</span><span class="p">,</span> <span class="n">Vector3</span><span class="p">.</span><span class="n">down</span><span class="p">,</span> <span class="k">out</span> <span class="n">RaycastHit</span> <span class="n">hit</span><span class="p">,</span> <span class="m">1.5f</span><span class="p">))</span>
    <span class="p">{</span>
        <span class="n">Vector3</span> <span class="n">target</span> <span class="p">=</span> <span class="n">hit</span><span class="p">.</span><span class="n">point</span> <span class="p">+</span> <span class="n">hit</span><span class="p">.</span><span class="n">normal</span> <span class="p">*</span> <span class="m">0.05f</span><span class="p">;</span>
        <span class="n">foot</span><span class="p">.</span><span class="n">position</span> <span class="p">=</span> <span class="n">Vector3</span><span class="p">.</span><span class="nf">Lerp</span><span class="p">(</span>
            <span class="n">foot</span><span class="p">.</span><span class="n">position</span><span class="p">,</span>
            <span class="n">target</span><span class="p">,</span>
            <span class="n">Time</span><span class="p">.</span><span class="n">deltaTime</span> <span class="p">*</span> <span class="m">12f</span>
        <span class="p">);</span>

        <span class="n">Quaternion</span> <span class="n">rotation</span> <span class="p">=</span> <span class="n">Quaternion</span><span class="p">.</span><span class="nf">FromToRotation</span><span class="p">(</span>
            <span class="n">foot</span><span class="p">.</span><span class="n">up</span><span class="p">,</span>
            <span class="n">hit</span><span class="p">.</span><span class="n">normal</span>
        <span class="p">)</span> <span class="p">*</span> <span class="n">foot</span><span class="p">.</span><span class="n">rotation</span><span class="p">;</span>

        <span class="n">foot</span><span class="p">.</span><span class="n">rotation</span> <span class="p">=</span> <span class="n">Quaternion</span><span class="p">.</span><span class="nf">Slerp</span><span class="p">(</span>
            <span class="n">foot</span><span class="p">.</span><span class="n">rotation</span><span class="p">,</span>
            <span class="n">rotation</span><span class="p">,</span>
            <span class="n">Time</span><span class="p">.</span><span class="n">deltaTime</span> <span class="p">*</span> <span class="m">10f</span>
        <span class="p">);</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Bu Unity örneği zemini <code class="language-plaintext highlighter-rouge">Raycast</code> ile algılar, ayağı çarpışma noktasına yaklaştırır ve yüzey normaline göre döndürür. <code class="language-plaintext highlighter-rouge">Lerp</code> ile <code class="language-plaintext highlighter-rouge">Slerp</code> kullanılması ani sıçramaları azaltır. Üretim ortamında doğrudan kemik dönüşümünü değiştirmek yerine motorun IK katmanı kullanılmalı; ayrıca ayağın havada olduğu adım evresi kontrol edilmelidir.</p>

<h2 id="sistemi-doğal-gösteren-ayrıntılar">Sistemi doğal gösteren ayrıntılar</h2>

<p>Tamamen doğru hesaplanan hareket her zaman doğal görünmez. Karakterin ağırlık merkezi, adım ritmi ve küçük gecikmeler algıyı ciddi biçimde etkiler. Hedefler arasında yumuşak geçiş yapmak için şu karışım kullanılabilir:</p>

\[P = (1-t)P_0 + tP_1\]

<p>Ancak sabit hızla ilerleyen $t$, robotik sonuç verebilir. Yumuşatma eğrileri, yay modelleri ve gürültü fonksiyonları harekete canlılık katar. Örneğin nefes alma için düşük frekanslı sinüs, robot anteni için Perlin gürültüsü uygulanabilir.</p>

<p>Prosedürel animasyon güçlüdür fakat hata ayıklaması zordur. Hedef noktalarını, ışınları ve eklem sınırlarını sahnede renkli çizgilerle göstermek büyük kolaylık sağlar. En başarılı çözüm genellikle hibrittir: Sanatçının hazırladığı güçlü pozlar temel alınır, matematik ise karakteri dünyaya bağlayan görünmez animatör olur.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="prosedürel animasyon" /><category term="oyun geliştirme" /><category term="ters kinematik" /><category term="karakter kontrolü" /><category term="unity" /><category term="gerçek zamanlı grafikler" /><summary type="html"><![CDATA[Bir karakterin merdivene bastığında ayağını gerçekten basamağa koyduğunu, eğimli arazide dengesini koruduğunu veya dev bir yaratığın her adımda çevreye uyum sağladığını düşünün. Bu hareketlerin tamamını önceden hazırlamak yerine çalışma anında hesaplamak, prosedürel animasyonun temel fikridir. Böylece karakter yalnızca bir animasyon klibini oynatan kukla olmaktan çıkar; çevresine tepki veren dinamik bir sisteme dönüşür.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/prosedurel-animasyon-sistemleri-95.png" /><media:content medium="image" url="https://program.sonsuz.us/img/prosedurel-animasyon-sistemleri-95.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Robotik Cerrahinin Perde Arkası: Ameliyat Robotlarını Yöneten Algoritmalar</title><link href="https://program.sonsuz.us/posts/robotik-cerrahinin-perde-arkasi-ameliyat-robotlarini-yoneten-algoritmalar/" rel="alternate" type="text/html" title="Robotik Cerrahinin Perde Arkası: Ameliyat Robotlarını Yöneten Algoritmalar" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/robotik-cerrahinin-perde-arkasi-ameliyat-robotlarini-yoneten-algoritmalar</id><content type="html" xml:base="https://program.sonsuz.us/posts/robotik-cerrahinin-perde-arkasi-ameliyat-robotlarini-yoneten-algoritmalar/"><![CDATA[<p>Robotik cerrahi dendiğinde gözümüzde ameliyatı tek başına yapan metal bir doktor canlanabilir. Gerçekte günümüzde kullanılan sistemlerin çoğu, cerrahın el hareketlerini hassas biçimde robot kollarına aktaran gelişmiş teleoperasyon platformlarıdır. Cerrah karar verir; robot ise bu kararı filtreleme, kinematik, kontrol ve güvenlik algoritmaları yardımıyla mikrometre düzeyinde harekete dönüştürür.
``</p>

<h2 id="hareketin-başlangıç-noktası-teleoperasyon">Hareketin başlangıç noktası: teleoperasyon</h2>

<p>Cerrah, konsoldaki kumandaları hareket ettirdiğinde sensörler konum, yönelim ve hız verilerini ölçer. Bu ham veriler doğrudan motora gönderilmez. Çünkü insan eli doğal olarak titrer, sensörlerde gürültü bulunur ve cerrahın geniş hareketlerinin hastanın içinde çok daha küçük hareketlere çevrilmesi gerekir.</p>

<p>Örneğin kumanda 5 santimetre hareket ettirilirken cerrahi aletin yalnızca 1 santimetre ilerlemesi istenebilir. Ölçekleme basitçe</p>

\[x_r = s x_c\]

<p>ile ifade edilebilir. Burada $x_c$ cerrahın hareketi, $x_r$ robotun hedef hareketi, $s$ ise ölçek katsayısıdır. $s=0.2$ olduğunda robot, cerrahın hareketinin beşte birini uygular.</p>

<table>
  <thead>
    <tr>
      <th>Algoritma katmanı</th>
      <th>Görevi</th>
      <th>Günlük hayattaki benzetme</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Sinyal filtreleme</td>
      <td>Titreme ve sensör gürültüsünü azaltır</td>
      <td>Kameradaki görüntü sabitleme</td>
    </tr>
    <tr>
      <td>Ters kinematik</td>
      <td>Alet hedefini eklem açılarına çevirir</td>
      <td>Eli uzatırken dirseği ayarlamak</td>
    </tr>
    <tr>
      <td>Hareket planlama</td>
      <td>Güvenli bir yol üretir</td>
      <td>Navigasyonun rota çizmesi</td>
    </tr>
    <tr>
      <td>Kontrol algoritması</td>
      <td>Motorları hedefte tutar</td>
      <td>Aracın hız sabitleyicisi</td>
    </tr>
    <tr>
      <td>Güvenlik denetimi</td>
      <td>Yasak hareketleri engeller</td>
      <td>Sanal güvenlik bariyeri</td>
    </tr>
  </tbody>
</table>

<h2 id="ters-kinematik-robot-kolu-nasıl-bükülecek">Ters kinematik: Robot kolu nasıl bükülecek?</h2>

<p>Cerrah alet ucunun nereye gitmesini istediğini belirtir; fakat robotun motorları doğrudan Kartezyen koordinatlarla çalışmaz. Her eklemin hangi açıya gelmesi gerektiği hesaplanmalıdır. İleri kinematikte eklem değerlerinden uç konumu bulunur:</p>

\[p = f(q)\]

<p>Ters kinematikte ise hedef konumdan eklem değerleri aranır:</p>

\[q = f^{-1}(p)\]

<p>Buradaki zorluk, aynı noktaya birden fazla eklem düzeniyle ulaşılabilmesi veya bazı hedeflerin fiziksel olarak erişilemez olmasıdır. Sayısal çözücüler, Jacobian matrisi üzerinden küçük eklem değişimlerini hesaplar: $v = J(q)\dot{q}$. Sistem ayrıca eklem sınırlarını, çarpışma riskini ve cerrahi aletin giriş noktasını korumak zorundadır.</p>

<h2 id="pid-ve-kuvvet-kontrolü">PID ve kuvvet kontrolü</h2>

<p>Hedef eklem açısı bulunduktan sonra motorların bu hedefi düzgün izlemesi gerekir. En yaygın yaklaşımlardan biri PID kontroldür:</p>

\[u(t)=K_p e(t)+K_i\int e(t)dt+K_d\frac{de(t)}{dt}\]

<p>Oransal terim mevcut hataya tepki verir, integral terimi kalıcı sapmayı azaltır, türev terimi ise ani değişimleri frenler. Daha karmaşık sistemlerde model öngörülü kontrol, empedans kontrolü ve kuvvet geri bildirimi kullanılır. Empedans kontrolü, robotun dokuyla temas ederken taş gibi katı davranması yerine kontrollü bir esneklik göstermesini sağlar.</p>

<p>Aşağıdaki sade Python örneği, tek eksenli bir PID denetleyicinin hedef konuma yaklaşmasını gösterir:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">PID</span><span class="p">:</span>
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="n">kp</span><span class="p">,</span> <span class="n">ki</span><span class="p">,</span> <span class="n">kd</span><span class="p">):</span>
        <span class="n">self</span><span class="p">.</span><span class="n">kp</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">ki</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">kd</span> <span class="o">=</span> <span class="n">kp</span><span class="p">,</span> <span class="n">ki</span><span class="p">,</span> <span class="n">kd</span>
        <span class="n">self</span><span class="p">.</span><span class="n">integral</span> <span class="o">=</span> <span class="mf">0.0</span>
        <span class="n">self</span><span class="p">.</span><span class="n">previous_error</span> <span class="o">=</span> <span class="mf">0.0</span>

    <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">position</span><span class="p">,</span> <span class="n">dt</span><span class="p">):</span>
        <span class="n">error</span> <span class="o">=</span> <span class="n">target</span> <span class="o">-</span> <span class="n">position</span>
        <span class="n">self</span><span class="p">.</span><span class="n">integral</span> <span class="o">+=</span> <span class="n">error</span> <span class="o">*</span> <span class="n">dt</span>
        <span class="n">derivative</span> <span class="o">=</span> <span class="p">(</span><span class="n">error</span> <span class="o">-</span> <span class="n">self</span><span class="p">.</span><span class="n">previous_error</span><span class="p">)</span> <span class="o">/</span> <span class="n">dt</span>
        <span class="n">self</span><span class="p">.</span><span class="n">previous_error</span> <span class="o">=</span> <span class="n">error</span>
        <span class="k">return</span> <span class="n">self</span><span class="p">.</span><span class="n">kp</span> <span class="o">*</span> <span class="n">error</span> <span class="o">+</span> <span class="n">self</span><span class="p">.</span><span class="n">ki</span> <span class="o">*</span> <span class="n">self</span><span class="p">.</span><span class="n">integral</span> <span class="o">+</span> <span class="n">self</span><span class="p">.</span><span class="n">kd</span> <span class="o">*</span> <span class="n">derivative</span>
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">update</code> metodunun ürettiği değer motor komutu olarak düşünülebilir. Gerçek ameliyat robotlarında buna tork sınırları, sensör doğrulama, gecikme telafisi ve acil durdurma kontrolleri eklenir.</p>

<h2 id="yapay-zeka-ameliyatı-devralıyor-mu">Yapay zeka ameliyatı devralıyor mu?</h2>

<p>Makine öğrenmesi; anatomik yapıların görüntüde işaretlenmesi, alet takibi, dikiş aşamalarının tanınması ve riskli bölgelerin belirlenmesi için kullanılabilir. Ancak öğrenen modellerin tahminleri belirsizlik taşıdığı için kritik hareket kontrolü genellikle doğrulanabilir, deterministik algoritmalara bırakılır.</p>

<p>Robotik cerrahinin gerçek gücü tek bir “süper algoritmadan” değil; filtreleme, kinematik, kontrol, görüntü işleme ve güvenlik katmanlarının milisaniyeler içinde birlikte çalışmasından gelir. Robot yorulmaz ve titremeyi azaltır; fakat hedefi, stratejiyi ve klinik kararı hâlâ insan belirler.</p>

<p><img src="/img/robotik-cerrahinin-perde-39.svg" alt="robotik-cerrahinin-perde-39" /></p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="robotik cerrahi" /><category term="algoritma" /><category term="kontrol sistemleri" /><category term="ters kinematik" /><category term="yapay zeka" /><category term="robotik" /><summary type="html"><![CDATA[Robotik cerrahi dendiğinde gözümüzde ameliyatı tek başına yapan metal bir doktor canlanabilir. Gerçekte günümüzde kullanılan sistemlerin çoğu, cerrahın el hareketlerini hassas biçimde robot kollarına aktaran gelişmiş teleoperasyon platformlarıdır. Cerrah karar verir; robot ise bu kararı filtreleme, kinematik, kontrol ve güvenlik algoritmaları yardımıyla mikrometre düzeyinde harekete dönüştürür.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/robotik-cerrahinin-perde-39.png" /><media:content medium="image" url="https://program.sonsuz.us/img/robotik-cerrahinin-perde-39.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Stablecoin Teknolojisi: Dijital Paralar Fiyatını Nasıl Sabit Tutuyor?</title><link href="https://program.sonsuz.us/posts/stablecoin-teknolojisi-dijital-paralar-fiyatini-nasil-sabit-tutuyor/" rel="alternate" type="text/html" title="Stablecoin Teknolojisi: Dijital Paralar Fiyatını Nasıl Sabit Tutuyor?" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/stablecoin-teknolojisi-dijital-paralar-fiyatini-nasil-sabit-tutuyor</id><content type="html" xml:base="https://program.sonsuz.us/posts/stablecoin-teknolojisi-dijital-paralar-fiyatini-nasil-sabit-tutuyor/"><![CDATA[<p><img src="/img/stablecoin-teknolojisi-dijital-86.svg" alt="stablecoin-teknolojisi-dijital-86" /></p>

<p>Kripto para piyasası bazen lunaparktaki hız trenine benzer: Bir anda zirveye çıkar, birkaç dakika sonra midenizi aşağıda bırakır. Stablecoin’ler ise bu hareketli ortamda daha sakin davranmayı hedefleyen dijital varlıklardır. Genellikle 1 ABD doları gibi belirli bir referans varlığa yakın fiyatla işlem görürler. Ancak bu istikrar sihirle değil; rezerv yönetimi, arbitraj, akıllı sözleşmeler ve sürekli çalışan veri sistemleriyle sağlanır.</p>

<p>``</p>

<h2 id="fiyat-sabitleme-mantığı">Fiyat sabitleme mantığı</h2>

<p>Bir stablecoin’in hedef fiyatına <strong>peg</strong>, yani sabit kur denir. Örneğin hedef 1 dolar ise sistem şu ilişkiyi korumaya çalışır:</p>

\[P_{coin} \approx 1\text{ USD}\]

<p>Buradaki temel araç arz ve taleptir. Coin’in piyasa fiyatı 1,02 dolara çıktığında yeni coin üretmek ve satmak arzı artırabilir. Fiyat 0,98 dolara düştüğünde ise coin’leri dolaşımdan kaldırmak arzı azaltabilir. Basitleştirilmiş denge düşüncesi şöyledir:</p>

\[Fiyat \propto \frac{Talep}{Arz}\]

<p>Elbette gerçek piyasalar bundan çok daha karmaşıktır. Likidite, kullanıcı güveni, işlem ücretleri ve rezervlerin erişilebilirliği de fiyatı etkiler.</p>

<h2 id="başlıca-stablecoin-modelleri">Başlıca stablecoin modelleri</h2>

<table>
  <thead>
    <tr>
      <th>Model</th>
      <th>İstikrar yöntemi</th>
      <th>Avantajı</th>
      <th>Temel riski</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>İtibari para teminatlı</td>
      <td>Bankada nakit ve tahvil rezervi</td>
      <td>Kolay anlaşılır</td>
      <td>Merkezi kuruma güven gerekir</td>
    </tr>
    <tr>
      <td>Kripto teminatlı</td>
      <td>Akıllı sözleşmede kilitli kripto</td>
      <td>Zincir üzerinde şeffaflık</td>
      <td>Teminat hızla değer kaybedebilir</td>
    </tr>
    <tr>
      <td>Algoritmik</td>
      <td>Arzı yazılımla ayarlama</td>
      <td>Sermaye verimliliği hedefler</td>
      <td>Güven kaybında ölüm sarmalı oluşabilir</td>
    </tr>
    <tr>
      <td>Emtia teminatlı</td>
      <td>Altın gibi fiziksel varlıklar</td>
      <td>Reel varlığa erişim sağlar</td>
      <td>Saklama ve denetim riski taşır</td>
    </tr>
  </tbody>
</table>

<p>İtibari para teminatlı modelde şirket, üretilen her coin karşılığında rezerv tuttuğunu söyler. Kullanıcı 100 dolar yatırdığında 100 stablecoin basılır; geri ödeme istediğinde coin’ler yakılır. Bu süreçte rezerv raporları ve bağımsız denetimler kritik önemdedir.</p>

<p>Kripto teminatlı sistemlerde ise fiyatı değişken varlıklar kullanıldığı için <strong>aşırı teminatlandırma</strong> gerekir. Örneğin 100 dolarlık stablecoin üretmek için 150 dolarlık kripto kilitlenebilir. Teminat oranı şöyle hesaplanır:</p>

\[Teminat\ Oranı = \frac{Teminat\ Değeri}{Borç\ Değeri} \times 100\]

<p>Oran güvenli seviyenin altına düşerse akıllı sözleşme teminatı otomatik olarak satar. Buna likidasyon denir.</p>

<h2 id="akıllı-sözleşmeler-ne-yapar">Akıllı sözleşmeler ne yapar?</h2>

<p>Akıllı sözleşmeler basım, yakım ve teminat kontrolünü otomatikleştirir. Aşağıdaki basitleştirilmiş Python benzeri örnek, teminat oranını denetler:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">pozisyonu_kontrol_et</span><span class="p">(</span><span class="n">teminat</span><span class="p">,</span> <span class="n">borc</span><span class="p">,</span> <span class="n">minimum_oran</span><span class="o">=</span><span class="mf">1.5</span><span class="p">):</span>
    <span class="n">oran</span> <span class="o">=</span> <span class="n">teminat</span> <span class="o">/</span> <span class="n">borc</span>

    <span class="k">if</span> <span class="n">oran</span> <span class="o">&lt;</span> <span class="n">minimum_oran</span><span class="p">:</span>
        <span class="k">return</span> <span class="sh">'</span><span class="s">Likidasyon başlat</span><span class="sh">'</span>

    <span class="k">return</span> <span class="sh">'</span><span class="s">Pozisyon güvenli</span><span class="sh">'</span>

<span class="nf">print</span><span class="p">(</span><span class="nf">pozisyonu_kontrol_et</span><span class="p">(</span><span class="mi">1200</span><span class="p">,</span> <span class="mi">1000</span><span class="p">))</span>
</code></pre></div></div>

<p>Kod, teminat değerini borca böler. Sonuç yüzde 150 eşiğinin altındaysa pozisyonun kapatılması gerektiğini bildirir. Gerçek uygulamalarda bu değerler blokzincir dışındaki piyasa fiyatlarını sisteme taşıyan <strong>oracle</strong> ağlarından alınır.</p>

<h2 id="arbitraj-neden-önemlidir">Arbitraj neden önemlidir?</h2>

<p>Stablecoin 0,98 dolara düşerse yatırımcı onu ucuza satın alıp ihraççıya 1 dolar karşılığında iade edebilir. Coin başına yaklaşık 0,02 dolar kazanç oluşurken piyasadaki alım baskısı fiyatı yukarı iter. Fiyat 1,02 dolara çıktığında ise yatırımcı 1 dolardan yeni coin üretip piyasada daha pahalıya satabilir. Bu kez artan arz fiyatı aşağı çeker.</p>

<p>Fakat sistem yalnızca koddan ibaret değildir. Rezervlerin gerçekten var olması, oracle verilerinin manipüle edilmemesi, akıllı sözleşmelerin güvenli yazılması ve geri ödeme mekanizmasının çalışması gerekir. Kısacası stablecoin istikrarı; ekonomi, yazılım ve güven üçlüsünün ortak ürünüdür. İsimlerinde sabit geçse de risksiz değillerdir: En sağlam görünen dijital çıpanın bile düzenli denetime, yeterli likiditeye ve dayanıklı koda ihtiyacı vardır.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="stablecoin" /><category term="blockchain" /><category term="kripto para" /><category term="akıllı sözleşme" /><category term="finans teknolojileri" /><summary type="html"><![CDATA[Kripto para piyasası bazen lunaparktaki hız trenine benzer: Bir anda zirveye çıkar, birkaç dakika sonra midenizi aşağıda bırakır. Stablecoin’ler ise bu hareketli ortamda daha sakin davranmayı hedefleyen dijital varlıklardır. Genellikle 1 ABD doları gibi belirli bir referans varlığa yakın fiyatla işlem görürler. Ancak bu istikrar sihirle değil; rezerv yönetimi, arbitraj, akıllı sözleşmeler ve sürekli çalışan veri sistemleriyle sağlanır.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/stablecoin-teknolojisi-dijital-86.png" /><media:content medium="image" url="https://program.sonsuz.us/img/stablecoin-teknolojisi-dijital-86.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Trafik Akışı Simülasyonu ve Akıllı Sinyalizasyon Optimizasyonu</title><link href="https://program.sonsuz.us/posts/trafik-akisi-simulasyonu-ve-akilli-sinyalizasyon-optimizasyonu/" rel="alternate" type="text/html" title="Trafik Akışı Simülasyonu ve Akıllı Sinyalizasyon Optimizasyonu" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/trafik-akisi-simulasyonu-ve-akilli-sinyalizasyon-optimizasyonu</id><content type="html" xml:base="https://program.sonsuz.us/posts/trafik-akisi-simulasyonu-ve-akilli-sinyalizasyon-optimizasyonu/"><![CDATA[<p>Sabah işe giderken kırmızı ışıkta bekliyor, fakat diğer yönden tek bir aracın bile geçmediğini görüyorsanız yalnız değilsiniz. Sabit süreli trafik ışıkları, gün boyunca aynı senaryonun yaşandığını varsayar. Akıllı sinyalizasyon sistemleri ise kameralar, sensörler ve optimizasyon algoritmaları yardımıyla kavşağın nabzını ölçer; yeşil ışık sürelerini gerçek zamanlı yoğunluğa göre değiştirir.</p>

<p>``</p>

<h2 id="trafik-akışının-matematiksel-temeli">Trafik Akışının Matematiksel Temeli</h2>

<p>Bir kavşağı modellemek için her şeridi araçların sıraya girdiği bir kuyruk olarak düşünebiliriz. Belirli bir zaman aralığında kuyruğa yeni araçlar eklenirken yeşil ışık sayesinde bazı araçlar sistemden ayrılır. Kuyruk uzunluğunun temel denklemi şöyledir:</p>

\[q_{t+1} = max(0, q_t + a_t - d_t)\]

<p>Burada $q_t$ mevcut araç sayısını, $a_t$ kavşağa gelen araçları, $d_t$ ise kavşaktan ayrılan araçları temsil eder. Amaç, toplam kuyruk uzunluğunu ve araçların ortalama bekleme süresini mümkün olduğunca azaltmaktır.</p>

<p>Bir şeridin yoğunluğu sensör verileriyle de hesaplanabilir:</p>

\[yogunluk = arac\_sayisi / serit\_uzunlugu\]

<p>Yoğunluk arttıkça ilgili yöne daha uzun yeşil ışık vermek mantıklıdır. Ancak “en kalabalık yön sürekli yeşil kalsın” yaklaşımı doğru değildir; diğer yönlerde açlık oluşmasını önlemek için maksimum bekleme süresi gibi adalet kuralları uygulanmalıdır.</p>

<h2 id="sinyalizasyon-yaklaşımlarının-karşılaştırılması">Sinyalizasyon Yaklaşımlarının Karşılaştırılması</h2>

<table>
  <thead>
    <tr>
      <th>Yaklaşım</th>
      <th>Karar mekanizması</th>
      <th>Avantajı</th>
      <th>Dezavantajı</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Sabit süreli</td>
      <td>Önceden tanımlanmış zamanlar</td>
      <td>Basit ve ucuzdur</td>
      <td>Anlık yoğunluğu göremez</td>
    </tr>
    <tr>
      <td>Sensör tabanlı</td>
      <td>Araç sayısı veya doluluk</td>
      <td>Gerçek zamana uyum sağlar</td>
      <td>Sensör hatalarından etkilenir</td>
    </tr>
    <tr>
      <td>Basınç tabanlı</td>
      <td>Komşu şerit kuyruklarını karşılaştırır</td>
      <td>Ağ genelinde dengelidir</td>
      <td>Modelleme daha karmaşıktır</td>
    </tr>
    <tr>
      <td>Pekiştirmeli öğrenme</td>
      <td>Ödül fonksiyonunu optimize eder</td>
      <td>Karmaşık örüntüleri öğrenebilir</td>
      <td>Eğitim ve güvenlik testi gerektirir</td>
    </tr>
  </tbody>
</table>

<p>Basınç tabanlı kontrolde bir yönün giriş ve çıkış kuyrukları karşılaştırılır. Basitleştirilmiş trafik basıncı $P = q_{giris} - q_{cikis}$ biçiminde düşünülebilir. Basıncı yüksek olan harekete öncelik verilmesi, dolu bir çıkış yoluna daha fazla araç gönderilmesini engeller.</p>

<h2 id="basit-bir-python-simülasyonu">Basit Bir Python Simülasyonu</h2>

<p>Aşağıdaki örnek, iki yönlü bir kavşakta araç sayılarına göre yeşil süre üretir. Minimum ve maksimum sınırlar, sistemin hem güvenli hem de adil davranmasını sağlar.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">MIN_GREEN</span> <span class="o">=</span> <span class="mi">10</span>
<span class="n">MAX_GREEN</span> <span class="o">=</span> <span class="mi">45</span>
<span class="n">CYCLE_TIME</span> <span class="o">=</span> <span class="mi">60</span>

<span class="k">def</span> <span class="nf">green_times</span><span class="p">(</span><span class="n">north_south</span><span class="p">,</span> <span class="n">east_west</span><span class="p">):</span>
    <span class="n">total</span> <span class="o">=</span> <span class="n">north_south</span> <span class="o">+</span> <span class="n">east_west</span>

    <span class="k">if</span> <span class="n">total</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
        <span class="k">return</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">30</span>

    <span class="n">ns_ratio</span> <span class="o">=</span> <span class="n">north_south</span> <span class="o">/</span> <span class="n">total</span>
    <span class="n">ns_green</span> <span class="o">=</span> <span class="nf">round</span><span class="p">(</span><span class="n">CYCLE_TIME</span> <span class="o">*</span> <span class="n">ns_ratio</span><span class="p">)</span>
    <span class="n">ns_green</span> <span class="o">=</span> <span class="nf">max</span><span class="p">(</span><span class="n">MIN_GREEN</span><span class="p">,</span> <span class="nf">min</span><span class="p">(</span><span class="n">MAX_GREEN</span><span class="p">,</span> <span class="n">ns_green</span><span class="p">))</span>

    <span class="n">ew_green</span> <span class="o">=</span> <span class="n">CYCLE_TIME</span> <span class="o">-</span> <span class="n">ns_green</span>
    <span class="n">ew_green</span> <span class="o">=</span> <span class="nf">max</span><span class="p">(</span><span class="n">MIN_GREEN</span><span class="p">,</span> <span class="nf">min</span><span class="p">(</span><span class="n">MAX_GREEN</span><span class="p">,</span> <span class="n">ew_green</span><span class="p">))</span>
    <span class="k">return</span> <span class="n">ns_green</span><span class="p">,</span> <span class="n">ew_green</span>

<span class="nf">print</span><span class="p">(</span><span class="nf">green_times</span><span class="p">(</span><span class="n">north_south</span><span class="o">=</span><span class="mi">38</span><span class="p">,</span> <span class="n">east_west</span><span class="o">=</span><span class="mi">12</span><span class="p">))</span>
</code></pre></div></div>

<p>Fonksiyon, kuzey-güney yönündeki yoğunluk daha yüksek olduğunda bu yöne daha fazla süre ayırır. Gerçek bir sistemde sarı ışık, yayaların geçiş süresi ve tüm yönlerin kırmızı olduğu güvenlik aralığı da çevrim süresinden düşülmelidir.</p>

<h2 id="gerçek-zamanlı-sistem-nasıl-kurulur">Gerçek Zamanlı Sistem Nasıl Kurulur?</h2>

<p>Uygulama hattı genellikle <strong>algılama, tahmin, karar ve uygulama</strong> aşamalarından oluşur. Endüktif döngüler, radarlar veya görüntü işleme modelleri araçları sayar. Toplanan veriler temizlenir; birkaç dakikalık trafik talebi tahmin edilir ve kontrol algoritması yeni ışık sürelerini üretir. Kararlar trafik denetleyicisine gönderilirken yasal süre sınırları kesinlikle korunur.</p>

<p>Simülasyon tarafında SUMO gibi araçlar kullanılarak ortalama bekleme süresi, kuyruk uzunluğu, dur-kalk sayısı ve karbon salımı ölçülebilir. Başarılı bir optimizasyon yalnızca araçları hızlandırmamalı; yayaları, bisikletlileri, toplu taşımayı ve acil durum araçlarını da hesaba katmalıdır. Kısacası akıllı kavşak, en sabırsız sürücüyü değil, bütün şehrin akışını optimize eder.</p>

<p><img src="/img/trafik-akisi-simulasyonu-85.svg" alt="trafik-akisi-simulasyonu-85" /></p>]]></content><author><name>Sonsuz Us</name></author><category term="Proje" /><category term="trafik simülasyonu" /><category term="sinyalizasyon" /><category term="optimizasyon" /><category term="python" /><category term="akıllı şehirler" /><category term="algoritma" /><summary type="html"><![CDATA[Sabah işe giderken kırmızı ışıkta bekliyor, fakat diğer yönden tek bir aracın bile geçmediğini görüyorsanız yalnız değilsiniz. Sabit süreli trafik ışıkları, gün boyunca aynı senaryonun yaşandığını varsayar. Akıllı sinyalizasyon sistemleri ise kameralar, sensörler ve optimizasyon algoritmaları yardımıyla kavşağın nabzını ölçer; yeşil ışık sürelerini gerçek zamanlı yoğunluğa göre değiştirir.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/trafik-akisi-simulasyonu-85.png" /><media:content medium="image" url="https://program.sonsuz.us/img/trafik-akisi-simulasyonu-85.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Zararlı Böcek İstilalarını Sıcaklık ve Nemle Tahmin Etmek</title><link href="https://program.sonsuz.us/posts/zararli-bocek-istilalarini-sicaklik-ve-nemle-tahmin-etmek/" rel="alternate" type="text/html" title="Zararlı Böcek İstilalarını Sıcaklık ve Nemle Tahmin Etmek" /><published>2026-10-27T00:00:00+00:00</published><updated>2026-10-27T00:00:00+00:00</updated><id>https://program.sonsuz.us/posts/zararli-bocek-istilalarini-sicaklik-ve-nemle-tahmin-etmek</id><content type="html" xml:base="https://program.sonsuz.us/posts/zararli-bocek-istilalarini-sicaklik-ve-nemle-tahmin-etmek/"><![CDATA[<p>Tarladaki böcekler takvim kullanmaz; fakat sıcaklık ve nem değişimlerine şaşırtıcı derecede düzenli tepkiler verir. Hava ısındığında gelişimleri hızlanabilir, uygun nem seviyelerinde yumurtadan çıkma ve hayatta kalma oranları artabilir. Bu biyolojik ilişkileri matematiksel modellere dönüştürerek bir zararlı popülasyonunun ne zaman tehlikeli seviyeye ulaşacağını önceden tahmin etmek mümkündür.</p>

<p>``</p>

<h2 id="böcek-gelişiminin-termal-saati">Böcek gelişiminin termal saati</h2>

<p>Böcekler değişken vücut sıcaklığına sahip canlılardır. Bu nedenle gelişme hızları çevre sıcaklığıyla yakından ilişkilidir. En yaygın yaklaşım, <strong>derece-gün</strong> adı verilen birikimli sıcaklık ölçüsüdür. Bir günün derece-gün değeri basitçe şöyle hesaplanabilir:</p>

\[DG = \max\left(0, \frac{T_{max}+T_{min}}{2}-T_{eşik}\right)\]

<p>Burada $T_{eşik}$, zararlının gelişiminin durduğu taban sıcaklığıdır. Örneğin eşik $10^\circ C$, günlük ortalama sıcaklık ise $18^\circ C$ olduğunda o gün $8$ derece-gün birikir. Bir türün yumurtadan erginliğe geçmesi için 240 derece-güne ihtiyacı varsa uygun koşullarda gelişim yaklaşık 30 gün sürebilir.</p>

<p>Ancak sıcaklık tek oyuncu değildir. Nem; yumurtaların kurumasını, larvaların yaşama oranını ve mantar kaynaklı doğal ölümleri etkileyebilir. Bu yüzden modele bir nem uygunluk katsayısı eklenebilir:</p>

\[H(RH)=\exp\left(-\frac{(RH-RH_{opt})^2}{2\sigma^2}\right)\]

<p>$RH$ bağıl nemi, $RH_{opt}$ türün tercih ettiği nemi, $\sigma$ ise tolerans genişliğini gösterir. Nem ideal değerden uzaklaştıkça $H(RH)$ sıfıra yaklaşır.</p>

<h2 id="popülasyon-nasıl-modellenir">Popülasyon nasıl modellenir?</h2>

<p>Basit üstel büyüme modeli $N_{t+1}=N_t e^r$ biçimindedir. Gerçek tarlalarda kaynaklar sınırlı olduğu için lojistik büyüme daha gerçekçidir:</p>

\[N_{t+1}=N_t+r_tN_t\left(1-\frac{N_t}{K}\right)-M_t\]

<p>Burada $N_t$ popülasyon, $K$ çevrenin taşıma kapasitesi, $M_t$ doğal ölüm veya mücadele etkisi, $r_t$ ise hava koşullarına bağlı büyüme oranıdır. Örneğin $r_t=r_0 f(T_t)H(RH_t)$ seçilebilir. Böylece çok sıcak, çok soğuk veya aşırı kuru günler büyümeyi frenler.</p>

<table>
  <thead>
    <tr>
      <th>Yaklaşım</th>
      <th>Güçlü yanı</th>
      <th>Sınırlaması</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Derece-gün</td>
      <td>Kolay hesaplanır, biyolojik yorumu nettir</td>
      <td>Nem ve aşırı sıcaklık etkisini zayıf temsil eder</td>
    </tr>
    <tr>
      <td>Lojistik model</td>
      <td>Kaynak sınırını hesaba katar</td>
      <td>Parametre kalibrasyonu gerekir</td>
    </tr>
    <tr>
      <td>Makine öğrenmesi</td>
      <td>Karmaşık ilişkileri öğrenebilir</td>
      <td>Çok ve kaliteli veriye ihtiyaç duyar</td>
    </tr>
    <tr>
      <td>Hibrit model</td>
      <td>Biyoloji ile veriyi birleştirir</td>
      <td>Kurulumu ve doğrulaması daha zordur</td>
    </tr>
  </tbody>
</table>

<p><img src="/img/zararli-bocek-istilalarini-28.svg" alt="zararli-bocek-istilalarini-28" /></p>

<h2 id="python-ile-basit-risk-skoru">Python ile basit risk skoru</h2>

<p>Aşağıdaki örnek, günlük sıcaklık ve nemden sıfır ile bir arasında bir istilâ riski üretir. Bu bir üretim modeli değil, mekanizmayı görünür kılan küçük bir prototiptir.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="n">math</span>

<span class="k">def</span> <span class="nf">istila_riski</span><span class="p">(</span><span class="n">t_min</span><span class="p">,</span> <span class="n">t_max</span><span class="p">,</span> <span class="n">nem</span><span class="p">,</span> <span class="n">taban</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
                  <span class="n">ideal_nem</span><span class="o">=</span><span class="mi">70</span><span class="p">,</span> <span class="n">nem_toleransi</span><span class="o">=</span><span class="mi">15</span><span class="p">):</span>
    <span class="n">ortalama</span> <span class="o">=</span> <span class="p">(</span><span class="n">t_min</span> <span class="o">+</span> <span class="n">t_max</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span>
    <span class="n">derece_gun</span> <span class="o">=</span> <span class="nf">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">ortalama</span> <span class="o">-</span> <span class="n">taban</span><span class="p">)</span>

    <span class="c1"># Nem ideal değerden uzaklaştıkça uygunluk azalır.
</span>    <span class="n">nem_uygunlugu</span> <span class="o">=</span> <span class="n">math</span><span class="p">.</span><span class="nf">exp</span><span class="p">(</span>
        <span class="o">-</span><span class="p">((</span><span class="n">nem</span> <span class="o">-</span> <span class="n">ideal_nem</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">nem_toleransi</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
    <span class="p">)</span>

    <span class="c1"># 20 derece-gün günlük üst referans kabul edilmiştir.
</span>    <span class="n">sicaklik_uygunlugu</span> <span class="o">=</span> <span class="nf">min</span><span class="p">(</span><span class="n">derece_gun</span> <span class="o">/</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">sicaklik_uygunlugu</span> <span class="o">*</span> <span class="n">nem_uygunlugu</span>

<span class="nf">print</span><span class="p">(</span><span class="nf">istila_riski</span><span class="p">(</span><span class="mi">18</span><span class="p">,</span> <span class="mi">28</span><span class="p">,</span> <span class="mi">72</span><span class="p">))</span>
</code></pre></div></div>

<p>Gerçek bir sistemde bu skor; geçmiş tuzak sayımları, yağış, rüzgâr, bitki gelişim dönemi ve ilaçlama kayıtlarıyla kalibre edilmelidir. Model çıktısı ayrıca düşük, orta ve yüksek risk eşiklerine çevrilebilir.</p>

<h2 id="tahmin-neden-doğrulanmalıdır">Tahmin neden doğrulanmalıdır?</h2>

<p>Yüksek risk, kesin istilâ anlamına gelmez. Mikroiklim, doğal düşmanlar ve veri sensörlerindeki hatalar sonucu değiştirebilir. Bu nedenle veri eğitim ve test dönemlerine ayrılmalı; tahminler MAE, RMSE veya sınıflandırma metrikleriyle ölçülmelidir. En güvenli yaklaşım, modeli otomatik ilaçlama düğmesi olarak değil, saha gözlemini doğru zamana yönlendiren bir erken uyarı sistemi olarak kullanmaktır.</p>]]></content><author><name>Sonsuz Us</name></author><category term="Bilgi" /><category term="tarım teknolojileri" /><category term="matematiksel modelleme" /><category term="veri bilimi" /><category term="python" /><category term="makine öğrenmesi" /><category term="entomoloji" /><summary type="html"><![CDATA[Tarladaki böcekler takvim kullanmaz; fakat sıcaklık ve nem değişimlerine şaşırtıcı derecede düzenli tepkiler verir. Hava ısındığında gelişimleri hızlanabilir, uygun nem seviyelerinde yumurtadan çıkma ve hayatta kalma oranları artabilir. Bu biyolojik ilişkileri matematiksel modellere dönüştürerek bir zararlı popülasyonunun ne zaman tehlikeli seviyeye ulaşacağını önceden tahmin etmek mümkündür.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://program.sonsuz.us/img/zararli-bocek-istilalarini-28.png" /><media:content medium="image" url="https://program.sonsuz.us/img/zararli-bocek-istilalarini-28.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>