{"id":25,"date":"2014-11-26T14:07:03","date_gmt":"2014-11-26T22:07:03","guid":{"rendered":"http:\/\/www.howardklein.net\/?p=25"},"modified":"2014-11-28T18:19:00","modified_gmt":"2014-11-29T02:19:00","slug":"a-little-bit-of-roadmap","status":"publish","type":"post","link":"https:\/\/www.howardklein.net\/?p=25","title":{"rendered":"A Little Bit of Roadmap&#8230;"},"content":{"rendered":"<p>As I mentioned in my introductory <a title=\"\u2026and Why Am I Here?\" href=\"https:\/\/www.howardklein.net\/?p=19\">post<\/a>, I started down this road as a software engineer turned simulation practitioner, who thought he might be able to build a better \u2013 or at least different &#8211; mousetrap. \u00a0Which naturally leads to the question: <em>what am I trying to do differently?<\/em> You might be tempted to translate that into \u201cWhat are your requirements?\u201d, but at this stage, I prefer to think of them more fuzzily as goals.\u00a0 I started off with five:<\/p>\n<p><!--more--><\/p>\n<ul>\n<li>Support both process and agent-based modeling.\u00a0 In brief, this means allowing model behavior to be defined from either or both of two perspectives; the processes being executed by the system, or the agents controlling or performing those processes.<\/li>\n<li>Support the modeler\u2019s ability to define model behavior in a natural way using an existing programming language \u2013 when code is the best way to express that behavior.\u00a0 Where it makes more sense to define behavior in terms of data (textual or graphical), do that.<\/li>\n<li>Support modeling component re-use through object-oriented and object-based design.\u00a0 Leverage object-oriented model component design to support natural aggregation (and de-aggregation) of simulation outputs.\u00a0 If, for example, process are defined in terms of a process class hierarchy, that hierarchy provides one way to aggregate results from related, but different processes.<\/li>\n<li>Support the notion of location (and location hierarchies) as a second type of model component decomposition.\u00a0 \u00a0The concept of location often provides a natural framework for grouping heterogeneous model components \u2013 or subgroups.\u00a0 Location hierarchies also provide a second axis for output aggregation and reporting, along with another avenue for re-use.<\/li>\n<li>Take advantage of multi-core hardware, but not at the expense of ease-of-use or model development.\u00a0 The number of processing cores available on our desks \u2013 or laps, or in the palms of our hands \u2013 will only continue to grow.\u00a0 Given the generally compute-intensive nature of simulation applications, it would be crazy not to make every effort to take advantage of those resources.\u00a0 That being said, I\u2019d prefer to do so in ways that don\u2019t create additional work for or constraints on the modeler.<\/li>\n<\/ul>\n<p>I\u2019ll be discussing each of these in future posts.\u00a0 No doubt I\u2019ll also be refining and adding to this list as I go along. I realize that none of these goals are truly novel, but I hope to implement them in some different and hopefully useful ways.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As I mentioned in my introductory post, I started down this road as a software engineer turned simulation practitioner, who thought he might be able to build a better \u2013 or at least different &#8211; mousetrap. \u00a0Which naturally leads to the question: what am I trying to do differently? You might be tempted to translate&#8230;&nbsp;(<a href=\"https:\/\/www.howardklein.net\/?p=25\">read more<\/a>)<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[4,3,2],"tags":[],"class_list":["post-25","post","type-post","status-publish","format-standard","hentry","category-goals-requirements","category-modeling","category-simulation"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.howardklein.net\/index.php?rest_route=\/wp\/v2\/posts\/25","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.howardklein.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.howardklein.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.howardklein.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.howardklein.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=25"}],"version-history":[{"count":4,"href":"https:\/\/www.howardklein.net\/index.php?rest_route=\/wp\/v2\/posts\/25\/revisions"}],"predecessor-version":[{"id":32,"href":"https:\/\/www.howardklein.net\/index.php?rest_route=\/wp\/v2\/posts\/25\/revisions\/32"}],"wp:attachment":[{"href":"https:\/\/www.howardklein.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.howardklein.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.howardklein.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}