Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy’s National Nuclear.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

1 Approved for unlimited release as SAND C Verification Practices for Code Development Teams Greg Weirs Computational Shock and Multiphysics.
Unstructured Data Partitioning for Large Scale Visualization CSCAPES Workshop June, 2008 Kenneth Moreland Sandia National Laboratories Sandia is a multiprogram.
Problem Uncertainty quantification (UQ) is an important scientific driver for pushing to the exascale, potentially enabling rigorous and accurate predictive.
Software Engineering and Design Principles Chapter 1.
7M701 1 Software Engineering Object-oriented Design Sommerville, Ian (2001) Software Engineering, 6 th edition: Chapter 12 )
R R R CSE870: Advanced Software Engineering: Frameworks (Cheng, Sp2003)1 Frameworks A Brief Introduction.
Ch3: Software Engineering Principles 1 What is a principle?  Definition:  Goals of accounting principles:  Goals of software engineering principles?
- 1 - Component Based Development R&D SDM Theo Schouten.
Jun Peng Stanford University – Department of Civil and Environmental Engineering Nov 17, 2000 DISSERTATION PROPOSAL A Software Framework for Collaborative.
MOOCHO and TSFCore object-oriented software and interfaces for the development of optimization and other advanced abstract numerical algorithms Roscoe.
SAND Number: P Sandia is a multi-program laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
CSE 332: C++ templates and generic programming I Motivation for Generic Programming in C++ We’ve looked at procedural programming –Reuse of code by packaging.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Automated Computer Account Management in Active Directory June 2 nd, 2009 Bill Claycomb Systems Analyst Sandia National Laboratories Sandia is a multiprogram.
Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy’s National Nuclear.
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
LTE Review (September 2005 – January 2006) January 17, 2006 Daniel M. Dunlavy John von Neumann Fellow Optimization and Uncertainty Estimation (1411) (8962.
Dax: Rethinking Visualization Frameworks for Extreme-Scale Computing DOECGF 2011 April 28, 2011 Kenneth Moreland Sandia National Laboratories SAND P.
Introduction to Object-oriented programming and software development Lecture 1.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
SAINT2002 Towards Next Generation January 31, 2002 Ly Sauer Sandia National Laboratories Sandia is a multiprogram laboratory operated by Sandia Corporation,
CSE 332: C++ templates This Week C++ Templates –Another form of polymorphism (interface based) –Let you plug different types into reusable code Assigned.
Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy’s National Nuclear.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
Development of numerical library software in Java Feb 8, 2000 H.Okazawa, Shizuoka Seika College, Japan and T.Sasaki, KEK,Japan.
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
Page 1 Trilinos Software Engineering Technologies and Integration Capability Area Overview Roscoe A. Bartlett Department.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
3rd Country Training, K.Subieta: System Engineering and Databases. Lecture 3, Slide 1 February 20, 2004 Lecture 3: Introduction to Software Analysis and.
The Red Storm High Performance Computer March 19, 2008 Sue Kelly Sandia National Laboratories Abstract: Sandia National.
Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy’s National Nuclear.
Floating-Point Reuse in an FPGA Implementation of a Ray-Triangle Intersection Algorithm Craig Ulmer June 27, 2006 Sandia is a multiprogram.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 13 Introduction to Classes.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Strategies for Solving Large-Scale Optimization Problems Judith Hill Sandia National Laboratories October 23, 2007 Modeling and High-Performance Computing.
Common Set of Tools for Assimilation of Data COSTA Data Assimilation Summer School, Sibiu, 6 th August 2009 COSTA An Introduction Nils van Velzen
OBJECT-ORIENTED PROGRAMMING (OOP) WITH C++ Instructor: Dr. Hany H. Ammar Dept. of Electrical and Computer Engineering, WVU.
LAMMPS Users’ Workshop
Scalable Linear Algebra Capability Area Michael A. Heroux Sandia National Laboratories Sandia is a multiprogram laboratory operated by Sandia Corporation,
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Chapter 14 Design with Reuse.
Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy’s National Nuclear.
Overview of C++ Templates
Domain Decomposition in High-Level Parallelizaton of PDE codes Xing Cai University of Oslo.
Connections to Other Packages The Cactus Team Albert Einstein Institute
A Dirichlet-to-Neumann (DtN)Multigrid Algorithm for Locally Conservative Methods Sandia National Laboratories is a multi program laboratory managed and.
More Design Patterns From: Shalloway & Trott, Design Patterns Explained, 2 nd ed.
Foundations: Language mechanisms and primitive OO concepts Lecture 1: Classification and Inheritance Michigan State University Spring 2008 E. Kraemer Notes.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
Photos placed in horizontal position with even amount of white space between photos and header Sandia National Laboratories is a multi-program laboratory.
CCA Common Component Architecture Insights from Quantum Chemistry Joseph P. Kenny Scalable Computing Research and Design Sandia National Laboratories Livermore,
Watching the movie the hard way…. Page 256 – Head First Design Patterns.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Multifidelity Optimization Using Asynchronous Parallel Pattern Search and Space Mapping Techniques Genetha Gray*, Joe Castro i, Patty Hough*, and Tony.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Anders Nielsen Technical University of Denmark, DTU-Aqua Mark Maunder Inter-American Tropical Tuna Commission An Introduction.
COP 4331 – OOD&P Lecture 7 Object Concepts. What is an Object Programming language definition: An instance of a class Design perspective is different.
Sandia National Laboratories is a multi-program laboratory managed and operated by Sandia Corporation, a wholly owned subsidiary of Lockheed Martin Corporation,
Virtual Directory Services and Directory Synchronization May 13 th, 2008 Bill Claycomb Computer Systems Analyst Infrastructure Computing Systems Department.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
 The Object Oriented concepts was evolved for solving complex problems. Object- oriented software development started in the 1980s. Object-oriented design.
S5.40. Module Structure 30% practical tests / 70% written exam 3h lectures / week (except reading week) 3 x 2h of computer labs (solving problems practicing.
Examples (D. Schmidt et al)
Introduction to Design Patterns
Software Quality Engineering
Designing Software for Ease of Extension and Contraction
Object Oriented Analysis and Design
Embedded Nonlinear Analysis Tools Capability Area
Presentation transcript:

Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy’s National Nuclear Security Administration under contract DE-AC04-94AL An Introduction to the COLIN Optimization Interface William Hart Discrete Algorithms and Math Dept Sandia National Laboratories

Slide 2 Motivation Claim: we need a standard, modular interface for general-purpose optimizers Optimization methods are widely applied in many disciplines –Non-experts are often the biggest users! Many different optimization codes have been developed –There are many different optimization strategies –Implementations of any one strategy reflect different design trade-offs –User interfaces can be very different, even for the same of optimization strategy! Most optimization solver experts are not user-interface experts... so why should we expect their software to be generally easy to use by naive users?

Slide 3 Motivation (cont’d) Idea: couple two (or more) optimizers together Example: memetic evolutionary algorithms –EA performs global search –Local optimizer called to refine solutions Note: we need a standard interface to initialize and launch the local optimizer!

Slide 4 Object-Oriented Design Claim: Such a general interface should employ OO design principles –Code modularity (encapsulation) –Code reuse (sharing, inheritance) Advantages of OO for optimization (Meza) –Simpler user-interface Problem, Solver objects –Better program interface for user E.g. reverse-communication violates standard coding practices –Facilitate the development of new solvers Algorithmic components can be modularized –Algorithmic components can be reused E.g. Line searches

Slide 5 Current OO Optimization Software Many different OO optimization solvers have been implemented –MOOCHO – reduced SQP –TAO – large-scale quasi-Newton –COOOL – general nonlinear optimization –DAKOTA – design engineering toolkit –SGOPT – stochastic global optimization –PICO – parallel branch-and-bound –GAlib – genetic algorithms Problem: different software packages use different OO abstractions! Example: representing arrays stl::vector, BasicArray, DakotaArray, …

Slide 6 COLIN Idea: provide a common interface for optimization libraries –Easily extensible C++ components to wrap third-party solvers –Facilitates plug-and-play of optimizers for hybrid methods –Can specify real parameters for generic search domains –Dynamic mapping between problem domains Note: our goal is not to create the ‘best’ OO optimization class heirarchy … whatever that means

Slide 7 COLIN Major Classes OptProblem OptSolver OptApplication Generic optimization solver class Generic optimization problem class Internal class used to manage the interface to a user’s application code

Slide 8 A simple COLIN Example // A test function double func(vector & point); // Create and setup an optimization problem class OptProblem > prob; OptSetup(prob, func); prob.set_parameter(“domain”, “[-1.0,1.0]^3”) // Create and setup a sMC optimizer sMC > opt; opt.set_problem(prob); opt.set_parameter(“max_neval”,100); opt.reset(); // Perform minimization and print the best value opt.minimize(); cout << opt.min_val() << endl;

Slide 9 Domain Mapping Problem: –A user defines an application with a specific domain type –Different solver objects may use different domain types –It is unreasonable to ask the user to adapt their application code for each solver Solution: –support a generic domain mapping functionality

Slide 10 Domain Mapping Example // Mapping function template<> void map_domain(vector & x, const array & y) { for (int i=0; i<y.size(); i++) x[i] = y[i]; } // Problem with domain vector OptProblem > prob; // Solver with domain array sMC > opt; // Set a problem with a domain that is mapped by the // map_domain() template function opt.set_problem(prob);

Slide 11 Hybrid Solvers Observations: –Need a standard solver interface –May require domain mapping both to and from the application domain type

Slide 12 Hybrid Solver Example // Local solver with domain array PatternSearch > local_opt; // Main solver with domain vector sMC > opt; // Setup the local optimizer opt.set_solver(local_opt); // Mapping functions template<> void map_domain(array & x, const vector & y) { for (int i=0; i<y.size(); i++) x[i] = y[i]; } template<> void map_domain(vector & x, const array & y) { for (int i=0; i<y.size(); i++) x[i] = y[i]; }

Slide 13 Domain Traits Problem: –A user may wish to optimize using an opaque data type –A solver may not know whether this data type supports operations like differentiation Solution: –Templated domain traits

Slide 14 Domain Traits Example // Definition of a generic class definition class DomainClass { vector x; vector y; } // Define domain traits for derivative information template <> bool OptDomainTraits ::derivative_flag=true; // Define problem double func(DomainClass& fn); OptProblem prob; OptSetup(prob,func); // Compute gradient information with this domain DomainClass point; vector grad; prob.EvalG(point,grad);

Slide 15 Application Example Problem: nonlinear least squares using genetic programming

Slide 16 Application Example (cont’d) Observation: –Can decompose search into two parts Functional form Value of –The functional form may be differentiable with respect to the c i Design of a hybrid evolutionary algorithm –Standard genetic program to search for s-expressions –Local search to optimize COLIN Impact: –Many different local search methods can be applied –Domain mapping simplifies the application of local search

Slide 17 Coliny Library Coliny: an optimization library of COLIN optimizers –Integrates most SGOPT optimizers directly –Wrappers for a growing number of third-party methods DAKOTA AMPL Excel NEOS SGOPT OPT++ DOT APPS Cobyla COLIN

Slide 18 Coliny Impact COLIN provides optimization middle-ware that eliminates the need for separate interfaces for each new optimization toolkit DAKOTA AMPL Excel NEOS SGOPT OPT++ DOT APPS Cobyla

Slide 19 Final Thoughts COLIN has had significant impact on my optimization software development –Mixed-domain hybrid optimization is easy Discrete-continuous modeling of docking –Standard interfaces have made it easy for me to integrate Coliny solvers into other applications E.g. standard parameterization mechanism –It doesn’t take too much effort to ‘Colinize’ a solver It has taken lines of code –COLIN provides support for implicit algorithmic parallelism E.g. this is exploited by Sandia’s DAKOTA toolkit

Slide 20 Availability COLIN and Coliny are a packages in the Acro optimization repository –software.sandia.gov/Acro