Your SlideShare is downloading. ×
How and Why Python is Used in the Model of Real-World Battlefield Scenarios
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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 …

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


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