IBM ILOG CPLEX Optimization Studio OPL Language Reference Manual

Total Page:16

File Type:pdf, Size:1020Kb

IBM ILOG CPLEX Optimization Studio OPL Language Reference Manual IBM IBM ILOG CPLEX Optimization Studio OPL Language Reference Manual Version 12 Release 7 Copyright notice Describes general use restrictions and trademarks related to this document and the software described in this document. © Copyright IBM Corp. 1987, 2017 US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Trademarks IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at www.ibm.com/legal/copytrade.shtml. Adobe, the Adobe logo, PostScript, and the PostScript logo are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States, and/or other countries. Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. UNIX is a registered trademark of The Open Group in the United States and other countries. Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. Other company, product, or service names may be trademarks or service marks of others. © Copyright IBM Corporation 1987, 2017. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Figures ............... v Limitations on constraints ........ 59 Formal parameters ............ 59 Tables ............... vii Basic formal parameters ......... 59 Tuples of parameters .......... 61 Filtering in tuples of parameters ...... 62 Language Reference Manual ..... ix Scheduling .............. 63 Introduction ............. 63 Chapter 1. Why an Optimization Piecewise linear and stepwise functions .... 64 Programming Language? ....... 1 Interval variables ........... 66 Unary constraints on interval variables .... 69 Chapter 2. OPL, the modeling language 3 Precedence constraints between interval variables 70 Constraints on groups of interval variables ... 70 Building a model ............. 3 A logical constraint between interval variables: Data types ............... 4 presenceOf ............. 71 Basic data types ............ 4 Expressions on interval variables ...... 72 Data structures ............ 7 Sequencing of interval variables ...... 73 Data sources .............. 15 Cumulative functions .......... 77 Data initialization ........... 15 State functions ............ 81 Spreadsheet Input/Output ........ 24 Notation .............. 84 Data consistency............ 27 Preprocessing of data .......... 30 Pitfall of lazy initialization of data ...... 31 Chapter 3. IBM ILOG Script for OPL .. 87 Decision types ............. 32 Language structure ............ 87 Decision variables ........... 32 Syntax ............... 87 Expressions of decision variables ...... 34 Expressions in IBM ILOG Script ...... 88 Dynamic collection of elements into arrays ... 34 Statements.............. 94 Expressions .............. 36 Built-in values and functions ........ 99 Usage of expressions .......... 36 Numbers .............. 99 Data and decision variable identifiers..... 36 IBM ILOG Script strings......... 106 Integer and float expressions ....... 37 IBM ILOG Script Booleans ........ 113 Aggregate operators .......... 38 IBM ILOG Script arrays ......... 115 Piecewise-linear functions ........ 39 Objects .............. 120 Discontinuous piecewise-linear functions ... 40 Dates ............... 122 Set expressions ............ 43 The null value ............ 126 Boolean expressions .......... 45 The undefined value .......... 126 Constraints .............. 46 IBM ILOG Script functions ........ 127 Introduction ............. 46 Miscellaneous functions ......... 128 Using constraints ........... 46 Constraint labels............ 48 Index ............... 131 Types of constraints .......... 53 © Copyright IBM Corp. 1987, 2017 iii iv OPL Language Reference Manual Figures 1. A Piecewise-linear function. ....... 39 3. Discontinuous costs .......... 43 2. The discontinuous piecewise-linear function 4. Labeled assert............ 51 sign() .............. 41 © Copyright IBM Corp. 1987, 2017 v vi OPL Language Reference Manual Tables 1. Escape sequences inside literal strings .... 5 23. Escape sequences in strings ....... 106 2. Operations allowed on sets ....... 12 24. Examples of string literals using escape 3. Initializing sets in the model file ..... 22 sequences ............. 107 4. A discontinuous cost function ...... 42 25. String property ........... 108 5. Functions over sets ......... 44 26. String methods ........... 108 6. Reference syntax of script variables .... 89 27. String functions ........... 110 7. Property access syntax ......... 90 28. String operators ........... 112 8. Assignment operator syntax ....... 90 29. Boolean method........... 114 9. Syntactic shorthand .......... 91 30. Logical operators .......... 114 10. Function call syntax.......... 91 31. Array constructor .......... 116 11. Special keyword syntax ........ 92 32. Array properties .......... 117 12. Special operator syntax ........ 92 33. Array methods ........... 118 13. Other operator syntax ......... 94 34. Object constructor .......... 121 14. Conditional statement syntax ...... 95 35. User-defined constructors ....... 121 15. Loop syntax ............ 95 36. Built-in method ........... 121 16. Declaration syntax for script variables.... 97 37. Date constructor .......... 122 17. Function definition syntax ....... 98 38. Date methods ........... 124 18. Default value syntax ......... 99 39. Date functions ........... 125 19. Number method .......... 102 40. Methods of null........... 126 20. Numeric functions .......... 102 41. Methods of undefined ........ 127 21. Numeric constants .......... 103 42. Function methods .......... 127 22. Numeric operators .......... 104 43. Miscellaneous functions ........ 128 © Copyright IBM Corp. 1987, 2017 vii viii OPL Language Reference Manual Language Reference Manual This manual provides reference information about IBM® ILOG® Optimization Programming Language (OPL), the modeling language used in CPLEX® Studio. For details of prerequisites, naming conventions, and other general information, see How to use the documentation in the Starting Kit. © Copyright IBM Corp. 1987, 2017 ix x OPL Language Reference Manual Chapter 1. Why an Optimization Programming Language? OPL is a modeling language for combinatorial optimization that aims at simplifying the solving of optimization problems. Linear programming, integer programming, and combinatorial optimization problems arise in a variety of application areas, which include planning, scheduling, sequencing, resource allocation, design, and configuration. In this context, OPL is a modeling language for combinatorial optimization that aims at simplifying the solving of these optimization problems. As such, it provides support in the form of computer equivalents for modeling linear, quadratic, and integer programs, and provides access to state-of-the-art algorithms for linear programming, mathematical integer programming, and quadratic programming. Within the IBM ILOG OPL product, OPL as a modeling language has been redesigned to better accommodate IBM ILOG Script, its associated script language. © Copyright IBM Corp. 1987, 2017 1 2 OPL Language Reference Manual Chapter 2. OPL, the modeling language Presents the modeling language of IBM ILOG OPL, namely: the overall structure of OPL models; the basic modeling concepts; how data can be initialized internally as it is declared or externally in a .dat file; how to connect to, read from, and write to databases and spreadsheets; expressions and relations; constraints; and formal parameters. Building a model Describes the primary elements of the OPL language and how they are used to build an optimization model. The basic building blocks of OPL are integers, floating-point numbers, identifiers, strings, and the keywords of the language. Identifiers in OPL start with a letter or the underscore character ( _ ) and can contain only letters, digits, and the underscore character. Note that letters in OPL are case-sensitive. Integers are sequences of digits, possibly prefixed by a minus sign. Floats can be described in decimal notation (3.4 or -2.5) or in scientific notation (3.5e-3 or -3.4e10). The OPL reserved words are listed in OPL keywords. Comments in OPL are written in between /* and */ as in: /* This is a multiline comment */ The characters // also start a comment that terminates at the end of the line on which they occur as in: dvar int cost in 0..maxCost; // decision variable An OPL model consists of: v a sequence of declarations v optional preprocessing instructions v the model/problem definition v optional postprocessing instructions v optional flow control (main block) Details about these elements are given in the chapters that follow. A simple model (volsay.mod) A typical model is shown here. dvar float+ Gas; dvar float+ Chloride; maximize 40 * Gas + 50 * Chloride; subject to { ctMaxTotal: Gas + Chloride <= 50; © Copyright IBM Corp. 1987, 2017 3 ctMaxTotal2: 3 * Gas + 4 * Chloride <= 180; ctMaxChloride: Chloride <= 40; } In this example, there is only the declarative initial part and the model definition. There
Recommended publications
  • Automatic Detection of Uninitialized Variables
    Automatic Detection of Uninitialized Variables Thi Viet Nga Nguyen, Fran¸cois Irigoin, Corinne Ancourt, and Fabien Coelho Ecole des Mines de Paris, 77305 Fontainebleau, France {nguyen,irigoin,ancourt,coelho}@cri.ensmp.fr Abstract. One of the most common programming errors is the use of a variable before its definition. This undefined value may produce incorrect results, memory violations, unpredictable behaviors and program failure. To detect this kind of error, two approaches can be used: compile-time analysis and run-time checking. However, compile-time analysis is far from perfect because of complicated data and control flows as well as arrays with non-linear, indirection subscripts, etc. On the other hand, dynamic checking, although supported by hardware and compiler tech- niques, is costly due to heavy code instrumentation while information available at compile-time is not taken into account. This paper presents a combination of an efficient compile-time analysis and a source code instrumentation for run-time checking. All kinds of variables are checked by PIPS, a Fortran research compiler for program analyses, transformation, parallelization and verification. Uninitialized array elements are detected by using imported array region, an efficient inter-procedural array data flow analysis. If exact array regions cannot be computed and compile-time information is not sufficient, array elements are initialized to a special value and their utilization is accompanied by a value test to assert the legality of the access. In comparison to the dynamic instrumentation, our method greatly reduces the number of variables to be initialized and to be checked. Code instrumentation is only needed for some array sections, not for the whole array.
    [Show full text]
  • UNIX Commands
    UNIX commands ls list the contents of a directory ls -l list the content of a directory with more details mkdir <directory> create the directory <directory> cd <directory> change to the directory <directory> cd .. move back one directory cp <file1> <file2> copy the file <file1> into <file2> mv <file1> <file2> move the file <file1> to <file2> rm <file> remove the file <file> rmdir <directory> delete the directory <directory> man <command> display the manual page for <command> module load netcdf load the netcdf commands to use module load ferret load ferret module load name load the module “name” to use its commands vi <file> read the content of the file <file> vimdiff <file1> <file2> show the differences between files <file1> and <file2> pwd show current directory tar –czvf file.tar.gz file compress one or multiple files into file.tar.gz tar –xzvf file.tar.gz extract the compressed file file.tar.gz ./name execute the executable called name qsub scriptname submits a script to the queuing system qdel # cancel the submitted job number # from the queue qstat show queued jobs qstat –u zName show only your queued jobs Inside vi ESC, then :q! Quit without saving ESC, then :wq Quit with saving ESC, then i Get in insert mode to edit text ESC, then /word Search content for word ESC, then :% Go to end of document ESC, then :0 Go to beginning of document ESC, then :set nu Add line numbers ESC, then :# Go to line number # N.B.: If inside vimdiff, you have 2 files opened, so you need to quit vi twice.
    [Show full text]
  • LATEX for Beginners
    LATEX for Beginners Workbook Edition 5, March 2014 Document Reference: 3722-2014 Preface This is an absolute beginners guide to writing documents in LATEX using TeXworks. It assumes no prior knowledge of LATEX, or any other computing language. This workbook is designed to be used at the `LATEX for Beginners' student iSkills seminar, and also for self-paced study. Its aim is to introduce an absolute beginner to LATEX and teach the basic commands, so that they can create a simple document and find out whether LATEX will be useful to them. If you require this document in an alternative format, such as large print, please email [email protected]. Copyright c IS 2014 Permission is granted to any individual or institution to use, copy or redis- tribute this document whole or in part, so long as it is not sold for profit and provided that the above copyright notice and this permission notice appear in all copies. Where any part of this document is included in another document, due ac- knowledgement is required. i ii Contents 1 Introduction 1 1.1 What is LATEX?..........................1 1.2 Before You Start . .2 2 Document Structure 3 2.1 Essentials . .3 2.2 Troubleshooting . .5 2.3 Creating a Title . .5 2.4 Sections . .6 2.5 Labelling . .7 2.6 Table of Contents . .8 3 Typesetting Text 11 3.1 Font Effects . 11 3.2 Coloured Text . 11 3.3 Font Sizes . 12 3.4 Lists . 13 3.5 Comments & Spacing . 14 3.6 Special Characters . 15 4 Tables 17 4.1 Practical .
    [Show full text]
  • Why Is C. Diff So Hard to Culture and Kill?
    Why is C. diff so hard to culture and kill? Clostridium difficile, commonly referred to as C. diff, is the #1 nosocomial infection in hospitals (it actually kicked staph infections out of the top spot). At Assurance, we test for this organism as part of our Gastrointestinal (GI) panel. C. diff is a gram-positive anaerobe, meaning it does not like oxygen. Its defensive mechanism is sporulation – where it essentially surrounds itself with a tough outer layer of keratin and can live in water, soil, etc. for over a decade. For reference, anthrax is another organism that sporulates. Once C. diff sporulates, it is very hard to kill and in fact, bleach is one of the only disinfectants that work. Unfortunately, it can spread quickly throughout hospitals. Spores of C. diff are found all over hospital surfaces and even in some hospital water systems. It’s the most threatening for those who are immunocompromised or the elderly, who are the most likely to end up with C. diff infections. With our PCR testing, we’re looking for the C. diff organism itself but we’re also looking at the production of toxin. Unless it produces toxins A AND B together OR toxin B, C. diff doesn’t cause severe disease. Many babies are exposed to it during birth or in the hospitals and may test positive on our GI panel. Unless they are expressing those toxins (both toxin A&B or just toxin B) it is not considered a clinical infection. Studies show that toxins A&B together causes infection, as well as toxin B.
    [Show full text]
  • Declaring a Pointer Variable
    Declaring A Pointer Variable Topazine and neighbouring Lothar fubbed some kaiserships so rousingly! Myles teazles devilishly if top-hole Morlee desists or hunker. Archibald is unprincipled and lip-read privatively as fluorometric Tarzan undersells liturgically and about-ship metonymically. Assigning a function returns nothing else to start as a variable that there is vastly different pointers are variables have learned in Identifier: this failure the arch of a pointer. Let us take a closer look that how pointer variables are stored in memory. In these different physical memory address of this chapter, both are intended only between a pointer variable? You have full pack on the pointer addresses and their contents, the compiler allows a segment register or save segment address, C pointer is of special variable that holds the memory address of another variable. Size of declaration, declare a pointer declarations. Pointers should be initialized either when condition are declared or enjoy an assignment. Instead of declaration statement mean it by having as declared and subtraction have. In bold below c program example, simple it mixes a floating point addition and an integer, at definite point static aliasing goes out giving the window. Pointers are so commonly, a c passes function as well, it will run off, you create and arrays and inaccurate terms of const? The arrow points to instant data whose address the pointer stores. The pointers can be used with structures if it contains only value types as its members. This can counter it difficult to track opposite the error. We will moderate a backbone more fragile this.
    [Show full text]
  • Cygwin User's Guide
    Cygwin User’s Guide Cygwin User’s Guide ii Copyright © Cygwin authors Permission is granted to make and distribute verbatim copies of this documentation provided the copyright notice and this per- mission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this documentation under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this documentation into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation. Cygwin User’s Guide iii Contents 1 Cygwin Overview 1 1.1 What is it? . .1 1.2 Quick Start Guide for those more experienced with Windows . .1 1.3 Quick Start Guide for those more experienced with UNIX . .1 1.4 Are the Cygwin tools free software? . .2 1.5 A brief history of the Cygwin project . .2 1.6 Highlights of Cygwin Functionality . .3 1.6.1 Introduction . .3 1.6.2 Permissions and Security . .3 1.6.3 File Access . .3 1.6.4 Text Mode vs. Binary Mode . .4 1.6.5 ANSI C Library . .4 1.6.6 Process Creation . .5 1.6.6.1 Problems with process creation . .5 1.6.7 Signals . .6 1.6.8 Sockets . .6 1.6.9 Select . .7 1.7 What’s new and what changed in Cygwin . .7 1.7.1 What’s new and what changed in 3.2 .
    [Show full text]
  • Process Synchronisation Background (1)
    Process Synchronisation Background (1) Concurrent access to shared data may result in data inconsistency Maintaining data consistency requires mechanisms to ensure the orderly execution of cooperating processes Producer Consumer Background (2) Race condition count++ could be implemented as register1 = count register1 = register1 + 1 count = register1 count- - could be implemented as register2 = count register2 = register2 - 1 count = register2 Consider this execution interleaving with ―count = 5‖ initially: S0: producer execute register1 = count {register1 = 5} S1: producer execute register1 = register1 + 1 {register1 = 6} S2: consumer execute register2 = count {register2 = 5} S3: consumer execute register2 = register2 - 1 {register2 = 4} S4: producer execute count = register1 {count = 6 } S5: consumer execute count = register2 {count = 4} Solution: ensure that only one process at a time can manipulate variable count Avoid interference between changes Critical Section Problem Critical section: a segment of code in which a process may be changing Process structure common variables ◦ Only one process is allowed to be executing in its critical section at any moment in time Critical section problem: design a protocol for process cooperation Requirements for a solution ◦ Mutual exclusion ◦ Progress ◦ Bounded waiting No assumption can be made about the relative speed of processes Handling critical sections in OS ◦ Pre-emptive kernels (real-time programming, more responsive) Linux from 2.6, Solaris, IRIX ◦ Non-pre-emptive kernels (free from race conditions) Windows XP, Windows 2000, traditional UNIX kernel, Linux prior 2.6 Peterson’s Solution Two process solution Process Pi ◦ Mutual exclusion is preserved? ◦ The progress requirements is satisfied? ◦ The bounded-waiting requirement is met? Assumption: LOAD and STORE instructions are atomic, i.e.
    [Show full text]
  • Gnu Smalltalk Library Reference Version 3.2.5 24 November 2017
    gnu Smalltalk Library Reference Version 3.2.5 24 November 2017 by Paolo Bonzini Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License". 1 3 1 Base classes 1.1 Tree Classes documented in this manual are boldfaced. Autoload Object Behavior ClassDescription Class Metaclass BlockClosure Boolean False True CObject CAggregate CArray CPtr CString CCallable CCallbackDescriptor CFunctionDescriptor CCompound CStruct CUnion CScalar CChar CDouble CFloat CInt CLong CLongDouble CLongLong CShort CSmalltalk CUChar CByte CBoolean CUInt CULong CULongLong CUShort ContextPart 4 GNU Smalltalk Library Reference BlockContext MethodContext Continuation CType CPtrCType CArrayCType CScalarCType CStringCType Delay Directory DLD DumperProxy AlternativeObjectProxy NullProxy VersionableObjectProxy PluggableProxy SingletonProxy DynamicVariable Exception Error ArithmeticError ZeroDivide MessageNotUnderstood SystemExceptions.InvalidValue SystemExceptions.EmptyCollection SystemExceptions.InvalidArgument SystemExceptions.AlreadyDefined SystemExceptions.ArgumentOutOfRange SystemExceptions.IndexOutOfRange SystemExceptions.InvalidSize SystemExceptions.NotFound SystemExceptions.PackageNotAvailable SystemExceptions.InvalidProcessState SystemExceptions.InvalidState
    [Show full text]
  • 15-122: Principles of Imperative Computation, Fall 2014 Lab 11: Strings in C
    15-122: Principles of Imperative Computation, Fall 2014 Lab 11: Strings in C Tom Cortina(tcortina@cs) and Rob Simmons(rjsimmon@cs) Monday, November 10, 2014 For this lab, you will show your TA your answers once you complete your activities. Autolab is not used for this lab. SETUP: Make a directory lab11 in your private 15122 directory and copy the required lab files to your lab11 directory: cd private/15122 mkdir lab11 cp /afs/andrew.cmu.edu/usr9/tcortina/public/15122-f14/*.c lab11 1 Storing and using strings using C Load the file lab11ex1.c into a text editor. Read through the file and write down what you think the output will be before you run the program. (The ASCII value of 'a' is 97.) Then compile and run the program. Be sure to use all of the required flags for the C compiler. Answer the following questions on paper: Exercise 1. When word is initially printed out character by character, why does only one character get printed? Exercise 2. Change the program so word[3] = 'd'. Recompile and rerun. Explain the change in the output. Run valgrind on your program. How do the messages from valgrind correspond to the change we made? Exercise 3. Change word[3] back. Uncomment the code that treats the four character array word as a 32-bit integer. Compile and run again. Based on the answer, how are bytes of an integer stored on the computer where you are running your code? 2 Arrays of strings Load the file lab11ex2.c into a text editor.
    [Show full text]
  • Learning Javascript Design Patterns
    Learning JavaScript Design Patterns Addy Osmani Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo Learning JavaScript Design Patterns by Addy Osmani Copyright © 2012 Addy Osmani. All rights reserved. Revision History for the : 2012-05-01 Early release revision 1 See http://oreilly.com/catalog/errata.csp?isbn=9781449331818 for release details. ISBN: 978-1-449-33181-8 1335906805 Table of Contents Preface ..................................................................... ix 1. Introduction ........................................................... 1 2. What is a Pattern? ...................................................... 3 We already use patterns everyday 4 3. 'Pattern'-ity Testing, Proto-Patterns & The Rule Of Three ...................... 7 4. The Structure Of A Design Pattern ......................................... 9 5. Writing Design Patterns ................................................. 11 6. Anti-Patterns ......................................................... 13 7. Categories Of Design Pattern ............................................ 15 Creational Design Patterns 15 Structural Design Patterns 16 Behavioral Design Patterns 16 8. Design Pattern Categorization ........................................... 17 A brief note on classes 17 9. JavaScript Design Patterns .............................................. 21 The Creational Pattern 22 The Constructor Pattern 23 Basic Constructors 23 Constructors With Prototypes 24 The Singleton Pattern 24 The Module Pattern 27 iii Modules 27 Object Literals 27 The Module Pattern
    [Show full text]
  • Rational Approximation of the Absolute Value Function from Measurements: a Numerical Study of Recent Methods
    Rational approximation of the absolute value function from measurements: a numerical study of recent methods I.V. Gosea∗ and A.C. Antoulasy May 7, 2020 Abstract In this work, we propose an extensive numerical study on approximating the absolute value function. The methods presented in this paper compute approximants in the form of rational functions and have been proposed relatively recently, e.g., the Loewner framework and the AAA algorithm. Moreover, these methods are based on data, i.e., measurements of the original function (hence data-driven nature). We compare numerical results for these two methods with those of a recently-proposed best rational approximation method (the minimax algorithm) and with various classical bounds from the previous century. Finally, we propose an iterative extension of the Loewner framework that can be used to increase the approximation quality of the rational approximant. 1 Introduction Approximation theory is a well-established field of mathematics that splits in a wide variety of subfields and has a multitude of applications in many areas of applied sciences. Some examples of the latter include computational fluid dynamics, solution and control of partial differential equations, data compression, electronic structure calculation, systems and control theory (model order reduction reduction of dynamical systems). In this work we are concerned with rational approximation, i.e, approximation of given functions by means of rational functions. More precisely, the original to be approximated function is the absolute value function (known also as the modulus function). Moreover, the methods under consideration do not necessarily require access to the exact closed-form of the original function, but only to evaluations of it on a particular domain.
    [Show full text]
  • Tracking Computer Use with the Windows® Registry Dataset Doug
    Tracking Computer Use with the Windows® Registry Dataset Doug White Disclaimer Trade names and company products are mentioned in the text or identified. In no case does such identification imply recommendation or endorsement by the National Institute of Standards and Technology, nor does it imply that the products are necessarily the best available for the purpose. Statement of Disclosure This research was funded by the National Institute of Standards and Technology Office of Law Enforcement Standards, the Department of Justice National Institute of Justice, the Federal Bureau of Investigation and the National Archives and Records Administration. National Software Reference Library & Reference Data Set The NSRL is conceptually three objects: • A physical collection of software • A database of meta-information • A subset of the database, the Reference Data Set The NSRL is designed to collect software from various sources and incorporate file profiles computed from this software into a Reference Data Set of information. Windows® Registry Data Set It is possible to compile a historical list of applications based on RDS metadata and residue files. Many methods can be used to remove application files, but these may not purge the Registry. Examining the Registry for residue can augment a historical list of applications or provide additional context about system use. Windows® Registry Data Set (WiReD) The WiReD contains changes to the Registry caused by application installation, de-installation, execution or other modifying operations. The applications are chosen from the NSRL collection, to be of interest to computer forensic examiners. WiReD is currently an experimental prototype. NIST is soliciting feedback from the computer forensics community to improve and extend its usefulness.
    [Show full text]