Thursday, April 22, 2010

eVSM, CMSD, and ProModel

So here's a video showing the new ProModel translator I wrote for CMSD. It also shows a little bit of the CMSD Viewer program I've been working on. Best watched in HD so you can read the text and follow along...

Core Manufacturing Simulation Data

I'm not sure if I've mentioned this yet, but I'm pretty sure I haven't. A little over 3 years ago I attended Winter Sim 2006 in Monterey, CA (nice place by the way) and got introduced to the Core Manufacturing Simulation Data (CMSD) specification from NIST. This spec was supposed to act as a neutral data format for holding manufacturing simulation.

I watched its progress over the years, hoping at some point to be able to apply some of my past work translating Value Stream Maps into QUEST models to be generically available to any simulation package.

Cut to March of 2009, and it seemed like the spec was getting pretty close to being a standard. NIST had the spec in to SISO for review and eventual vote, and my boss saw a presentation by Swee Leong from NIST, and was impressed enough by it to allow me to start working on a CMSD translator for Value Stream Mapping.

So I got started right away, first stepping back and looking at what this translator should be. I should mention that the CMSD format is technically set to be a UML standard, but along with that will come an XML schema. So anyways, long story short, I hadn't done much work with parsing XML files, and had some experience kludging together solutions to build XML files, and didn't like the idea of implementing a parser/writer for each translator I might write.

So I decided to build a centralized CMSD XML parser/generator, utilizing Microsoft's built-in DOM libraries to do the actual file I/O from/to XML files, and I would write the code to translate XML elements into instances of CMSD classes. So I built that central tool as a COM/ActiveX class, using VB6 (I know, could I possibly use something older?). So to read a CMSD file I just have to create a new CMSD object and tell it to read the file, and I get all the CMSD data in a nice, easy to program against object model. And, I only have to write and maintain one XML I/O code base, which makes me happy.

So I called this class the CMSD API (very original, I know) and started writing translators. To cut my teeth on the standard, I started off just building something to build a QUEST model from a CMSD API object, just using a simple XML file that NIST had provided to me to demonstrate the XML format. That one translator has turned into about a dozen different translators, some proofs of concept, and some potentially useful tools.

So here, after six paragraphs, is where I get to my point. We're reaching the stage where these translators are ready for some public consumption. They're hopefully useful enough that people can use them, though because the CMSD standard isn't really set in stone yet, I'll refrain from calling them CMSD-based tools; rather they're just tools that utilize a custom XML format.

Okay, so seven paragraphs in, and my point is that I'm looking for simulation users interested in trying this software out. I can't guarantee I can take everyone, and ideally you should be a user of more than one of the following tools:
1. DELMIA QUEST
2. eVSM
3. ProModel
4. Arena
5. Excel
6. Simio
7. FlexSim

Now, if you only use one of the above-listed simulation packages, that's okay. I've also been working on a standalone CMSD editor, that hopefully in the future can take the place of a simulation package builder interface (and just use the simulation package as a solver). Also, if you're good at programming in VBA and would like to be able to build your own translators with my CMSD API, let me know, as I'd like to get feedback on the quality of the methods in the API.

So if you're interested in joining a beta test, contact me. In the meantime you can see the documentation for these tools grow as I write it (thank you, Google Docs):
Documentation

Thursday, April 15, 2010

OR Exchange

I've been a member at StackOverflow since it launched to the public. For those who don't know what it is, it's basically a question and answer site built the way a question-answer site should be built; namely, every page deals with questions, and answers (rather than traditional forum type sites, which are more for threaded discussion, but get question-answer sits shoehorned in). They've built a fantastic community, which means you can go on there and ask a programming question and get an answer in a pretty respectable amount of time.

About 6 months ago they launched StackExchange, which was a service that let people set up their own question-answer sites, with the same look and feel as StackOverflow, but you were responsible for getting your community in order. Apparently a lot of the sites that were created never really got going very well, and that's led the StackExchange people to change the rules a bit. From now on, if you want to start a StackExchange site, you have to put together a proposal convincing them why they should build it, and then you have to rally enough users to initialize the site with questions and answers, and hopefully get enough momentum going that they can launch your site and you end up with a community where you can get answers to your niche questions.

The point of this post, then, is to talk about OR-Exchange. OR-Exchange is a StackExchange site built for answering Operations Research problems, which involves a lot of math programming, but simulation is definitely a part of that. Unfortunately, the StackExchange people don't seem to think there's enough participation in the site, so it's got 3 months left before it's shut down (we'll call it early July is the termination date).

So I encourage you, if you're a simulation user (and why wouldn't you be if you're reading this, unless you're my mom (who doesn't read this, by the way)) to visit OR-Exchange.com and join the community, and maybe ask some general purpose simulation questions (if you know the answer, you're allowed to answer your own questions, too).