Semi-automatic model integration using matching transformations and weaving models Model transformations are at the heart of model driven engineering (MDE) and can be used in many different application scenarios. For instance, model transformations are used to integrate very large models. As a consequence, they are becoming more and more complex. However, these transformations are still developed manually. Several code patterns are implemented repetitively, increasing the probability of programming errors and reducing code reusability. There is not yet a complete solution that automates the development of model transformations. In this paper we propose a novel approach that uses matching transformations and weaving models to semi-automate the development of transformations. Matching transformations are a special kind of transformations that implement heuristics and algorithms to create weaving models. Weaving models are models that capture different kinds of relationships between models. Our solution enables to rapidly implement and to customize these heuristics. We combine different heuristics, and we propose a new metamodel-based heuristic that exploits metamodel data to automatically produce weaving models. The weaving models are derived into model integration transformations. Model transformations are a central component in model driven engineering practices. There are many model transformation languages emerging from industrial and academic efforts [3] [12] [14] [15] . As a consequence, there are an increasing number of model transformations that are being developed for different applications scenarios. For instance, there are transformations to provide tool interoperability, to translate from textual to graphical representations, or to merge models.. However, the development of transformations involves many repetitive tasks. Consider for example a generic model integration scenario that transforms one source model into one target model. The transformation development consists of creating rules that transform a set of elements of the source model into a set of elements of the target model. The properties of these elements are transformed using a set of transformation expressions. Most part of these expressions consists of 1-to-1 relationships or other common patterns, such as nesting or concatenation of elements.. These transformations are often created manually. To the best of our knowledge, there is not a MDE approach that provides enough generic mechanisms to semi-automate the development of transformations. A semi-automatic process based on well-defined patterns brings many advantages: it accelerates the development time of transformations; it diminishes the errors that may occur in manual coding; it increases the quality of transformational code.. The discovery of transformation patterns to integrate models is closely related to schema and to ontology matching approaches (see the survey at [22] ). These approaches aim at discovering semantic relationships between elements of different schemas or ontologies. These relationships are used for different purposes, such as ontology alignment [9] [19] or data translation [6] . However, these approaches have some drawbacks. Most part of solutions cannot be applied to models conforming to different metamodels. Metamodels are models that describe the structure of models. The distance between the conceptual basis (models) and the implementation (heuristics) is too important. This makes difficult to decompose and to customize different heuristics. There is no support for different kinds of relationships between models. Hence, native constructs of transformation languages are not supported, such as rule inheritance or nested relationships.. In this paper, we present a novel solution to semi-automate the development of model transformations. We propose the execution of matching transformations. Matching transformations are transformations that select a set of elements from a set of input models and that produce links between these elements. These links are captured by a weaving model, as we proposed in [7] . The weaving model conforms to extensions of a weaving metamodel. We define links that act as specifications for model integration transformations. Model integration transformations are used in standard model integration applications.. Matching transformations enable to rapidly implement new or to adapt heuristics to create weaving models. In addition, we propose a new metamodel-based heuristic that exploits the Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. internal features of the set of input metamodels to produce weaving models. This heuristic is executed together with a link rewriting method that analyzes the weaving metamodel extensions to produce frequently used transformation patterns.. The main contributions of this paper are the following. We propose a solution to semi-automate the development of model transformations. We innovate by using matching transformations to allow an easy development of different matching heuristics or algorithms. We propose a metamodel-based heuristic that exploits the information from the set of input metamodels and from the weaving metamodel. These matching transformations automatically create weaving models. The weaving models are derived into model integration transformations. This paper is organized as follows. Section 2 is the motivating example. Section 3 presents the general architecture. Section 4 presents weaving metamodel extensions that capture different kinds of relationships between models. Section 5 describes the matching transformations in more details. Section 6 presents how to derive a weaving model into executable model integration transformations. Section 7 presents a general discussion. Section 8 presents the related work. Section 9 concludes. In this paper, we have presented a solution to automate the production of model transformations. We have proposed to use matching transformations that create weaving models. These transformations execute different matching heuristics. The weaving models capture common transformation patterns between model elements. The weaving model is translated into executable model integration transformations.. We have shown that matching transformations are a practical solution to implement new or to adapt matching heuristics. The use of declarative transformation languages enabled to abstract implementation details on how to apply these heuristics. The separation of the whole matching process into different kinds of matching transformations allowed combining different methods in a straightforward way.. The matching transformations enabled the creation of weaving models between models conforming to different metamodels, and also the creation of links only between a restricted set of elements. We proposed a new metamodel-based matching transformation that takes advantage of every property of a given metamodel. We have presented a new link rewriting operation that analyzes the relationships between the links of a weaving model. These links are transformed into complex kind of links. This operation is particularly important to capture complex transformation patterns.. We developed a weaving metamodel that captures common transformation patterns. The weaving models conforming to this metamodel were translated into transformations using higherorder transformations. We were able to produce the transformation model that performs the data translation from a source into a target model.. The use of several matching transformations can cause performance problems when generating transformations between large models. Thus, the optimization of these operations is becoming important and is a subject for future work. For instance, after choosing a set of operations to create a weaving model, these operations could be merged by a transformation engine to be executed in a single rule. The matching transformations are executed with two variations of the motivation example. The only link that is not generated correctly is UndergraduateStudent. This is because none of the initial similarity methods can find high similarity values. The values are not propagated, because the inheritance relationships exist only in the source model. We thus use the weaving engine to modify the weaving model. After applying all the transformations and using the weaving engine, the weaving model is reduced to 78 elements, with 12 links.. Finally, the weaving model is used as input to higher-order transformations. We created a HOT with 250 lines. It is relatively complex compared to the generated transformation, with only four ATL rules. However, this HOT and the matching heuristics are implemented to be used many times in different applications.. In the second example, we evaluate if the matching transformations can create weavings between models conforming to different metamodels. The base algorithms of the matching transformations are the same, leading to similar results. However, we adjust the implementation of the containment tree, as well as the metamodel-based heuristics. For example, we compare data types such as String (in KM3) and char (in SQL-DDL). Thus, the generic matching heuristics can be rapidly modified to match models conforming to different metamodels. The weaving models generated in both examples are equivalent.. To summarize, the use of matching transformations and weaving models enables to semi-automate the production of model transformations in an efficient manner. Matching transformations enables to rapidly implement different heuristics that produce a weaving model. These heuristics can be adapted to different metamodels. The weaving model captures different transformation patterns specified in a weaving metamodel. The weaving model is translated into a model transformation language. To the best of our knowledge, our solution is the only complete model driven approach that automates the production of model transformations. However, there has been extensive work on how to find relationships between schemas and ontologies. These approaches have different goals, such as data and schema integration [2] [6] [17] , ontology merging and alignment [10] [19] [20] , or ontology integration [9] . Amongst these several approaches, COMA++ [2] and the API of Euzenat [10] are the solutions most similar to ours.. COMA++ implements a set of heuristics, using for instance element-to-element methods or incremental matching. COMA++ provides an interactive user interface to combine these heuristics. Matching transformations provide a more suitable mechanism for adaptation, because the declarative nature of the transformations allows abstracting implementation details, such as the creation of new elements and the match of several elements.. The work of Euzenat factors out schema matching features and proposes a generic API. The API provides interface methods used to implement different matching heuristics and to combine different matching results. The main drawback of this API is that the new matching methods must be implemented almost from scratch. The API does not provide interfaces for each different matching phase. We implement these operations using model transformations. This enables to create customized heuristics to match different metamodels. However, we do not provide operations to evaluate different matching results.. The solution from [9] proposes machine learning techniques to select amongst a set of heuristics, and not to create heuristics as in most part of solutions. We believe this is a complementary approach. The machine learning techniques could be enhanced to support our matching transformations as input.. iMAP [6] is one of the few approaches that creates complex links. However, the links are all created in the beginning of a matching (equivalent to our CreateWeaving operation). We create complex mappings after filtering a weaving model. Our link rewriting method creates a smaller number of complex links that are targeted to produce model transformations.. Similarity Flooding (SF) [18] is a generic structural heuristic that propagates the similarity of a pair of nodes through their neighbors. However, as the author say in [18] , it is not adapted to match models conforming to different metamodels. This algorithm is the basis of our metamodel-based matching transformations. We improve this heuristic to support the matching of different metamodels, with two different ways to propagate the similarities through the neighbors' elements.

O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O


Approximation algorithms for multiprocessor scheduling under uncertainty Motivated by applications in grid computing and project management, we study multiprocessor scheduling in scenarios where there is uncertainty in the successful execution of jobs when assigned to processors. We consider the problem of multiprocessor scheduling under uncertainty, in which we are given n unit-time jobs and m machines, a directed acyclic graph C giving the dependencies among the jobs, and for every job j and machine i, the probability pij of the successful completion of job j when scheduled on machine i in any given particular step. The goal of the problem is to find a schedule that minimizes the expected makespan, that is, the expected completion time of all the jobs.The problem of multiprocessor scheduling under uncertainty was introduced by Malewicz and was shown to be NP-hard even when all the jobs are independent. In this paper, we present polynomial-time approximation algorithms for the problem, for special cases of the dag C. We obtain an O(log n)-approximation for the case of independent jobs, an O(log m log n log(n + m)/ log log(n + m))-approximation when C is a collection of disjoint chains, an O(log m log 2 n)-approximation when C is a collection of directed out-or in-trees, and an O(log m log 2 n log(n + m)/ log log(n + m))-approximation when C is a directed forest. We study the problem of multiprocessor scheduling under uncertainty, which was introduced in [22] to study scenarios where there is uncertainty in the successful completion of a job when assigned to a server. One motivating application is in grid computing, where a large collection of computers, often geographically distributed,cooperate to solve complex computational tasks. To make better use of the distributed computers, a task is usually divided into smaller pieces (or jobs) and handed to different computers. For many applications, there could be non-trivial dependencies among these jobs. Due to the possible physical failures, or simply the distributed nature of the computing environment, a machine may not successfully execute the assigned job on time. In this scenario, a natural goal is to determine a schedule of assigning the given jobs to the computers so that the expected completion time of the task is minimized.. A similar example, also discussed in [22] , arises while managing a large project in an organization. The project may be broken down into small jobs with dependencies among them, i.e., a job may be executed only after the successful completion of another set of jobs. A group of workers are assigned to this project. Due to practical reasons and different skills, a worker may not be able to finish an assigned job on time. To decrease the chance of the potential delay of some key jobs, the project manager could (and would want to) assign several workers to these jobs at the same time. Based on past experiences and the workers' skill levels, the project manager can estimate the successful probability of any particular worker finishing any particular job. The challenge for the manager is to work out a strategy (or schedule) of assigning the workers to the jobs so that the expected completion time of the whole project is as small as possible.. Motivated by the examples above, we study the problem of multiprocessor scheduling under uncertainty, henceforth referred to as SUU. We have a set of m machines, a set of n unit-time jobs, and a directed acyclic graph representing precedence constraints on the order of the execution of the jobs. We are also given, for every job j and machine i, the probability pij of the successful completion of job j when scheduled on machine i in any given particular step. To compensate for this uncertainty, multiple machines can be assigned to one job at the same time. We focus on the problem of computing a schedule to minimize the expected time to complete all the jobs, i.e., the expected makespan. The problem studied in our work was first defined in the recent work by Malewicz [22] , largely motivated by the application of scheduling complex dags in grid computing [9] . Malewicz characterizes the complexity of the problem in terms of the number of the machines and the width of the dependency graph, which is defined as the maximum number of independent jobs. He shows that when the number of machines and the width are both constants, the optimal regimen can be computed in polynomial time using dynamic programming. However, if either parameter is unbounded, the problem is NP-hard. Also, the problem can not be approximated within a factor of 5/4 unless P=NP. Our work extends that of Malewicz by studying the approximability of the problem when neither the width of the dag nor the number of machines is bounded.. The uncertainty of the scheduling problem we study comes from the possible failure by a machine assigned to a job, as modeled by the pij 's. There have been different models of uncertainty in the scheduling literature. Most notable is the model where each task has a duration of random length and may require different amount of resources. For related work, see [7, 6, 14, 30, 16, 11] .. Scheduling in general has a rich history and a vast literature. There are many variants of scheduling problems, depending on various factors. For example: Are the machines related? Is the execution preemptive? Are there precedence constraints on the execution of the jobs? Are there release dates associated with the jobs? What is the objective function: makespan, weighted completion time, weighted flow time, etc.? See [13] for a survey and [12, 20, 29, 19, 4, 17] for representative work.. Two particular variants of scheduling closely related to our work is job shop scheduling [28] and the scheduling of unrelated machines under precendence constraints. In the job shop scheduling problem, we are given m machines and n jobs, each job consisting of a sequence of operations. Each operation must be processed on a specified machine. A job is executed by processing its operations according to the associated sequence. At most one job can be scheduled on any machine at any time. The goal of the job shop scheduling problem is to find a schedule of the jobs on the machines that minimizes the maximum completion time. This problem is strongly NP-hard and widely studied [10, 18, 1] . Also extensively studied is the problem of preemptively scheduling jobs with precedence constraints on unrelated parallel machines [19, 28, 17] , the processing time of a job depends on the machine to which it is assigned. One common characteristic of this problem and SUU is that in each problem, the capability of a machine i to complete a job j may vary with both i and j. However, while the unrelated parallel machines problem models this nonuniformity using deterministic processing times that vary with i and j, in SUU the jobs are all unit-size but may fail to complete with probabilities that vary with i and j. Owing to the uncertainty in the completion of jobs, SUU schedules appear to be more difficult to specify and analyze. One other technical difference is that in SUU we allow multiple machines to be assigned to the same job at the same time, for the purpose of raising the probability of successfully completing the job. The unrelated parallel machines problem is typically solved by a reduction to instances of the job shop scheduling problem. Some of our SUU algorithms also include similar reductions.

B I O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Heuristics for Robust Resource Allocation of Satellite Weather Data Processing on a Heterogeneous Parallel System Abstract-This work considers the satellite data processing portion of a space-based weather monitoring system. It uses a heterogeneous distributed processing platform. There is uncertainty in the arrival time of new data sets to be processed, and resource allocation must be robust with respect to this uncertainty. The tasks to be executed by the platform are classified into two broad categories: high priority (e.g., telemetry, tracking, and control), and revenue generating (e.g., data processing and data research). In this environment, the resource allocation of the high-priority tasks must be done before the resource allocation of the revenue generating tasks. A two-part allocation scheme is presented in this research. The goal of first part is to find a resource allocation that minimizes makespan of the high-priority tasks. The robustness for the first part of the mapping is defined as the difference between this time and the expected arrival of the next data set. For the second part, the robustness of the mapping is the difference between the expected arrival time and the time at which the revenue earned is equal to the operating cost. Thus, the heuristics for the second part find a mapping that minimizes the time for the revenue (gained by completing revenue generating tasks) to be equal to the cost. Different resource allocation heuristics are designed and evaluated using simulations, and their performance is compared to a mathematical bound. T HE space-based weather monitoring system considered in this work consists of two major components: the satellite with its data collection sensors, and the data processing system (see Fig. 1 ). The data processing system is responsible for requesting (from the satellite) the data that must be collected, and scheduling the tasks that need to be executed. The tasks to be executed on the data set can be classified into two broad categories: 1) high-priority tasks for positioning and 2) revenue generating data processing and data research tasks [26] . Imaging across a variety of spectral bands is collected by the satellite, and is transmitted back to the data processing system.. The weather imaging data sent down by the satellite (the data set) must be processed before it is of any value to the users. A new weather data set is received periodically, and the current data set must be processed before the next data set arrives. A similar requirement is used in the satellite image processing in [19] . Currently, systems used for processing the data sets, at a typical site, are divided into three distinct sets of processing elements (dedicated to satellite positioning, data processing, and data research). As a result of this partitioning of a given data set, one system may be overloaded while another is underloaded.. The goal of this research is to develop a resource manager, so that a smaller heterogeneous global bank of shared common resources can replace the three sets of processing elements and operate efficiently. The global bank will reduce the cost of the system, while being financially viable. This platform is a heterogeneous computing system (HCS), because machines are typically added or replaced over time with new machines. Therefore, tasks may have different execution times on different machines, and thus have greater affinity to certain machines.. The allocation of tasks to machines is a static mapping problem [1] , because all the tasks that need to be executed are known a priori (before the data set to be processed arrives). However, it has some characteristics of dynamic mapping in that tasks are known a short time in advance, so the resource allocation must be performed in a short amount of time, e.g., five minutes.. In an HCS, the assignment of tasks to machines to obtain a near optimal resource allocation is an important research problem. The act of assigning (matching) each task to a machine and ordering (scheduling) the execution of the tasks in each machine is known as mapping, resource allocation, or resource management. The mapping problem has been shown, in general, to be NP-complete (e.g., [9] , [14] , [17] ). Hence, the development of heuristic techniques to find near optimal solutions is an active area of research (e.g., [1] , [13] , [15] , [31] ).. The performance of computing systems is susceptible to degradation due to unpredictable circumstances. Therefore, it is necessary to allocate resources to tasks so that the robustness of the system in response to unpredictable events is maximized [4] . For this study, the times between the arrival of data sets can vary, i.e., it is uncertain. The next data set may arrive earlier than expected. Because the current data set is discarded when the next data set arrives, it is important for the resource allocation to be robust against an early arrival of the next data set. Thus, it is necessary to develop a performance metric to evaluate the robustness of a mapping produced by the heuristics.. In this research, our contributions are:. 1. the derivation of a formal mathematical model for a proposed real-world weather image processing system; 2. the definition of a new robustness metric for making resource allocation decisions; 3. the development of a two-part approach for scheduling high-priority tasks (HPTs) and revenue generating tasks (RGTs) in an oversubscribed system where each part has a different robustness criterion; 4. the design and simulation-based evaluation of new problem-domain-specific heuristics for developing resource allocations; and 5. the derivation of a bound on the performance of a resource allocation for the proposed HCS. The remainder of this paper is organized as follows: A detailed overview of the system model is given in Section 2. Section 3 discusses the related work. The heuristics for HPT and RGT are explained in Sections 4 and 5, respectively. Section 6 describes the simulation setup used for the experiments, and the bounds on the performance of a resource allocation are presented in Section 7. The experimental results are discussed in Section 8. In Section 9, the conclusions are presented. For the second part of the problem, each machine's ready time is its finishing time found by the best heuristic used for mapping HPTs. Several heuristics were implemented for RGTs. Of these, MET, MCT, KPB, and MinCT-MinCT are the same as used in Section 4 (see Appendix A in supplemental material), except with descending revenue being used to determine the order in which tasks are assigned for onephase greedy heuristics. The MaxW-MaxW, MaxWPTUMaxWPTU, and MaxWPTU-MinCT heuristics are greedy heuristics similar in structure to the MinCT-MinCT heuristic but using different objective functions. A Genitor-based heuristic also was implemented for comparison only, due to its long execution time. The environment considered for this study is a computer system that processes weather data. Additionally, this research also could apply to different sensor data processing, e.g., battleship radar and homeland surveillance security. The satellite data system has two parts that need to be robust against uncertainty. The first part is the execution of highpriority tasks to ensure the operation of the satellite, and the second part ensures financial viability of the system. The uncertainty considered for this system is the variability in the time interval between the arrival of successive data sets.. Several heuristics and their variations were implemented for each of the parts. For all the evaluated scenarios, for HPT, the best heuristic was MinCT-MinCT, and for RGTs MaxWPTU-MaxWPTU was either the best or had comparable performance.. An example of possible extensions could be: tasks execution times could vary based on the input data sets, possible machine failures, representing the entries in an ETC as a probability mass function, use of different revenue models, computing platforms with different heterogeneities, variation in the number of tasks that need to be executed, and applications to other important sensor problems. Another extension to this work is to incorporate good will or fairness when assigning resources. This fairness could become part of the robustness metric or a Quality-of-Service constraint. Additionally, the same model could be used to simulate a multicore or multithreaded environment. However, to do this accurately, we would need to incorporate memory hierarchy and sharing. Another possible direction for future work would be the design of fast heuristics that can combine the makespan measure of HPTs and the revenue of RGTs into the creation of composite HPT and RGT resource allocations, so that an allocation for the HPTs that is "close" to the best makespan can be considered if it gives "much more" revenue for the RGTs; defining "close" and "much more" may need to be user-specified. Keith Knapp received the BS degree in electrical and computer engineering from Colorado State University. He is currently working for GLI in Golden, Colorado. Different types of heterogeneity (consistencies [2] ) are defined in Appendix C, which can be found on the Computer Society Digital Library at http://doi.ieeecomputersociety. org/10.1109/TPDS.2011.44. The results from HPTs are given in Appendix D. The results of RGT for the inconsistent matrices are shown in Fig. 6 and discussed below (additional RGT results are in Appendix E of the supplemental material). The MaxWPTU-MaxWPTU was the best performing heuristic. This heuristic uses the main characteristics of the MaxW-MaxW and improves upon it by calculating the worth per time unit for each specific task-machine pair. Note that both MaxWPTU-MaxWPTU and upper bound for RGTs use a revenue over execution-time-based function. The equations for MRP T U i (4) and wptu ij (8) are similar for the MET machine of task i. The difference comes when we incorporate the likelihood of completing the task before expected in (8) . This inclusion allows the heuristic to incorporate information about the current state of the machine that is not present in (4). The result of the MaxWPTU-MaxWPTU was over 98.7 percent of the robustness value generated by the Genitor heuristic even though Genitor is seeded with the best of the heuristics for each trial and has a runtime of 60 minutes.. We believe that the solution found by MaxWPTUMaxWPTU is near optimal; because, the Genitor heuristic (in general) did not find a significantly better solution and the UB is loose. The UB is loose because, in the low taskhigh machine heterogeneity case, the number of tasks that have a given machine j as its minimum execution time machine is not evenly distributed across machines (as shown in Fig. 7) . As a result, not all tasks execute on their MET machine, as assumed in the upper bound, resulting in a somewhat loose bound.. It was interesting to observe that the MET heuristic did not perform well in environments with low task-high machine inconsistent heterogeneity. In previous studies (e.g., [7] ), MET performed similarly to MCT with inconsistent heterogeneity. However, in this experiment, its performance was significantly inferior to MCT due to the low task-high machine heterogeneity.. One-phase greedy heuristics were significantly faster than the two-phase heuristics. The average execution time of the one-phase heuristics was less than 0.03 s, while the quickest two-phase greedy heuristic had a runtime of 1. There are many definitions of robustness for various environments (e.g., [4] , [5] , [25] , [28] ). Our study applies the robustness concept to an environment that is required to be profitable, where revenue is earned by executing tasks.. The study in [5] discusses a job shop environment that is susceptible to sudden changes that render an existing schedule infeasible. In our study, the system model and performance metrics are quite different.. In [6] , the authors describe an oversubscribed system for scheduling communications for a satellite range scheduling problem. Each task has a priority and a deadline associated with it, and not all tasks can be scheduled before their deadlines. The goal is to minimize the number of tasks that cannot complete before their deadline. This problem is similar to our study, because we schedule based on task priority, i.e., assign HPTs first, and also the money generated by RGTs can be considered as a priority. However, in our study, the profitability of the system is robust against uncertainties in the arrival time of the next data set. This does not necessarily correlate to minimizing the number of tasks that cannot complete before the deadline.. The work in [21] also discusses an oversubscribed environment of tasks with multiple priorities, but emphasizes that task priorities must be rigidly respected, i.e., a higher priority task can never be traded for a set of lowpriority tasks. Our study is similar because it is divided into a two-part scheduling problem, where the HPTs must be completed before the RGTs can be considered. However, for RGTs there is a trade-off. Another significant difference between our work and the work in [21] is that we study how the system performs when there is uncertainty in the arrival time of the next data set.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Towards a cross-platform microbenchmark suite for evaluating hardware performance counter data As useful as performance counters are, the meaning of reported aggregate event counts is sometimes questionable. Questions arise due to unanticipated processor behavior, overhead associated with the interface, the granularity of the monitored code, hardware errors, and lack of standards w.r.t. event definitions. To explore these issues, we are conducting a sequence of studies using carefully-crafted microbenchmarks that permit the accurate prediction of event counts and investigation of the differences between hardware-reported and predicted event counts. This paper presents the methodology employed, some of the microbenchmarks developed, and some of the information uncovered to date. The information provided by this work allows application developers to better understand the data provided by hardware performance counters and better utilize it to tune application performance. A goal of this research is to develop a cross-platform microbenchmark suite that can be used by application developers for these purposes. Some of the microbenchmarks in this suite are discussed in the paper. Performance monitoring hardware consists of a set of registers that record information about different processor events that occur during application execution. This information is in the form of aggregate event counts or sampled event traces. For example, when used in the former manner, the registers accumulate counts of the occurrences of events triggered by memory hierarchy activity, such as level-one data-cache misses or translationlookaside buffer misses, or functional unit activity, such as the execution of floating-point or branch instructions. Processors with hardware performance counters include the DEC Alpha, IBM Power, Intel Pentium, and Sun UltraSPARC series [5] .. Different manufacturers provide software that interfaces with hardware performance counters on their processors. Higher-level user interfaces, such as the Performance Application Programming Interface (PAPI) [2] , the Hardware Performance Monitor (HPM) Tool Kit [3] , and the Hardware Activity Reporter (HAR) [7] facilitate access to performance counters. For example, PAPI provides a cross-platform user interface to access performance counters on various processors. It can be used to monitor a set of 104 different events. Note, however, that no platform supports all 104 PAPI events. For example, the Pentium II and Pentium III processors support 49 of these events, while the Power4 supports 22.. As useful as performance counters are, the meaning of reported aggregate event counts is sometimes questionable. Questions arise due to unanticipated processor behavior, overhead associated with the interface, the granularity of the monitored code, hardware errors, and lack of standards w.r.t. event definitions. To explore these issues, we are conducting a sequence of studies using carefully-crafted microbenchmarks that permit the accurate prediction of event counts and investigation of the differences between hardware-reported and predicted event counts. This paper presents the methodology employed, some of the microbenchmarks developed, and some of the information uncovered to date. The information provided by this work allows application developers to better understand the data provided by hardware performance counters and better utilize it to tune application performance. A goal of this research is to develop a Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. cross-platform microbenchmark suite that can be used by application developers for these purposes. Some of the microbenchmarks in this suite are discussed in the paper. As illustrated by the events discussed in this paper, the majority of hardware-reported event counts agree with predicted counts. Earlier work [5, 6, 8] , which presented work in progress, indicates differences between hardware-reported and predicted event counts that were not yet understood. Many of these differences were later understood as we refined our methodology.. Results for instruction cache misses and floating-point instructions are also available [1] , while other events are currently under study.. As new processors are introduced into the marketplace, the representativeness of their event counts needs to be evaluated. Developing new architecture-specific microbenchmarks is too expensive. To minimize this work, architecture-independent microbenchmarks, when applicable, are essential. The goal of this research is to develop a suite of microbenchmarks that can be ported easily to any platform. For events for which the microbenchmark must be tailored to the architecture, rather than just ported or parameterized, the goal is to port the microbenchmark design, if not the implementation. The microbenchmarks presented in this paper are a first step towards this goal. Such a suite would facilitate the evaluation of performance counters and their use by application programmers to tune their codes.. Some microbenchmarks, for example the instruction cache miss microbenchmark, cannot be ported across platforms because, for the same event, the event definitions differ. This research shows that event definitions need to be standardized across platforms to avoid misunderstanding and misuse of data obtained from performance counters.. For future work, the porting of the cross-platform microbenchmarks to the platforms of interest will be completed. In addition, the events associated with the Cray X1 and R16K platforms will be evaluated using the cross-platform microbenchmarks-this will test the portability of these microbenchmarks. The methodology used to study aggregate event counts, which was presented in [5, 6, 8] , has been refined. Now it prescribes microbenchmarks that are parameterized and have built-in scalability, and it includes a feedback loop. In this context, parameterization and scalability are meant to ease experimentation across platforms and a range of increasingly larger event counts. These modifications to the methodology enhance microbenchmark design and implementation.. The methodology, applied to a particular event, includes the following steps: 1. design and implement, when possible, a parameterized, scalable microbenchmark that permits event count predictions; 2. predict event counts for a range of increasingly larger event counts using tools and mathematical models developed with knowledge of the architecture, operating system, and compiler; 3. collect hardware-reported event counts using PAPI or another API; 4. compare predicted and reported event counts; and 5. analyze experimental results to identify and quantify differences between predicted and reported counts; if necessary repeat all five steps to reflect the knowledge gained from the analysis.. Microbenchmarks are written in C and use PAPI to collect hardware-reported event counts, and are designed to allow validation of hardware event definitions and prediction of the number of event occurrences. These objectives are meant to ensure that hardware performance counters count what application programmers expect them to count and to explain why sometimes the reported counts are not what are expected. In this context, a microbenchmark is designed according to the following criteria: 1. functionality, in terms of stressing that part of the microarchitecture or memory hierarchy that triggers the target event, 2. compactness, in terms of static size, 3. efficiency, in terms of execution time, 4. simplicity, in terms of the amount of potential concurrency that can be exploited by the microarchitecture and memory subsystem, and 5. portability among microprocessors.. When designing a microbenchmark, the similarities across platforms are exploited when possible. In the best case, the highlevel language microbenchmark is simply ported to the various platforms. In the worst case, the design is portable but the implementation of the design changes with the platform.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


On thinging things and serving services: technological mediation and inseparable goods Abstract In our high-tech society, the design process involves profound questions about the effects of the resulting goods, and the responsibilities of designers. In the philosophy of technology, effects of ''things'' on user experience and behaviour have been discussed in terms of the concept of technological mediation. Meanwhile, what we create has moved more and more towards services (processes) rather than products (things), in particular in the context of information services. The question is raised to what extent the concept of technological mediation is adequate to understand effects and responsibilities in information services as well. Therefore, this paper discusses differences between product aspects and service aspects of our creations, and evaluates the applicability of the concept of technological mediation to information services. Specific features of a notion of technological mediation for information services are highlighted, in particular with respect to the different relation between production and consumption. Finally, the paper focuses on the ethical consequences of service impact, and recommendations for service providers, especially in terms of the possibilities for second-order mediation by inviting users to change service properties. In this article, I have outlined how the framework of technological mediation, originating from a phenomenology of things, can be used in the context of information services. Properties that distinguish services from products, although far from providing a complete classification, do point to important differences that impact the application of the framework. In particular, I have pointed to the following issues:. 1. In information services, the provider can change the properties of the service on the fly. This makes personalisation possible, but it also paves the way for possible privacy violations. Because the service provider has more knowledge and more opportunity for action in case of problematic effects of the service, there is an increased responsibility. However, there are General service impact Neutrality Precaution more options for designed mediation than in a product context, which are also potentially less problematic. 2. In information services, the user can easily adjust the service to her own needs. This also brings increased responsibility, as the user is now a co-designer of the service that mediates her experience and existence. When the provider supports personal values by enabling personalisation of the service, the user needs to adjust the service to these values. The provider can design second-order mediation to encourage the user to do this. 3. In information services, the user can also influence the mediating effect of the service on other users. In social networking, this is even the key design feature. The mediating effect of such influence again leads to increased responsibility, which may or may not be emphasised in the design.. Earlier, I announced that I would discuss possible generalisation from information services to other services. First of all, the issues outlined above do not apply to intangible products, such as product software, as the relation between production and consumption is no different in intangible products than in tangible ones. In principle, changing intangible products would be easier than changing tangible products, but the producer is not in the position to do this. Even for ''pure'' software products, there is a single moment of interaction when ownership is transferred. Only when such products are combined with services (updates, user feedback, etc.) do the considerations outlined here apply. Such combinations are indeed easier than for tangible products, as intangible products already consist of information used in an information system. Similarly, as modern cars already contain quite some ICT, it is relatively easy to extend them with services (in the so-called Internet of Things). Now consider a service that is both tangible and separable, for example a shoe repair or dry cleaning service. In this case, immediate consumption is not an issue, and only the moment of delivery needs to be simultaneous for producer and consumer. In this case the influence of other users, as outlined above, seems to be rather minimal. Still, the provider does gain some knowledge on how users use the service, and there is also some possibility for personalisation, as there is contact between producer and consumer beyond the single moment of transfer of ownership in the product case. Here, the intangible, information-based nature of the services we discussed merely makes it easier to tweak and to personalise, because the process can easily be automated.. Thus, the discussion of mediation by services is not limited to information services, although those have been the main focus in this research. One could argue that at least part of the discussion applies in a broad sense to what has been called ''reconfigurable technology'' (Dechesne et al. 2011) , as the increased responsibility stems from increased possibilities induced by being able to change the design on the fly, both for producers and for consumers. In this context, the presented framework can assist in co-creation methods for service design, and enable ''actual experiences of users as drivers for service transformations'' (Henze et al. 2012) .. From the perspective of product-service systems, where there is a clear distinction between products and services, the above provides a framework to apply technological mediation to the service aspects of the product-service system, rather than the product only. From the perspective of service-dominant logic, where products are one particular form of delivering service, it provides a generalisation of the theory of technological mediation to the larger class. In this interpretation, the original approach as advanced by Verbeek is a special case of the more general framework. Precisely because products are ''frozen'' or indirect services, the entanglement with producer and other users that appears in information services disappears when it is merely ''thinging things'' that appear in the intentional relation. From both points of view, it becomes possible to extend the application of the theory of technological mediation beyond the realm of the tangible, separable, and/ or transferable. In one of his famous (and notorious) quotes, Heidegger said that ''the thing things'' (Heidegger 1971, 174) . Philosophers of technology have followed up on this statement as a credo for focusing on the effect of concrete artefacts rather than an abstract notion of technology (Verbeek 2005) , and the role of the designer in such effects. Especially in the domain of what is called postphenomenology, this has led to studies on the mediating role of things in our experience and existence (Ihde 1990) .. However, although the empirical turn towards ''the things themselves'' resolved the bias of the ''old'' philosophy of technology towards abstract conceptions of technology, it seems to carry another bias. Especially from the perspective of economics, not everything that is produced can be classified as a ''thing'', ''artefact'' or ''product''. In particular this concerns the class of services, which we will define more precisely later. As an example, consider Facebook and similar social networking services. Can the influence of such services on the relation between people and their world be described and discussed with the same concepts used to describe the mediating effect of binoculars or speed humps? In this paper, I will argue that the answer should be no.. Postphenomenology does discuss services, but the perspective there seems to be that services are possible addons to products. This ''maintenance'' perspective shows up when Verbeek discusses how to make products more sustainable by adding services (Verbeek 2006) . However, services are never discussed as mediating entities themselves. The reliance of postphenomenology on ''thinging things'' thus fails to cover a range of designed phenomena, which I will-hesitantly because of the Heideggarian terminology, but also intentionally to point to the importance of his phrase-call ''serving services''. Like thinging things, the phrase draws attention to what the design does to the user, or society. Moreover, the use of the verb ''to serve'' also points to the fact that a service (or a thing, for that matter) always serves some interests or values more than others.

O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Large-Scale Live Active Learning: Training Object Detectors with Crawled Data and Crowds Abstract Active learning and crowdsourcing are promising ways to efficiently build up training sets for object recognition, but thus far techniques are tested in artificially controlled settings. Typically the vision researcher has already determined the dataset's scope, the labels "actively" obtained are in fact already known, and/or the crowd-sourced collection process is iteratively fine-tuned. We present an approach for live learning of object detectors, in which the system autonomously refines its models by actively requesting crowd-sourced annotations on images crawled from the Web. To address the technical issues such a large-scale system entails, we introduce a novel part-based detector amenable to linear classifiers, and show how to identify its most uncertain instances in sub-linear time with a hashing-based solution. We demonstrate the approach with experiments of unprecedented scale and autonomy, and show it successfully improves the state-of-the-art for the most challenging objects in the PASCAL VOC benchmark. In addition, we show our detector competes well with popular nonlinear classifiers that are much more expensive to train. Object detection is a fundamental vision problem: given an image, which object categories are present, and where? Ongoing research is devoted to developing novel representations and classification algorithms in support of this task, and challenge datasets encourage further progress (Dalal and Triggs 2005; Felzenszwalb et al. 2009; Vedaldi et al. 2009; Lampert et al. 2008; Everingham et al. 2010 ). Today's bestperforming detection methods employ discriminative learning together with window-based search, and assume that a large number of cleanly labeled training examples are available. For example, thousands of bounding box annotations per category is standard.. Given the substantial human effort required to gather good training sets-as well as the expectation that more data is almost always advantageous-researchers have begun to explore novel ways to collect labeled data. Both active learning and crowd-sourced labeling are promising ways to efficiently build up training sets for object recognition. Active learning work shows how to minimize human effort by focusing label requests on those that appear most informative to the classifier (Kapoor et al. 2007; Qi et al. 2008; Joshi et al. 2009; Siddiquie and Gupta 2010) , whereas crowd-sourcing work explores how to package annotation tasks such that they can be dispersed effectively online (von Ahn and Dabbish 2004; Russell et al. 2007; Sorokin and Forsyth 2008; Welinder and Perona 2010; Deng et al. 2009 ). The interesting questions raised in these areas-such as dealing with noisy labels, measuring reliability, mixing strong and weak annotations-make it clear that data collection is no longer a mundane necessity, but a thriving research area in itself.. However, while ostensibly intended to distance algorithm developers from the data collection process, in practice exist-ing techniques are tested in artificially controlled settings. Specifically, we see four limiting factors. First, previous work uses "sandbox" datasets, where the vision researcher has already determined the dataset's source and scope, meaning there is a fixed (and possibly biased) set of images that will even be considered for labeling. In fact, active learning methods have only been tested on sandbox data where the true labels are really known, and merely temporarily withheld from the selection algorithm. These common simulations likely inflate the performance of both active and passive learners, since anything chosen for labeling is relevant. Second, nearly all work targets the active image classification problem-not detection-and so images in the unlabeled pool are artificially assumed to contain only one prominent object. Third, most crowd-sourced collection processes require iterative fine-tuning by the algorithm designer (e.g., revising task requirements, pruning responses, barring unreliable Mechanical Turkers) before the data is in usable form. Fourth, the computational complexity of the active selection process is generally ignored, yet it is critical when running a live system to avoid keeping the human annotators idle. Thus, it is unknown to what extent current approaches could translate to real settings.. Our goal is to take crowd-sourced active annotation out of the "sandbox". We present an approach for live learning of object detectors, in which the system directly interacts with human annotators online and iteratively poses annotation requests to refine its models. Rather than fill the data pool with some canned dataset, the system itself gathers possibly relevant images via keyword search (we use Flickr). It repeatedly surveys the data to identify unlabeled sub-windows that are most uncertain according to the current model, and generates tasks on an online crowd-sourcing service (Mechanical Turk) to get the corresponding bounding box annotations. After an annotation budget is spent, we evaluate the resulting detectors both on benchmark data, as well as a novel test set from Flickr. Notably, throughout the procedure we do not intervene with what goes into the system's data pool, nor the annotation quality from the hundreds of online annotators.. To make the above a reality requires handling some important technical issues. Active selection for window-based detection is particularly challenging since the object extents (bounding boxes) are unknown in the unlabeled examples; naively one would need to evaluate all possible windows within the image in order to choose the most uncertain one. This very quickly leads to a prohibitively large unlabeled pool to evaluate exhaustively. Thus, we introduce a novel part-based detector amenable to linear classifiers, and show how to identify its most uncertain instances in sub-linear time with a hashing-based solution.. We show that our detector strikes a good balance between speed and accuracy, with results competitive with and even exceeding the state-of-the-art on the PASCAL VOC. Most importantly, we show successful live learning in an uncontrolled setting. The system learns accurate detectors with much less human effort than strong baselines that rely on human-verified keyword search results. Our contributions are (i) a novel efficient part-based linear detector that provides excellent performance, (ii) a jumping window and hashing scheme suitable for the proposed detector that retrieves relevant instances among millions of candidates, and (iii) the first active learning results for which both data and annotations are automatically obtained, with minimal involvement from vision experts. Tying it all together, we demonstrated an effective end-to-end system on two challenging datasets.. Looking forward, there are a number of challenging issues in active learning that will influence how successful future live learners can be. As in any pool-based active learning approach, the system's model of what looks useful is inherently tied to the particular classifier it employs. An interesting challenge for future work is to identify images for labeling that could benefit an array of competing approaches. Furthermore, while our system does well working in a "myopic" mode, where at each cycle of learning the top T most uncertain images are chosen for labeling, a scalable solution for farsighted selection of jointly informative sets of images would be interesting to consider. Similarly, while our pipeline does some standard hard negative mining as new data is added, sub-linear time strategies to find negatives far from the hyperplane across all data might better steepen learning curves.. Finally, while our system focuses on the "exploitation" aspect by leveraging the current classifier to find useful examples, it could be useful to also incorporate an "exploration" aspect that attempts to cover diverse areas of the feature space.. Future work could also investigate applying language models and word sense disambiguation methods to enhance the way the images are crawled using keywords. For example, rather than simply gather up candidate images that have a keyword match, the system could automatically broaden the queries to other nouns in the same synset, or use descriptive phrases to isolate image content most likely aligned with the target visual concept. In terms of the crowdsourcing aspect of this work, we would like to investigate automated methods for adjusting payments offered to workers according to the marketplace dynamics and relative difficulty of the actively selected annotation tasks. There are six main components in our experiments. First, we compare the proposed detector to the most closely related state-of-the-art techniques (Sect. 4.1). Second, we validate our large-scale active selection approach with benchmark data (Sect. 4.2). Third, we deploy our complete live learning system with crawled images, and compare to strong baselines that request labels for the keyword search images in a random sequence (Sect. 4.3) . Fourth, we analyze the types of requests made by the live active learning system, and try to understand their advantage over the passive keyword-search protocol (Sect. 4.4). Fifth, we analyze the live annotation collection results (Sect. 4.5). Finally, we report comparative run-times for our method and prior detectors in order to emphasize how our contributions make live learning scalable (Sect. 4.6).. We use two datasets in our experiments: the PASCAL VOC 2007, and a new Flickr dataset. More details about the datasets are given below. Object detection has received various treatments in the literature; see Everingham et al. (2010) and references therein for an overview. Currently window-based approaches based on gradient features and subwindow parts provide stateof-the-art results using discriminative classifiers. A known limitation, however, is their fairly significant computational expense, due both to the need to search exhaustively through all windows in the image, as well as the classifiers' complexity (e.g., SVMs with nonlinear kernels or latent variables (Vedaldi et al. 2009; Felzenszwalb et al. 2009)) .. Various ways to reduce detection time have been explored, including cascades (Vedaldi et al. 2009; Viola and Jones 2001) , branch-and-bound search (Lampert et al. 2008) , or jumping windows (Chum and Zisserman 2007) . To reduce classifier training and testing costs, simpler linear models are appealing. While linear models tend to underperform the state of the art with common representations (e.g., see the experiments reported in (Vedaldi et al. 2009; Boureau et al. 2010) ), recent work in image classification shows very good results when also incorporating sparse coding and feature pooling (Yang et al. 2009; Wang et al. 2010; Boureau et al. 2010) . We propose a part-based object model that exploits a related representation, and show it to be competitive with state-of-the-art detection results. To our knowledge, no previous work considers sparse coding and linear models for object detection.. An alternative way to improve detection time for a partbased detector is to reduce the number of filter convolutions it requires to run on a new image. Multi-task learning can encourage a set of object detectors to share features, so that at detection time fewer local part features need to be extracted . With similar motivation, recent work shows how to use a shared dictionary of part filters to estimate filter responses in terms of sparse matrixvector products (Song et al. 2012; Pirsiavash and Ramanan 2012) ; this greatly reduces the computation time compared to standard part filter convolutions.. While these efforts concentrate on limiting feature extraction time, the system of Dean et al. (2013) (introduced subsequent to our work) also pushes on reducing the standard linear run-time dependency on the number of object categories. In that work, a hashing-based solution replaces convolution dot products with hash-table probes, thereby sampling filter responses in time independent of the size of the filter bank. The approach can run a simplified deformable part model (with no root filter and equally sized parts) for 100K object classes simultaneously on a single machine in just 20 seconds. Our approach also involves hashing, but for the sake of scalable active learning. Using our hyperplane hash functions (Jain et al. 2010; Vijayanarasimhan et al. 2014) , we search for uncertain data in sub-linear time, breaking the linear-time dependence on the size of the unlabeled data pool suffered by existing active learning methods methods.. Active learning has been shown to better focus annotation effort for image recognition tasks (Kapoor et al. 2007; Qi et al. 2008; Joshi et al. 2009 ) and region labeling Siddiquie and Gupta 2010) . However, no previous work uses active learning to train a window-based detector. To do so introduces major scalability issues, which we address with a new linear detector combined with a hashing algorithm we developed (Jain et al. 2010; Vijayanarasimhan et al. 2014 ) for sub-linear time search of the unlabeled pool. Further, all previous work tests active selection only in a sandbox, where the true labels are already known for the data.. Researchers have investigated issues in annotation tools and large-scale database collection for recognition. Keywordbased search is often used for dataset creation, and several recent efforts integrate crowd-sourced labeling (von Ahn and Dabbish 2004; Russell et al. 2007; Deng et al. 2009 ) or online and incremental learning (Li et al. 2007 ). Even with a human in the loop, annotation precision varies when using Web interfaces and crowds, and so some research explores ways to automatically provide quality assurance (Sorokin and Forsyth 2008; Welinder and Perona 2010) . Other work attempts to directly learn object models from noisy keyword search (Fergus et al. 2005; Li et al. 2007; ; however, such methods assume a single prominent object of interest per image, whereas for detection we will have cluttered candidate images that require a bounding box to identify the object of interest.. Overall, previous active learning methods focus on image classification, and/or demonstrate results under controlled settings on prepared datasets of modest scale. Ours is the first complete end-to-end approach for scalable, automatic online learning of object detectors.. This article expands the work we originally published in Vijayanarasimhan and Grauman (2011) . The primary additions are two new results sections analyzing the live annotation consistency, variation among annotators, and our automatic consensus procedure (Sect. 4.5, Figs. 13 and 14) , and analyzing why live active annotation requests have an advantage over existing keyword search data collection strategies, both quantitatively and qualitatively (Sect. 4.4, Table 4, and Figs. 11, 12a, and b) . In addition, we provide examples of the proposed detector's output to portray its strengths and failure modes (Fig. 7) , and we refine the overall text for clarity.

O O B I O O O O O O O O O B I O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Fuzzy SPC filter for a feed-forward control system for a three-phase oil field centrifuge In this work we describe a signal filter for a feed-forward controller based on the application of fuzzy logic combined with statistical process control (SPC). The feed-forward controller is for a three-phase oil field centrifuge. The centrifuge system is used to separate meta-stable three-phase emulsions consisting of oil and water stabilized by solids. These emulsions are considered to be unusable wastes and must be disposed of in an environmentally acceptable manner. The centrifuge is capable of turning these wastes into clean saleable oil, water that can be reused in an operating process or re-injected into oil wells and, solids that can be disposed of in landfills.The feed-forward controller is used for feed disturbance rejection. It works in conjunction with and, is capable of over-riding the actions of, a feedback controller. The measured feed variables for the feed-forward controller each exhibit reasonably large random fluctuations. It is therefore quite important to use a signal filter that truly recognizes the difference between random noise and a "caused" event, in order to prevent overriding a perfectly good correction from the feedback controller. The three-phase centrifuge used in this study is a one-of-a-kind portable system used in oil fields to recover oil and eliminate wastes from tank bottoms. These wastes are not considered hazardous. The centrifuge system is also used in refineries to recover oil and eliminate waste from refinery residue. These wastes are often considered hazardous. The feed to the centrifuge system is quite different in each of these cases. In fact, the feed in the oil field can vary dramatically from field to field as it also does from refinery to refinery. This variable feed requires an adaptable filter for the signals to feed-forward controller.. In addition to the fact that feeds vary from site to site, they can also change dramatically during even a single day of operation at any one site. Feed changes in the past have sometimes been so dramatic that they have actually plugged the centrifuge and shut the system down because operating parameters were not changed quickly enough by the operating feedback control system.. We need the system to respond to true changes and not to noise. The sampled systems are quite noisy and therefore there is noise in the sampled variable. There is also sensor noise. In order to differentiate between true change and noise we implemented an SPC control chart technique. The control charts used in this case were Individual and Moving Range charts. Initial control charts are established each day at the beginning of a run as soon as steady-state operation is established. An average Individual sample is determined from a run of about thirty samples. Control limits are established about the average value. The operator can set these limits for specific feed conditions, or use standard two and three sigma limits. An average Moving Range and upper control limit is also established. These control charts are usually used for just one variable. In our case we must measure three dependent variables, feed flow rate change, feed heater power requirement change, and the change in the feed basic sediment and water (BS&W) content. We must then determine if the combination of changes are noise or real feed property changes. For this purpose we use a fuzzy rule based system to determine a value for the Feed-ChangeMagnitude. This is the value used with the control charts. If the Individual values stray beyond the control limits, the Feed-Change-Magnitude is considered to be significant and the feed-forward control is implemented. If the Moving Range data go beyond the control limits, it usually means a rapid short-term change or that sensor difficulties are coming into play. The Moving Range chart is available to the operator, but currently no automatic control action is implemented based on Moving Range data. Other techniques are available for filtering the input and sensor noise. We feel this one is the best for this situation. It provides us with a technique for withholding a significant process change unless it is actually needed and provides us with a record of the process feed changes. If the changes are slow enough they can be handled with the feedback system entirely. More abrupt changes will require the feed-forward system intervention. We can also determine changes in sensor noise and hopefully determine in advance if we are having sensor problems. The control charts are continually and automatically upgraded during the process operation

O O O O O B I O O O O O O B O O O O O O B I O O O O O O O O O B I O O B I I I O O O O O O O O O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Hardness and Algorithms for Rainbow Connection An edge-colored graph G is rainbow connected if any two vertices are connected by a path whose edges have distinct colors. The rainbow connection of a connected graph G, denoted rc(G), is the smallest number of colors that are needed in order to make G rainbow connected. In the first result of this paper we prove that computing rc(G) is NP-Hard solving an open problem from [6] . In fact, we prove that it is already NP-Complete to decide if rc(G) = 2, and also that it is NP-Complete to decide whether a given edge-colored (with an unbounded number of colors) graph is rainbow connected. On the positive side, we prove that for every ǫ > 0, a connected graph with minimum degree at least ǫn has bounded rainbow connection, where the bound depends only on ǫ, and a corresponding coloring can be constructed in polynomial time. Additional non-trivial upper bounds, as well as open problems and conjectures are also presented.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O