How and Why Python is Used in the Model of Real-World Battlefield Scenarios


Published on

How and Why Python is Used in the Model of Real-World Battlefield Scenarios
Eric Silverman,

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

How and Why Python is Used in the Model of Real-World Battlefield Scenarios

  1. 1. Eric Silverman<br />The opinions expressed here are the views of the writer and do not necessarily reflect the views and opinions of TRAC-WSMR, the US Army, or any organization or person associated with the US Government.<br />
  2. 2. U.S. Army: Research & Analysis<br />How and why Python is being used by the Military to Model Real-World Battlefield Scenarios<br />A Case Study on: <br />How an open-source solution, at the user base level, was successfully implanted in a DoDorganization<br />
  3. 3. U.S. Army: Research & Analysis<br />Support the U.S. Army <br />Training and Doctrine Command (TRADOC)<br />Analysis Center (TRAC)<br />Mission of TRAC:  Provide relevant, credible analysis for informed decisions about the Army's most important and challenging issues. <br /><br />
  4. 4. Combat Model<br />Known Data<br />Combat Model<br />End Results<br /><ul><li>Physics
  5. 5. Quantitative Data
  6. 6. Analytic
  7. 7. Stochastic
  8. 8. Closed Form
  9. 9. Reports & Briefing Material</li></li></ul><li>Scripted Behaviors<br />
  10. 10. Scripted Behaviors<br />Hostile Engages Field Forces<br />Hostile Evacuates to the North <br />Support Unit Flank Hostile’s Position<br />Hostile has Escaped!!!<br />
  11. 11. Cognitive Behaviors w/Python<br />
  12. 12. Cognitive Behaviors w/Python<br />Location of target is…<br />
  13. 13. Cognitive Behaviors w/Python<br />
  14. 14. Cognitive Behaviors w/Python<br />
  15. 15. Cognitive Behaviors w/Python<br />
  16. 16. Relevance<br />Much of our defense establishment is focused on Cold War doctrine and weapons.<br />"Twenty years after the Cold War ended, this is simply not unacceptable. It's irresponsible.”<br />President Obama (August 2009)<br />The Question: How do we not fight our last war? <br />The Answer: Open-Source Software (Jython)<br />
  17. 17. Jython Implementation<br />COMBATXXI is developed with Java, and has an embedded Jython API<br />Jython's features allow for quick creation and implementation of dynamic behaviors <br />Each entity carries its own global Jython namespace throughout the simulation <br />COMBATXXI has event triggers, which starts the entities' Jython scripts<br />
  18. 18.<br />Getters<br /><br />Getters<br />Encapsulated Source Code<br /><br />Getters<br /><br />Dynamic<br />Behavior<br /><br />Function<br />Libraries<br />Jython Implementation<br />
  19. 19. Example Code Snippet<br />01 # from the Functions Library class<br />02 # import the [is_Line-of-Sight_Between_Locations] method<br />03 fromfuncLibraryimportisLOSBetweenLocations()<br />04 # from the location wrapper class get the entity’s current location<br />05 locOfMe = location.getMyCurrentLocation() # locOfMe is an object<br />06 # test LOS east 5 meters at a time<br />07 distRange = 5<br />08 whilenoLOS != True: # using noLOS as a Boolean, loop until it is True<br />09 # create a temporary location offset true east, by the value in distRange<br />11 locTemp = locOfMe.newOffsetLocation(90, distRange ):<br />12 # test to see if the two locations have line-of-sight<br />13 noLOS = isLOSBetweenLocations(locOfMe, locTemp)<br />14 distRange += 5 # increase the distance by 5 meters<br />15 # create location object that is the longest point with line-of-sight<br />16 locToMoveTo = locOfMe.newOffsetLocation(90, distRange-5 )<br />
  20. 20. Example Code Snippet<br />16 locToMoveTo = locOfMe.newOffsetLocation(180, distRange-5 )<br />17 # use the command wrapper class to create a move order object<br />18 moveOrder = command.createMoveOrder()<br />19 # add the destination location to the move order<br />20 moveOrder.addDestination(locToMoveTo)<br />21 # override the default rate of movement to 12 mph<br />22moveOrder.overrideDefaultSpeed(12)<br />23 # use the command wrapper class the execute the move order<br />24 command.executeOrder(moveOrder)<br />Note: Behavior script syntax has been altered as to not disclose FOUO information<br />
  21. 21. Workforce Implementation<br />Complete Documentation for users, to include examples in code snippet<br />Hands-on training sessions in computer labs<br />Continual support for users<br />
  22. 22. Take Away<br />Military Analyst are using Jython <br />to Model Current and Future Battlefield Scenarios <br />In an Agent Based Model<br />Dynamic and Reactive Behaviors<br />are being Developed with Jython<br />Non-Programmers are Developing <br />the Complex Behaviors with Jython<br />Java-based Source Code is Encapsulated<br />and Control Access is Provided <br />with Jython Wrapper Classes<br />Programmers Assist the EmpoweredUsers with<br />Documentation, Training, and on going User Support<br />
  23. 23. Contact Information<br />Eric Silverman<br />Sr. Project Manager<br />Defense Contractor<br /><br />(w) 575-679-1457 | (m) 575-915-6002<br />ALATEC Inc<br />A Service Disabled Veteran Owned Small Business<br /> |<br />