We present pyOpt, an object-oriented framework for formulating and solving nonlinear constrained optimization problems in an efficient, reusable and portable manner. The framework uses object-oriented concepts, such a...
详细信息
We present pyOpt, an object-oriented framework for formulating and solving nonlinear constrained optimization problems in an efficient, reusable and portable manner. The framework uses object-oriented concepts, such as class inheritance and operator overloading, to maintain a distinct separation between the problem formulation and the optimization approach used to solve the problem. This creates a common interface in a flexible environment where both practitioners and developers alike can solve their optimization problems or develop and benchmark their own optimization algorithms. The framework is developed in the Python programming language, which allows for easy integration of optimization software programmed in Fortran, C, C+ +, and other languages. A variety of optimization algorithms are integrated in pyOpt and are accessible through the common interface. We solve a number of problems of increasing complexity to demonstrate how a given problem is formulated using this framework, and how the framework can be used to benchmark the various optimization algorithms.
Refactoring is recognized as an essential practice in the context of evolutionary and agile software development. Recognizing the importance of the practice, modern IDEs provide some support for low-level refactorings...
详细信息
Refactoring is recognized as an essential practice in the context of evolutionary and agile software development. Recognizing the importance of the practice, modern IDEs provide some support for low-level refactorings. A notable exception in the list of supported refactorings is the "Extract Class" refactoring. which is conceived to simplify large, complex, unwieldy and less cohesive classes. In this work, we describe a method and a tool, implemented as an Eclipse plugin, designed to fulfill exactly this need. Our method involves three steps: (a) recognition of Extract Class opportunities. (b) ranking of the identified opportunities in terms of the improvement each one is anticipated to bring about to the system design, and (c) fully automated application of the refactoring chosen by the developer. The first step relies on an agglomerative clustering algorithm, which identifies cohesive sets of class members within the system classes. The second step relies on the Entity Placement metric as a measure of design quality. Through a set of experiments we have shown that the tool is able to identify and extract new classes that developers recognize as "coherent concepts" and improve the design quality of the underlying system. (C) 2012 Elsevier Inc. All rights reserved.
HyperReal is an object-based programming paradigm which introduces a time-driven control model as a primitive mechanism. A system consists of a collection of actors which are not aware of timing issues. Timing is spec...
详细信息
HyperReal is an object-based programming paradigm which introduces a time-driven control model as a primitive mechanism. A system consists of a collection of actors which are not aware of timing issues. Timing is specified at a programming-in-the-large level, thus improving modularity and re-usability. The paper discusses the rationale for this approach;introduces HR2, an Oberon-based subset of HyperReal;and presents a set of examples which highlight how HR2 can be used for supporting different control disciplines.
The Trust4All project aims to define an open, component-based framework for the middleware layer in high-volume embedded appliances that enables robust and reliable operation, upgrading and extension. To improve the a...
详细信息
The Trust4All project aims to define an open, component-based framework for the middleware layer in high-volume embedded appliances that enables robust and reliable operation, upgrading and extension. To improve the availability of each individual application in a Trust4All system, a runtime configurable fault management mechanism (FMM) is proposed, which detects deviations from given service specifications by intercepting interface calls. When repair is necessary, FMM picks a repair action that incurs the best tradeoff between the success rate and the cost of repair. Considering that it is rather difficult to obtain sufficient information about third party components during their early stage of usage, FMM is designed to be able to accumulate knowledge and adapts its capability accordingly.
This paper introduces NiHu, a C++ template library for boundary element methods (BEM). The library is capable of computing the coefficients of discretised boundary integral operators in a generic way with arbitrarily ...
详细信息
This paper introduces NiHu, a C++ template library for boundary element methods (BEM). The library is capable of computing the coefficients of discretised boundary integral operators in a generic way with arbitrarily defined kernels and function spaces. NiHu'S template core defines the workflow of a general BEM algorithm independent of the specific application. The core provides expressive syntax, based on the operator notation of the BEM, reflecting the mathematics behind boundary elements in the C++ source code. The customisable Component library contains elements specific to particular applications such as different numerical integration techniques and regularisation methods. The library can be used for creating a standalone C++ application using external open source libraries, or compiling a Matlab tool-box through the MEX interface. By massively exploiting C++ template metaprogramming, NiHu generates optimised codes for specific applications, including heterogeneous problems. The paper introduces the main concepts of the novel development, demonstrates its versatility and flexibility and compares the implementation's performance to that of other open source projects. (C) 2014 Elsevier Ltd. All rights reserved.
Modularity is one of the most important principles in software engineering and a necessity for every practical software. Since the design space of software is generally quite large, it is valuable to provide automatic...
详细信息
Modularity is one of the most important principles in software engineering and a necessity for every practical software. Since the design space of software is generally quite large, it is valuable to provide automatic means to help modularising it. An automatic technique for software modularisation using object-oriented concept analysis (OOCA) is proposed. The proposed technique is strongly inspired by the success of reverse engineering techniques based on formal concept analysis (FCA). However, our experience shows that FCA-based techniques generally result in fine-grained modules and, thus, may be inadequate for modularising large-scale designs. To overcome this weakness, the authors employ OOCA, a recent proposal for concept formulations. OOCA enables to provide coarse concepts as module candidates while keeping the advantage of FCA techniques. To the best of the authors' knowledge, it is the first work to apply OOCA in software engineering research. To illustrate the potential of the approach, the authors perform a software modularisation case study on a real insurance software design with comparison.
VORPAL is a new plasma simulation code designed for maximum flexibility through use of advance C++ techniques. Through use of inheritance, VORPAL incorporates multiple models for the plasma and electromagnetic fields....
详细信息
VORPAL is a new plasma simulation code designed for maximum flexibility through use of advance C++ techniques. Through use of inheritance, VORPAL incorporates multiple models for the plasma and electromagnetic fields. The plasma models include both particle-in-cell and fluid models. Through C++ meta-template programming a single code can be used to simulate one-, two-, or three-dimensional systems with no loss of performance. VORPAL can also be run in either serial or parallel, with the latter using a general domain decomposition. A new fluid algorithm that allows for regions of zero density was developed and incorporated into the code. VORPAL simulation results for the generation of laser wake fields through laser-plasma interaction are presented. (C) 2003 Elsevier Inc. All rights reserved.
object-oriented metrics have been validated empirically as measures of design complexity. These metrics can be used to mitigate potential problems in the software complexity. However, there are few studies that were c...
详细信息
object-oriented metrics have been validated empirically as measures of design complexity. These metrics can be used to mitigate potential problems in the software complexity. However, there are few studies that were conducted to formulate the guidelines, represented as threshold values, to interpret the complexity of the software design using metrics. Classes can be clustered into low and high risk levels using threshold values. In this paper, we use a statistical model, derived from the logistic regression, to identify threshold values for the Chidamber and Kemerer (CK) metrics. The methodology is validated empirically on a large open-source system-the Eclipse project. The empirical results indicate that the CK metrics have threshold effects at various risk levels. We have validated the use of these thresholds on the next release of the Eclipse project-Version 2.1-using decision trees. In addition, the selected threshold values were more accurate than those were selected based on either intuitive perspectives or on data distribution parameters. Furthermore, the proposed model can be exploited to find the risk level for an arbitrary threshold value. These findings suggest that there is a relationship between risk levels and object-oriented metrics and that risk levels can be used to identify threshold effects.
The transition from Java 1.4 to Java 1.5 has provided the programmer with more flexibility due to the inclusion of several new language constructs, such as parameterized types. This transition is expected to increase ...
详细信息
The transition from Java 1.4 to Java 1.5 has provided the programmer with more flexibility due to the inclusion of several new language constructs, such as parameterized types. This transition is expected to increase the number of class clusters exhibiting different combinations of class characteristics. In this paper we investigate how the number and distribution of clusters are expected to change during this transition. We present the results of an empirical study were we analyzed applications written in both Java 1.4 and 1.5. In addition, we show how the variability of the combinations of class characteristics may affect the testing of class members. (C) 2008 Elsevier Inc. All rights reserved.
Soil profile data that characterize the physical and chemical properties of a soil are among the required set of inputs for ecological, crop and other dynamic simulation models. A web-based soil information system oft...
详细信息
Soil profile data that characterize the physical and chemical properties of a soil are among the required set of inputs for ecological, crop and other dynamic simulation models. A web-based soil information system often provides the site-specific soil data of which formats are not readily compatible to crop models. The Soil daTA Retrieval Tool (START) was developed to automate a series of procedures for preparation of soil input data that includes the retrieval of soil profile data from the information system, reorganization of data, estimation of soil parameters, and creation of input files foi simulation models. In a case study, the START was implemented to support the SoilGrids database operated by the International Soil Reference and Information Center. It took about 0.33% of time for the START to create soil input files compared with manual preparation. These results suggest that the START could provide an efficient approach for preparation of soil input files especially for sites where little soil information is available.
暂无评论