5,432 research outputs found

    Precompilation: an alternative approach to provide native generic programming support in C++

    Get PDF
    In C++, Generative Programming (GP) techniques are being used to generate highly customized and optimized products automatically manufactured at compile-time; to provide these functionalities increasing compiling power is required. This work presents an improved compilation model for C++ by adding the ‘precompilation’ phase, leading beyond the Template Meta Programming technique to produce constants and conditional code. Procedural, object-oriented and all the remaining language features become available to produce constants, instances, and compiletime checks, opening, at the same time, a new way for metadata types treatment. In addition to that, when compiling for embedded platforms, some calculi may be moved from resource-critical run time to compile time, taking advantage of the processing power of the host platform. A tool named PRECOMP C++ is also presented in this work as a precompilationenabled C++ extension that supports GP in standard C++ execution during compile time, providing the ability to run metaprograms that operate with more complex data types and features than those supported in Template Meta Programming, such as floating point, pointers arithmetic, inclusion polymorphism, and dynamic memoryII Workshop de Ingeniería de Software y Bases de Datos (WISBD)Red de Universidades con Carreras en Informática (RedUNCI

    Learning to solve planning problems efficiently by means of genetic programming

    Get PDF
    Declarative problem solving, such as planning, poses interesting challenges for Genetic Programming (GP). There have been recent attempts to apply GP to planning that fit two approaches: (a) using GP to search in plan space or (b) to evolve a planner. In this article, we propose to evolve only the heuristics to make a particular planner more efficient. This approach is more feasible than (b) because it does not have to build a planner from scratch but can take advantage of already existing planning systems. It is also more efficient than (a) because once the heuristics have been evolved, they can be used to solve a whole class of different planning problems in a planning domain, instead of running GP for every new planning problem. Empirical results show that our approach (EVOCK) is able to evolve heuristics in two planning domains (the blocks world and the logistics domain) that improve PRODIGY4.0 performance. Additionally, we experiment with a new genetic operator - Instance-Based Crossover - that is able to use traces of the base planner as raw genetic material to be injected into the evolving population.Publicad

    Bayesian Optimization for Probabilistic Programs

    Full text link
    We present the first general purpose framework for marginal maximum a posteriori estimation of probabilistic program variables. By using a series of code transformations, the evidence of any probabilistic program, and therefore of any graphical model, can be optimized with respect to an arbitrary subset of its sampled variables. To carry out this optimization, we develop the first Bayesian optimization package to directly exploit the source code of its target, leading to innovations in problem-independent hyperpriors, unbounded optimization, and implicit constraint satisfaction; delivering significant performance improvements over prominent existing packages. We present applications of our method to a number of tasks including engineering design and parameter optimization

    Precompilation: an alternative approach to provide native generic programming support in C++

    Get PDF
    In C++, Generative Programming (GP) techniques are being used to generate highly customized and optimized products automatically manufactured at compile-time; to provide these functionalities increasing compiling power is required. This work presents an improved compilation model for C++ by adding the ‘precompilation’ phase, leading beyond the Template Meta Programming technique to produce constants and conditional code. Procedural, object-oriented and all the remaining language features become available to produce constants, instances, and compiletime checks, opening, at the same time, a new way for metadata types treatment. In addition to that, when compiling for embedded platforms, some calculi may be moved from resource-critical run time to compile time, taking advantage of the processing power of the host platform. A tool named PRECOMP C++ is also presented in this work as a precompilationenabled C++ extension that supports GP in standard C++ execution during compile time, providing the ability to run metaprograms that operate with more complex data types and features than those supported in Template Meta Programming, such as floating point, pointers arithmetic, inclusion polymorphism, and dynamic memoryII Workshop de Ingeniería de Software y Bases de Datos (WISBD)Red de Universidades con Carreras en Informática (RedUNCI

    Grammar Variational Autoencoder

    Get PDF
    Deep generative models have been wildly successful at learning coherent latent representations for continuous data such as video and audio. However, generative modeling of discrete data such as arithmetic expressions and molecular structures still poses significant challenges. Crucially, state-of-the-art methods often produce outputs that are not valid. We make the key observation that frequently, discrete data can be represented as a parse tree from a context-free grammar. We propose a variational autoencoder which encodes and decodes directly to and from these parse trees, ensuring the generated outputs are always valid. Surprisingly, we show that not only does our model more often generate valid outputs, it also learns a more coherent latent space in which nearby points decode to similar discrete outputs. We demonstrate the effectiveness of our learned models by showing their improved performance in Bayesian optimization for symbolic regression and molecular synthesis
    corecore