8 research outputs found

    GUIDE: Unifying Evolutionary Engines through a Graphical User Interface

    Get PDF
    International audienceMany kinds of Evolutionary Algorithms (EAs) have been described in the literature since the last 30 years. However, though most of them share a common structure, no existing software package allows the user to actually shift from one model to another by simply changing a few parameters, e.g. in a single window of a Graphical User Interface. This paper presents GUIDE, a Graphical User Interface for DREAM Experiments that, among other user-friendly features, unifies all kinds of EAs into a single panel, as far as evolution parameters are concerned. Such a window can be used either to ask for one of the well known ready-to-use algorithms, or to very easily explore new combinations that have not yet been studied. Another advantage of grouping all necessary elements to describe virtually all kinds of EAs is that it creates a fantastic pedagogic tool to teach EAs to students and newcomers to the field

    Certified self-modifying code

    Full text link

    Co-evolutionary automatic programming for software development

    Get PDF
    AbstractSince the 1970s the goal of generating programs in an automatic way (i.e., Automatic Programming) has been sought. A user would just define what he expects from the program (i.e., the requirements), and it should be automatically generated by the computer without the help of any programmer. Unfortunately, this task is much harder than expected. Although transformation methods are usually employed to address this problem, they cannot be employed if the gap between the specification and the actual implementation is too wide. In this paper we introduce a novel conceptual framework for evolving programs from their specification. We use genetic programming to evolve the programs, and at the same time we exploit the specification to co-evolve sets of unit tests. Programs are rewarded by how many tests they do not fail, whereas the unit tests are rewarded by how many programs they make to fail. We present and analyse seven different problems on which this novel technique is successfully applied

    Intérprete para un lenguaje de programación orientado a objetos, con mecanismos de optimización y modificación dinámica de código

    Get PDF
    Este trabajo trata sobre la implementación de un intérprete para un lenguaje propio, que incluye algunas características que no son abordadas en cursos básicos de Desarrollo de Compiladores. Estas características son: lenguaje de programación orientado a objetos, modificación dinámica de código y optimización de código intermedio. El objetivo de este proyecto es presentar estas características, proponer una forma de implementación de las mismas y finalmente proceder a implementarlas. De tal manera que este trabajo contribuya al aprendizaje de construcción de intérpretes o compiladores, sirviendo como un caso de estudio para aquellas personas que tengan como objetivo profundizar en el tema, y por consiguiente un posible punto de partida para futuros trabajos. Por otro lado, es necesario validar los resultados obtenidos por el optimizador, así como la eficiencia de la forma implementación escogida, por lo que se incluye también una experimentación numérica que permite comprobar las hipótesis planteadas al inicio. En la primera parte, se define el problema identificado, luego se describe un breve marco teórico con los principales conceptos involucrados en el desarrollo del proyecto, seguidamente se muestra el estado del arte con relación a compiladores e intérpretes y se describe la solución al problema planteado al inicio. En la segunda parte, principalmente, se describen los objetivos del proyecto, los aportes específicos, los resultados esperados y las hipótesis. Como se mencionó anteriormente, uno de los objetivos que se persigue es que la tesis pueda servir como un caso de estudio para las personas interesadas y una posible base para trabajos futuros; por lo tanto, es necesario explicar la implementación con un nivel de detalle adecuado. En ese sentido, se describe las distintas partes de la implementación escogida: se comienza con la descripción de la gramática del lenguaje, después se describen las estructuras utilizadas, algunas operaciones primitivas, el código intermedio generado, las principales acciones semánticas, la interpretación, la administración de memoria, los algoritmos de optimización, el diseño del IDE y el ambiente de desarrollo.Tesi

    非同期進化的アルゴリズムによるプログラム進化

    Get PDF
    本研究では,問題の特性や事前知識によらず汎用的に最適解を獲得可能なメタヒューリスティック最適化手法の一つである進化的アルゴリズム(Evolutionary Algorithm:EA)に着目し,解を同期的に進化させることが困難な問題に対して,すべての解の評価を待たずに非同期に進化させる非同期進化法を提案し,その有効性を検証することを目的とする.その目的達成に向けて本研究では,二種類の非同期EAを提案する.一つ目は,非同期なデジタル生物の進化をシミュレートするTierraを拡張し,絶対評価にもとづいて解を進化させるTierra型非同期EA(Tierra-based Asynchronous EA:TAEA)を提案するとともに,適合度を進化の過程で適応的に調節する機構を導入した適応型TAEA(TAEA+)を提案する.二つ目は,非同期に得られる部分的な解評価から更新される指標を用いて相対評価に基づいて解を進化させる非同期リファレンス評価を用いるEA(Asynchronous Reference-based Evaluation EA:ARE-EA)を提案する.提案手法の有効性を検証するために,本研究では(1)一般的なベンチマーク問題である関数同定問題における関数進化,(2)実応用を想定したアセンブリプログラム進化,(3)宇宙機への適用を念頭においたプログラムのビット反転が生じる環境でのアセンブリプログラム進化を実験する.提案手法をEAの代表的な手法である遺伝的プログラミング(Genetic Programming:GP)に適用した結果,提案非同期進化法であるTAGP(TAGP+を含む)とARE-GPは,(i)部分的な解の評価のみで,全体の解の評価を利用可能な従来の同期進化法と同等以上の関数近似性能を達成可能であり,(ii)解の評価時間のばらつきが大きいほど関数近似性能が向上する.また,(iii)与えられた正常なプログラムを維持可能であることに加えて,実行ステップ数の最小化が可能である.さらに,(iv)プログラムの改変や変数のエラーが発生してもプログラム進化を可能にすることを明らかにした.具体的には,(i)に関しては,関数同定問題において,TAGP+とARE-GPは同期GPの( + )-GPを上回る関数近似性能を示し,非同期GPである非同期steady-stateGP(ASSGP)と比較しても同等以上の性能を示すことが明らかになった.(ii)に関しては,評価時間にばらつきがある場合に評価時間にばらつきがない場合と比べてARE-GPの関数近似性能が向上する可能性があることが示唆された.(iii)に関しては,アセンブリプログラムの進化において,TAGPとARE-GP,同期GPであるSSGPはいずれも与えられた正常なプログラムを維持可能であり,その中でもTAGPとARE-GPはSSGPでは獲得できない実行ステップ数の短いプログラムを生成可能であることが分かった,(iv)に関しては,プログラムのビット反転が発生する環境において,TAGPとARE-GPは正常なプログラムを維持可能であり,さらに初期に与えたプログラムよりもサイズの小さなプログラムを生成可能である.電気通信大学201

    An Investigation of Supervised Learning in Genetic Programming

    Get PDF
    Centre for Intelligent Systems and their Applicationsstudentship 9314680This thesis is an investigation into Supervised Learning (SL) in Genetic Programming (GP). With its flexible tree-structured representation, GP is a type of Genetic Algorithm, using the Darwinian idea of natural selection and genetic recombination, evolving populations of solutions over many generations to solve problems. SL is a common approach in Machine Learning where the problem is presented as a set of examples. A good or fit solution is one which can successfully deal with all of the examples.In common with most Machine Learning approaches, GP has been used to solve many trivial problems. When applied to larger and more complex problems, however, several difficulties become apparent. When focusing on the basic features of GP, this thesis highlights the immense size of the GP search space, and describes an approach to measure this space. A stupendously flexible but frustratingly useless representation, Anarchically Automatically Defined Functions, is described. Some difficulties associated with the normal use of the GP operator Crossover (perhaps the most common method of combining GP trees to produce new trees) are demonstrated in the simple MAX problem. Crossover can lead to irreversible sub-optimal GP performance when used in combination with a restriction on tree size. There is a brief study of tournament selection which is a common method of selecting fit individuals from a GP population to act as parents in the construction of the next generation.The main contributions of this thesis however are two approaches for avoiding the fitness evaluation bottleneck resulting from the use of SL in GP. to establish the capability of a GP individual using SL, it must be tested or evaluated against each example in the set of training examples
    corecore