12 research outputs found
What Petri Net Obliges Us to Say: Comparing Approaches for Behavior Composition
We identify and demonstrate a weakness of Petri Nets (PN) in specifying
composite behavior of reactive systems. Specifically, we show how, when
specifying multiple requirements in one PN model, modelers are obliged to
specify mechanisms for combining these requirements. This yields, in many
cases, over-specification and incorrect models. We demonstrate how some
execution paths are missed, and some are generated unintentionally. To support
this claim, we analyze PN models from the literature, identify the combination
mechanisms, and demonstrate their effect on the correctness of the model. To
address this problem, we propose to model the system behavior using behavioral
programming (BP), a software development and modeling paradigm designed for
seamless integration of independent requirements. Specifically, we demonstrate
how the semantics of BP, which define how to interweave scenarios into a single
model, allow avoiding the over-specification. Additionally, while BP maintains
the same mathematical properties as PN, it provides means for changing the
model dynamically, thus increasing the agility of the specification. We compare
BP and PN in quantitative and qualitative measures by analyzing the models,
their generated execution paths, and the specification process. Finally, while
BP is supported by tools that allow for applying formal methods and reasoning
techniques to the model, it lacks the legacy of PN tools and algorithms. To
address this issue, we propose semantics and a tool for translating BP models
to PN and vice versa.Comment: 14 pages, 10 figures, Published in IEEE Transactions on Software
Engineering (IEEE TSE
EC-KitY: Evolutionary Computation Tool Kit in Python with Seamless Machine Learning Integration
EC-KitY is a comprehensive Python library for doing evolutionary computation
(EC), licensed under the BSD 3-Clause License, and compatible with
scikit-learn. Designed with modern software engineering and machine learning
integration in mind, EC-KitY can support all popular EC paradigms, including
genetic algorithms, genetic programming, coevolution, evolutionary
multi-objective optimization, and more. This paper provides an overview of the
package, including the ease of setting up an EC experiment, the architecture,
the main features, and a comparison with other libraries.Comment: 6 pages, 1 figure, 1 table. Published in Elsevier Software
Evolving Hyper Heuristic-Based Solvers for Rush Hour and FreeCell
We use genetic programming to evolve highly successful solvers for two puzzles: Rush Hour and FreeCell
From Requirements to Source Code: Evolution of Behavioral Programs
Automatically generating executable code has a long history of arguably modest success, mostly limited to the generation of small programs of up to 200 lines of code, and genetic improvement of existing code. We present the use of genetic programming (GP) in conjunction with context-oriented behavioral programming (COBP), the latter being a programming paradigm with unique characteristics that facilitate automatic coding. COBP models a program as a set of behavioral threads (b-threads), each aligned to a single behavior or requirement of the system. To evolve behavioral programs we design viable and effective genetic operators, a genetic representation, and evaluation methods. The simplicity of the COBP paradigm, its straightforward syntax, the ability to use verification and formal-method techniques to validate program correctness, and a program comprising small independent chunks all allow us to effectively generate behavioral programs using GP. To demonstrate our approach we evolve complete programs from scratch of a highly competent O player for the game of tic-tac-toe. The evolved programs are well structured, consisting of multiple, explainable modules that specify the different behavioral aspects of the program and are similar to our handcrafted program. To validate the correctness of our individuals, we utilize the mathematical characteristics of COBP to analyze program behavior under all possible execution paths. Our analysis of an evolved program proved that it plays as expected more than 99% of the times
From Requirements to Source Code: Evolution of Behavioral Programs
Automatically generating executable code has a long history of arguably modest success, mostly limited to the generation of small programs of up to 200 lines of code, and genetic improvement of existing code. We present the use of genetic programming (GP) in conjunction with context-oriented behavioral programming (COBP), the latter being a programming paradigm with unique characteristics that facilitate automatic coding. COBP models a program as a set of behavioral threads (b-threads), each aligned to a single behavior or requirement of the system. To evolve behavioral programs we design viable and effective genetic operators, a genetic representation, and evaluation methods. The simplicity of the COBP paradigm, its straightforward syntax, the ability to use verification and formal-method techniques to validate program correctness, and a program comprising small independent chunks all allow us to effectively generate behavioral programs using GP. To demonstrate our approach we evolve complete programs from scratch of a highly competent O player for the game of tic-tac-toe. The evolved programs are well structured, consisting of multiple, explainable modules that specify the different behavioral aspects of the program and are similar to our handcrafted program. To validate the correctness of our individuals, we utilize the mathematical characteristics of COBP to analyze program behavior under all possible execution paths. Our analysis of an evolved program proved that it plays as expected more than 99% of the times
Evolving Solvers for FreeCell and the Sliding-Tile Puzzle
We use genetic algorithms to evolve highly successful solvers for two puzzles: FreeCell and the Sliding-Tile Puzzle