{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "chem-bla-ics",
  "description": "Chemblaics (pronounced chem-bla-ics) is the science that uses open science and computers to solve problems in chemistry, biochemistry and related fields.",
  "home_page_url": "https://chem-bla-ics.linkedchemistry.info/",
  "feed_url": "https://chem-bla-ics.linkedchemistry.info/2007/11/19/r-based-genetic-algorithm.json",
  "icon": "https://chem-bla-ics.linkedchemistry.info/assets/images/chem-bla-ics_logo.png",
  "language": "en",
  "authors": [
    {
      "name": "Egon Willighagen",
      "url": "https://orcid.org/0000-0001-7542-0286",
      "_orcid": "0000-0001-7542-0286"
    }
  ],
  "items": [

    {
      "id": "https://doi.org/10.59350/hfw6p-d6p02",
      "url": "https://chem-bla-ics.linkedchemistry.info/2007/11/19/r-based-genetic-algorithm.html",
      "title": "An R-based genetic algorithm",
      "content_html": "<p>During my PhD I wrote a simple but <a href=\"http://cran.r-project.org/src/contrib/Descriptions/genalg.html\">effective genetic algorithm</a> package for\n<a href=\"http://www.r-project.org/\">R</a>. Because there was a bug recently found, and there is interest in extending the functionality,\nI have set up a <a href=\"http://sourceforge.net/\">SourceForge</a> project called\n<a href=\"http://sourceforge.net/projects/genalg\">genalg</a>.</p>\n\n<p>The package provides GA support for binary and real-value chromosomes (and integer chromosomes is something that will\nbe added soon), and allows to use custom evaluation functions. Here is some example code:</p>\n\n<div class=\"language-R highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"c1\"># optimize two values to match pi and sqrt(50)</span><span class=\"w\">\n</span><span class=\"n\">evaluate</span><span class=\"w\"> </span><span class=\"o\">&lt;-</span><span class=\"w\"> </span><span class=\"k\">function</span><span class=\"p\">(</span><span class=\"n\">string</span><span class=\"o\">=</span><span class=\"nf\">c</span><span class=\"p\">())</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\">\n    </span><span class=\"n\">returnVal</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kc\">NA</span><span class=\"p\">;</span><span class=\"w\">\n    </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"nf\">length</span><span class=\"p\">(</span><span class=\"n\">string</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"m\">2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\">\n        </span><span class=\"n\">returnVal</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">abs</span><span class=\"p\">(</span><span class=\"n\">string</span><span class=\"p\">[</span><span class=\"m\">1</span><span class=\"p\">]</span><span class=\"o\">-</span><span class=\"nb\">pi</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"nf\">abs</span><span class=\"p\">(</span><span class=\"n\">string</span><span class=\"p\">[</span><span class=\"m\">2</span><span class=\"p\">]</span><span class=\"o\">-</span><span class=\"nf\">sqrt</span><span class=\"p\">(</span><span class=\"m\">50</span><span class=\"p\">));</span><span class=\"w\">\n    </span><span class=\"p\">}</span><span class=\"w\"> </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\">\n        </span><span class=\"n\">stop</span><span class=\"p\">(</span><span class=\"s2\">\"Expecting a chromosome of length 2!\"</span><span class=\"p\">);</span><span class=\"w\">\n    </span><span class=\"p\">}</span><span class=\"w\">\n    </span><span class=\"n\">returnVal</span><span class=\"w\">\n</span><span class=\"p\">}</span><span class=\"w\">\n</span><span class=\"n\">monitor</span><span class=\"w\"> </span><span class=\"o\">&lt;-</span><span class=\"w\"> </span><span class=\"k\">function</span><span class=\"p\">(</span><span class=\"n\">obj</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\">\n    </span><span class=\"c1\"># plot the population</span><span class=\"w\">\n    </span><span class=\"n\">xlim</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">c</span><span class=\"p\">(</span><span class=\"n\">obj</span><span class=\"o\">$</span><span class=\"n\">stringMin</span><span class=\"p\">[</span><span class=\"m\">1</span><span class=\"p\">],</span><span class=\"w\"> </span><span class=\"n\">obj</span><span class=\"o\">$</span><span class=\"n\">stringMax</span><span class=\"p\">[</span><span class=\"m\">1</span><span class=\"p\">]);</span><span class=\"w\">\n    </span><span class=\"n\">ylim</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">c</span><span class=\"p\">(</span><span class=\"n\">obj</span><span class=\"o\">$</span><span class=\"n\">stringMin</span><span class=\"p\">[</span><span class=\"m\">2</span><span class=\"p\">],</span><span class=\"w\"> </span><span class=\"n\">obj</span><span class=\"o\">$</span><span class=\"n\">stringMax</span><span class=\"p\">[</span><span class=\"m\">2</span><span class=\"p\">]);</span><span class=\"w\">\n    </span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">obj</span><span class=\"o\">$</span><span class=\"n\">population</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">xlim</span><span class=\"o\">=</span><span class=\"n\">xlim</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">ylim</span><span class=\"o\">=</span><span class=\"n\">ylim</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">xlab</span><span class=\"o\">=</span><span class=\"s2\">\"pi\"</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">ylab</span><span class=\"o\">=</span><span class=\"s2\">\"sqrt(50)\"</span><span class=\"p\">);</span><span class=\"w\">\n</span><span class=\"p\">}</span><span class=\"w\">\n</span><span class=\"n\">rbga.results</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">rbga</span><span class=\"p\">(</span><span class=\"nf\">c</span><span class=\"p\">(</span><span class=\"m\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"m\">1</span><span class=\"p\">),</span><span class=\"w\"> </span><span class=\"nf\">c</span><span class=\"p\">(</span><span class=\"m\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"m\">10</span><span class=\"p\">),</span><span class=\"w\"> </span><span class=\"n\">monitorFunc</span><span class=\"o\">=</span><span class=\"n\">monitor</span><span class=\"p\">,</span><span class=\"w\">\n    </span><span class=\"n\">evalFunc</span><span class=\"o\">=</span><span class=\"n\">evaluate</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">verbose</span><span class=\"o\">=</span><span class=\"kc\">TRUE</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">mutationChance</span><span class=\"o\">=</span><span class=\"m\">0.01</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">rbga.results</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">rbga.results</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"o\">=</span><span class=\"s2\">\"hist\"</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">rbga.results</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"o\">=</span><span class=\"s2\">\"vars\"</span><span class=\"p\">)</span><span class=\"w\">\n</span></code></pre></div></div>",
      "summary": "During my PhD I wrote a simple but effective genetic algorithm package for R. Because there was a bug recently found, and there is interest in extending the functionality, I have set up a SourceForge project called genalg.",
      
      "date_published": "2007-11-19T00:00:00+00:00",
      "date_modified": "2025-02-15T00:00:00+00:00",
      "tags": ["rstats","chemometrics"],
      
      
      "_citations": [
        
          
          
            { "url": "https://doi.org/10.1007/s10489-009-0203-x", "doi": "10.1007/s10489-009-0203-x"
            , "cito":
              
              
                [ 
                  "usesMethodIn"
                  
                 ]
               }
            
          
        ],
      
      
      
      
        "authors": [ { "name": "Egon Willighagen", "url": "https://orcid.org/0000-0001-7542-0286" } ]
      
    }

  ]
}
