<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity=60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
!!Contact info
Benoit LACROIX
[email protected]
[[LinkedIn|http://www.linkedin.com/in/lacroixbenoit]]

<html>
<center>
<a href='http://www.linkedin.com/in/lacroixbenoit' rel='nofollow'><img src='images/logo_linkedin.png' alt='LinkedIn' style='margin-right: 50px'/></a>
</center>
</html>
!! Context

!! Issues

!! Results

!! Related publications
!! Context

Buildings design takes great advantages of simulation, for instance to improve fire safety or optimize the space. Initiated with [[Alstom|http://www.alstom.com]] for the design of underground trains, the objective of this project was to simulate pedestrians in crowded areas, taking into account individual characteristics such as speed or body type. It took place in 2006 in the [[Multi-Agents Systems and Behavior Team|http://www.lifl.fr/SMAC/]] of the [[Computer Science Laboratory of Lille|http://www.lifl.fr]].

[img(22%, )[Example of a simulated crowd in a subway station|images/misc_station_1.png][images/misc_station_1.png]] [img(22%, )[Example of a simulated crowd in a subway station|images/misc_station_2.png][images/misc_station_2.png]] 

!! Issues

Our objective was to simulate pedestrians displacement through complex environments.The objective was to reproduce real world situations, not to obtain the most realistic appearance. Three  main issues were thus considered:
# space management: pedestrians and environment representation, displacement models
# time management: scheduling, waiting queues
# and simulation validation: confronting the simulation results with reality, at the macroscopic leve (flows at entrances or exits, statistic distributions) and at the microscopic level (individual behaviors)

!! Results

[>img(40%, )[The MISC platform: simulated crowd in a corridor|images/misc_corridor.png][images/misc_corridor.png]] The work led to the development of the MISC platform (for “Modeling of Individuals in Spatialy Constrained environments”). MISC allows simulating agents, here pedestrians, in complex environments. 

The agents use collision algorithms, and autonomously adjust their movements according to their individual characteristics and limited perceptions. Our approach use the notion of agents' generators. Those generators create various agents' at specified intervals and frequency, and assign them global objectives and individual characteristics. 

One of the hard issues considered in the project was to allow agents to switch their displacement model at runtime, so as to handle point-to-point displacement as well as queuing at a ticket distributor. The displacement model is based on the concept of blurred path following, coupled to a model of waiting queues. An agent is thus able to move halfway to its final goal, wait a few minutes, and then complete its journey. 

Finally, validation is based on flow measurements, the next objective being the integration of individual behavior and valication with real data.

!! Related publications

Lacroix, B., Mathieu, P., & Picault, S. (2006). [[Time and Space Management in Crowd Simulations.|papers/crowd_simulation_esm06_lacroix.pdf]] In Proceedings of the European Simulation and Modelling Conference, pp. 315-320, Toulouse, France. //(also available: [[bibtex|papers/crowd_simulation_esm06_lacroix.bib]])//

//In french:// Lacroix, B. (2006). [[La gestion du temps et de l'espace dans les simulations de foules.|papers/gestion_temps_espace_simulations_foules_lacroix_06.pdf]] Master's thesis report, University of Lille, France. //(also available: [[presentation|papers/gestion_temps_espace_simulations_foules_slides_lacroix_06.pdf]])//
[[Presentation]]
!!~PhD in Computer Science, University of Lille, 2009

__Dissertation:__ Norms to increase variety? Behavioral differentiation using norms, and its application to traffic in driving simulators 

__Advisors:__ [[Andras Kemeny|http://www.experts.renault.com/kemeny/expert/index.html]] (RENAULT) and [[Philippe Mathieu|http://www.lifl.fr/~mathieu/]] (Computer Science Laboratory of Lille)

More on [[the project|TrafficSimulation]], and on my [[work at RENAULT|WorkExperiences]]. See also the [[PhD subject|http://www.experts.renault.com/kemeny/phds/benoit_lacroix/index.html]].

During these 3 years I followed different courses, including:
* various management courses: negociation, industrial property, oral presentation, efficiency in meetings (1 to 3 days each),
* a business creation summer school (one-week full time, 5 persons group): from the innovative idea to the business plan creation. Presented the business plan in front of a professionals' panel,
* the European Agents Systems Summer School (one-week full time, 2008).

!!M.S. in Engineering, Ecole Centrale de Lille, 2006
 (Ingénieur de l'[[Ecole Centrale de Lille|http://www.ec-lille.fr/]], in the top 12 of engineering graduate schools in France)

__General education phase (2 years):__ focused on multidisciplinary in-depth scientific education and leadership training, including production systems, electronics, mechanics, electricity, economy & business development

__Specialization training phase (1 year):__ majored in Software Engineering

__Gap year internship (1 year):__ Software Engineer at AUCHAN (see [[Work Experiences|WorkExperiences]])

__Group project:__ innovative project (2 years, 5 persons) to design and develop  an automated measurement system based on sound transductors for the [[FFPJP|http://www.ffpjp.info/]]. Presented the results in front of a panel of professors and professionals.

!!M.S. in Computer Science, University of Lille, 2006

Majored in artificial intelligence and data mining. 

__Advanced specialization courses:__ data mining, automated learning, clustering, artificial intelligence, modal logic, bioinformatics (see the [[M.S. content|http://www.lifl.fr/LIFL1/formations/dea.html]])

__Group project:__ scientific project (4 months, 2 persons): simulation and evaluation of the Google pagerank algorithm. Realisation: development of a simulation tool allowing the evaluation of ranking strategies (Java) . 
!! Context 

With a rapid growing energy demand, a high potential for energy savings and very high energy costs, Cambodia is a world of opportunities for energy efficiency. However, the development of the sector faces many issues, from the low level of awareness to the lack of standards and regulations. Where foreign business will often use the practices of their origin country, local ones usually do not consider the efficiency issues – until they receive a higher and higher bill, and find out how and where they can save.

!! Results

Kamworks, a social enterprise established in Cambodia in 2006, has been helping many businesses to improve their energy efficiency, from small restaurants to 400 room hotels and 22 floors office towers.

Some examples of audits I conducted in 2012 and 2013 in Cambodia and Vietnam:
* The [[Phnom Penh Tower|medias/Phnom Penh Tower - Reference Energy Audit.pdf]], a 22 storeys office building in Phom Penh
* Old colonial buildings, for instance the headquarters of the Konrad Adenauer Stiftung in Phom Penh
* Garment factories, such as [[Cambodian Textiles Worldwide|medias/Cambodian Textiles Worldwide - Reference Energy Audit.pdf]]
* Cruise boats on the Mekong
* A diamond factory in Vietnam, near Hanoi

!! Related publications

Lacroix B. (2013). [[Introducing energy efficiency in Cambodia|papers/Introducing Energy Efficiency in Cambodia - Presentation (Benoit Lacroix, Kamworks).pdf]]. Presented at the Asia Clean Energy Forum, Manilla, Philippines, June 26-28. //(also available: [[abstract|papers/Introducing Energy Efficiency in Cambodia - Abstract (Benoit Lacroix, Kamworks).pdf]])//
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
!!!!!Usage
<<<
The extended image syntax is:
{{{
[img(w+,h+)[...][...]]
}}}
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
<<<
!!!!!Examples
<<<
{{{
[img(100px+,75px+)[images/meow2.jpg]]
}}}
[img(100px+,75px+)[images/meow2.jpg]]
{{{
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
}}}
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
{{tagClear{
}}}
<<<
!!!!!Revisions
<<<
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 1, date: new Date(2009,2,24)};
//}}}
//{{{
var f=config.formatters[config.formatters.findByField("name","image")];
f.match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
f.lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](?:\(([^,]*),([^\)]*)\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
f.handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var width=lookaheadMatch[3];
		var height=lookaheadMatch[4];
		var tooltip=lookaheadMatch[5];
		var src=lookaheadMatch[6];
		var link=lookaheadMatch[7];

		// Simple bracketted link
		var e = w.output;
		if(link) { // LINKED IMAGE
			if (config.formatterHelpers.isExternalLink(link)) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) {
					// see [[AttachFilePluginFormatters]]
					e = createExternalLink(w.output,link);
					e.href=config.macros.attach.getAttachment(link);
					e.title = config.macros.attach.linkTooltip + link;
				} else
					e = createExternalLink(w.output,link);
			} else 
				e = createTiddlyLink(w.output,link,false,null,w.isStatic);
			addClass(e,"imageLink");
		}

		var img = createTiddlyElement(e,"img");
		if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
		if(width||height) {
			var x=width.trim(); var y=height.trim();
			var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
			var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
			if (x.substr(0,2)=="{{")
				{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			if (y.substr(0,2)=="{{")
				{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			img.style.width=x.trim(); img.style.height=y.trim();
			config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
		}
		if(tooltip) img.title = tooltip;

		// GET IMAGE SOURCE
		if (config.macros.attach && config.macros.attach.isAttachment(src))
			src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
		else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
			if (config.browser.isIE || config.browser.isSafari) {
				img.onerror=(function(){
					this.src=config.formatterHelpers.resolvePath(this.src,false);
					return false;
				});
			} else
				src=config.formatterHelpers.resolvePath(src,true);
		}
		img.src=src;
		w.nextMatch = this.lookaheadRegExp.lastIndex;
	}
}

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.title=((stretchW||stretchH)?'DRAG=stretch/shrink, ':'')
		+'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size';
	e.statusMsg='width=%0, height=%1';
	e.style.cursor='move';
	e.originalW=e.style.width;
	e.originalH=e.style.height;
	e.minW=Math.max(e.offsetWidth/20,10);
	e.minH=Math.max(e.offsetHeight/20,10);
	e.stretchW=stretchW;
	e.stretchH=stretchH;
	e.onmousedown=function(ev) { var ev=ev||window.event;
		this.sizing=true;
		this.startX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
		this.startY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
		this.startW=this.offsetWidth;
		this.startH=this.offsetHeight;
		return false;
	};
	e.onmousemove=function(ev) { var ev=ev||window.event;
		if (this.sizing) {
			var s=this.style;
			var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
			var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
			if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
			if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
			clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
		}
		return false;
	};
	e.onmouseup=function(ev) { var ev=ev||window.event;
		if (ev.shiftKey) { this.style.width=this.style.height=''; }
		if (ev.ctrlKey)  { this.style.width=this.originalW; this.style.height=this.originalH; }
		this.sizing=false;
		clearMessage();
		return false;
	};
	e.onmouseout=function(ev) { var ev=ev||window.event;
		this.sizing=false;
		clearMessage();
		return false;
	};
}
//}}}
about me
[[Presentation]]
[[Work Experiences|WorkExperiences]]
[[Education]]
[[Publications]]

about my work
[[Smart Off-Grid|SmartOffGrid]]
[[Energy Efficiency|EnergyEfficiency]]
[[Smart Homes|SmartHomes]]
[[Traffic Simulation|TrafficSimulation]]
[[Crowds Simulation|CrowdsSimulation]]

contact
[[Contact Me|ContactMe]]

/%
[[Creature Creator|CreatureCreator]]
personal stuff
[[Running & Hiking|Running]]
%/
<!-- Google Analystics script -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-15303485-1");
pageTracker._trackPageview();
} catch(err) {}</script>
<meta name='description' content='Benoit Lacroix home page and activities summary'/>
<meta name='keywords' lang='fr' content='benoit lacroix, lacroix benoit, intelligence artificielle, artificial intelligence, IA, AI, systèmes multi-agents, SMA, comportements, trafic, simulation, modelisation'/>
<meta name='keywords' lang='en' content='benoit lacroix, lacroix benoit, artificial intelligence, IA, AI, multi-agent systems, MAS, behaviour, traffic, simulation, modelisation'/>
<meta name='author' content='Benoit Lacroix'/>
<meta name='robots' content='index,follow,archive'/>
<<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
Last Updated: 
April 14, 2017
<!--{{{-->
<div id='header' class='header'>
<div class='headerShadow'>
<span class='searchBar' macro='search'></span>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>

</div>
<div id='mainMenu'>
<span refresh='content' tiddler='MainMenu'></span>
<span id='noticeBoard' refresh='content' tiddler='NoticeBoard'></span>

</div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='MochaSideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<div id='contentFooter' refresh='content' tiddler='contentFooter'></div>
<!--}}}-->
This is a brief summary of my background. You will find here my full [[resume|cv/cv_benoit_lacroix_en.pdf]] in pdf.
!!Key strengths
* Specialist in decentralized renewable energy, rural electrification and mobile money
* Information technology and artificial intelligence expert
* Self-motivated, autonomous, strong analytical and problem-solving skills
* Innovative thinker, results-driven
* 10+ years’ experience in managing industrial and applied research projects
!!Experience summary
* 2016 - current: Co-Founder at [[Portmoni|http://portmoni.com]] (Cape Town, South Africa)
* 2015 - current: Machine-to-machine and mobile money expert at BL Consulting (Cape Town, South Africa)
* 2012 - 2015: Manager innovative solar systems at [[Kamworks|http://www.kamworks.com/]] (social business focused on solar energy, Phnom Penh, Cambodia, 2.5 years)
* 2010 - 2012: Technical project leader in renewable energies at [[CEA|http://www.cea.fr/english_portal]] (French Atomic and Alternative Energy Research Center, 1.5 years)
* 2006 - 2009: Applied research engineer at [[RENAULT|http://www.renault.com]] (automotive industry, 3 years)
* 2006: Research engineer in artificial intelligence at the [[Computer Science Laboratory of Lille|http://www.lifl.fr/]], in collaboration with [[ALSTOM|http://www.alstom.com]] (research laboratory & transportation industry, 6 months)
* 2004 - 2005: Software engineer at [[AUCHAN|http://www.auchan.com]] (retail, 1 year 1 month)
!!Education
* Ph.D. in Computer Science, [[University of Lille|http://www.univ-lille1.fr]], France, 2009 (in collaboration with [[RENAULT|http://www.renault.com]])
* Master's Degree in Engineering, [[Ecole Centrale de Lille|http://www.ec-lille.fr/]] Graduate School, France, 2006 (in the top 12 of engineering graduate schools in France). In depth scientific curriculum, incl. production systems, electronics, mechanics and electricity. Majored in software engineering.
* Master's Degree in Computer Science, [[University of Lille|http://www.univ-lille1.fr]], France, 2006. Majored in artificial intelligence and data mining.
!!Contact info
Benoit LACROIX
[email protected]

My [[LinkedIn|http://www.linkedin.com/in/lacroixbenoit]] profile. Please feel free to contact me directly!

<html>
<center>
<a href='http://www.linkedin.com/in/lacroixbenoit' rel='nofollow'><img src='images/logo_linkedin.png' alt='LinkedIn' style='margin-right: 50px'/></a>
</center>
</html>
A list of my published paper. Still under work, of course!

!! International Journals

Lacroix B., Mathieu P. & Kemeny A. (2013). [[Formalizing the Construction of Populations in Multi-Agent Simulations|papers/construction_populations_eaai-13_lacroix.pdf]]. Engineering Applications of Artificial Intelligence, vol. 26, issue 1, p. 211–226.  //(also available: [[bibtex|papers/construction_populations_eaai-13_lacroix.bib]] and [[paper on ScienceDirect|http://www.sciencedirect.com/science/article/pii/S0952197612001078]])//

!! Peer reviewed international conference proceedings

Lacroix B., Paulus C., & Mercier D. (2012). [[Multi-Agent Control of Thermal Systems in Buildings|papers/mas_thermal_systems_ates-12_lacroix.pdf]]. In Proceedings of Agent Technologies in Energy Systems (ATES@AAMAS'12), Valencia, Spain.

Lacroix B. & Mathieu M. (2012). [[Automated Generation of Various and Consistent Populations in Multi-Agent Simulations|papers/automated_population_paams-12_lacroix.pdf]]. In: Demazeau, Y., Muller, J., Corchado, J., & Bajo, J. (Eds.), 10th International Conference on Practical Applications of Agents and ~Multi-Agent Systems. Advances in Intelligent and Soft Computing, vol. 155, pp. 127-137. //(also available: [[presentation|papers/automated_population_paams-12_slides_lacroix.pdf]], [[paper on SpringerLink|http://www.springerlink.com/content/m10hw83678h20364/]])//

Lacroix B., Mathieu M., & Kemeny A. (2009). [[Generating Various and Consistent Behaviors in Simulations.|papers/generating_behaviors_paams09_lacroix.pdf]] In: Demazeau, Y., Pavon, J., Corchado, J., & Bajo, J. (Eds.), 7th International Conference on Practical Applications of Agents and ~Multi-Agent Systems. Advances in Intelligent and Soft Computing, vol. 55, pp. 110-119, Springer. //(also available: [[presentation|papers/generating_behaviors_paams09_slides_lacroix.pdf]], [[bibtex|papers/generating_behaviors_paams09_lacroix.bib]] and [[paper on SpringerLink|http://www.springerlink.com/content/m0q2644428817723/]])//

Lacroix B., Rouelle V., Kemeny A., Mathieu P., Laurent N., Millet G., & Gallee G. (2009). [[Informal Rules for Autonomous Vehicles in SCANeR.|papers/informal_rules_dsc09_lacroix.pdf]] In Proceedings of the Driving Simulation Conference, pp. 58-69, Monaco. //(also available: [[presentation|papers/informal_rules_dsc09_slides_lacroix.pdf]] and [[bibtex|papers/informal_rules_dsc09_lacroix.bib]])//

Lacroix, B., Mathieu, P., & Kemeny, A. (2009). [[The Use of Norms Violations to Model Agents Behavioral Variety.|papers/norms_violations_coin-lncs-09_lacroix.pdf]] In: Hubner, J.F., Matson, E., Boissier, O., & Dignum, V. (Eds.), Coordination, Organizations, Institutions and Norms in Agent Systems IV. LNCS, vol. 5428, pp. 220-234, Springer. //(also available: [[bibtex|papers/norms_violations_coin-lncs-09_lacroix.bib]] and [[paper on SpringerLink|http://www.springerlink.com/content/327t8w68q00470u3/]])//

Lacroix, B., Mathieu, P., & Kemeny, A. (2008). [[A Normative Model for Behavioral Differentiation.|papers/normative_model_iat08_lacroix.pdf]] In Proceedings of the IEEE/WIC/ACM International Conference on Intelligent Agent Technology, pp. 96-99, Sydney, Australia. //(also available: [[presentation|papers/normative_model_iat_08_slides_lacroix.pdf]], [[bibtex|papers/normative_model_iat_08_lacroix.bib]] and [[paper on IEEE Xplore|http://ieeexplore.ieee.org/arnumber=4740604]])//

Lacroix, B., Mathieu, P., Rouelle, V., Chaplier, J., Gallée, G., & Kemeny, A. (2007). [[Towards Traffic Generation with Individual Driver Behavior Model Based Vehicles.|papers/traffic_generation_dsc-na07_lacroix.pdf]] In Proceedings of the Driving Simulation Conference North America, pp. 144-154, Iowa City, USA. //(also available: [[presentation|papers/traffic_generation_dsc-na07_slides_lacroix.pdf]] and [[bibtex|papers/traffic_generation_dsc-na07_lacroix.bib]])//

Lacroix, B., Mathieu, P., & Picault, S. (2006). [[Time and Space Management in Crowd Simulations.|papers/crowd_simulation_esm06_lacroix.pdf]] In Proceedings of the European Simulation and Modelling Conference, pp. 315-320, Toulouse, France. //(also available: [[bibtex|papers/crowd_simulation_esm06_lacroix.bib]])//

!! Peer reviewed national conference proceedings

Lacroix, B., Mathieu, P. & Picault, S. (2006). [[Une gestion réaliste du temps et de l'espace dans les simulations de foules.|papers/simulation_foule_jfsma06_lacroix.pdf]] Actes des 14èmes Journées Francophones sur les Systèmes ~Multi-Agents (JFSMA'06), pp. 77-80, Annecy, France. //(also available: [[presentation|papers/simulation_foule_jfsma06_slides_lacroix.pdf]], [[bibtex|papers/simulation_foule_jfsma06_lacroix.bib]] and the [[long paper|papers/simulation_foule_submitted_jfsma06_lacroix.pdf]] initialy submitted)//

!! Presentations

Lacroix B. (2013). [[Introducing energy efficiency in Cambodia|papers/Introducing Energy Efficiency in Cambodia - Presentation (Benoit Lacroix, Kamworks).pdf]]. Presented at the Asia Clean Energy Forum, Manilla, Philippines, June 26-28. //(also available: [[abstract|papers/Introducing Energy Efficiency in Cambodia - Abstract (Benoit Lacroix, Kamworks).pdf]])//

Verschelling J. and Lacroix B. (2013). Nationwide program for the deployment of 20,000 Solar Home Systems in Cambodia. Presented at the Marketplace of Ideas, Asia Clean Energy Forum, Manilla, Philippines, June 26-28.

Lacroix B. (2013). [[Kamworks Solar, the leading solar provider in Cambodia|papers/Kamworks Solar (Benoit Lacroix).pdf]]. Presented at the Energy for All Forum, Manilla, Philippines, June 25.

Lacroix B. (2012). Application des Systèmes ~Multi-Agents aux Systèmes Energétiques. Séminaire de l’Ecole Centrale de Lille, France.

Interview for Inf'OSE, the journal of the Master on Energy Systems of the Mines ~ParisTech Graduate School, by Thibault Perrigault: [[Interview of Benoit Lacroix|papers/interview_inf-ose-12_lacroix.pdf]], in a [[paper about Smart Buildings|papers/interview_and_article_inf-ose-12_lacroix.pdf]]. Inf'OSE, Issue 64, December 2012.

Lacroix B. (2011). Systèmes Multi Agents et Intelligence Ambiante. Séminaire de l’Ecole Centrale de Lille, France.

Lacroix B. (2009). [[Managing Variety and Consistency of Agents Behaviors in Simulations.|papers/lacroix_benoit_cv_eurodocinfo09.pdf]] Presented at ~EuroDocInfo, Mons, Belgium, January 23-24. 

Lacroix B., Mathieu P., & Kemeny A. (2008). [[The Use of Norms Violations to Model Agents Behavioral Variety.|papers/norms_violations_coin-aamas-08_lacroix.pdf]] Presented at the 5th Workshop on Coordination, Organizations, Institutions and Norms in Agent Systems, held with AAMAS'08 (COIN@AAMAS'08), pp. 183-196, Estoril, Portugal. //(also available: [[presentation|papers/norms_violations_coin-aamas-08_slides_lacroix.pdf]] and [[bibtex|papers/norms_violations_coin-aamas-08_lacroix.pdf]])//

Lacroix B., Kemeny A., Mathieu P. & Rouelle V. (2008). [[Simulation de trafic et simulateurs de conduite.|papers/simulation_trafic_ntic08_slides_lacroix.pdf]] Presented at the Forum Systèmes & Logiciels pour les NTIC dans le transport, ~Marne-La-Vallée, France, January 31.

Lacroix B. (2007). Traffic Simulation at Renault. Presented at the ~SCANeR&copy; User Group Meeting, Naples, Italy, October 25-26.

!! Patents

Lacroix B. Mercier D., Paulus C. (2013). [[Method and system for controlling and energy management installation|papers/WO_2013153184_A1.pdf]], Patent ~WO2013153184 //(full content available on the [[INPI patent database|http://bases-brevets.inpi.fr/fr/document/WO2013153184/]])//

!! Thesis

Lacroix B. (2009). [[Normer pour mieux varier ? La différenciation comportementale par les normes, et son application au trafic dans les simulateurs de conduite.|papers/thesis_lacroix_2009.pdf]] Ph.D. thesis, University of Lille, France. //(also available: [[presentation|papers/thesis_slides_lacroix_2009.pdf]])//

Lacroix B. (2006). [[La gestion du temps et de l'espace dans les simulations de foules.|papers/gestion_temps_espace_simulations_foules_lacroix_06.pdf]] Master's thesis report, University of Lille, France. //(also available: [[presentation|papers/gestion_temps_espace_simulations_foules_slides_lacroix_06.pdf]])//

!! Referee

Scientific Committee Member of ISA'11 and ISA'12
Program Committee Member of IFAAMAS'08 and IFAAMAS'10.

!! Media

Interview for Construction & Property Magazine by Tim Vutha (2013): [[Giving buildings an energy check-up|papers/Interview Benoit Lacroix - Construction and Property Magazine (December 2013).pdf]]. Contruction & Property Magazine, Issue 006, November - December 2013.
!!!! Reference times
10k : 41min52s
half-marathon : 1h34min12s
marathon : 3h32min49s

!! Projects

Trail des Maures (45km, 2600m D+)

Trail du Grand Lubéron

Trail du Nivolet Revard (51km, 2700m D+)


!! 2017

2017-12-02: [[Ultra-Trail Cape Town|http://www.ultratrailcapetown.com/]] (35km, 1800m D+)

2017-09-09: [[Ultra-Trail du Vercors|http://www.ultratrailvercors.com/]] (Villards de Lans, 86km, 4600m D+)

2017-08-15: [[Le Sentier des Ours|http://www.kikourou.net/calendrier/course-109653-le_sentier_des_ours-2017.html]] (Autrans, 14km, 420m D+)

2017-07-09: [[Le Trail du Bout du Monde|http://www.trailduboutdumonde.com/]] (37km, 700m D+)

2017-05-20:  [[Jonkershoek Mountain Challenge|http://www.mountainchallenge.co.za/event/jmc/race-info]] (24km, 1100m D+)

2017-04-14: [[Two Oceans Trail Run|http://www.twooceansmarathon.org.za/]], 2h40min32s (24km, 800m D+, 31/497)

2017-01-24: [[Kirstenbosch Botanical Gardens Summer Trail|http://www.trailseries.co.za/events/cape-summer-trail-series%C2%AE/kirstenbosch]], 56min45s (10km, 350m D+, 53/541)

!! 2016

2016-06-05: [[Lourensford Trail|https://lourensford.co.za/events/lourensford-trail-run/]], 53min11s (11km, 200m D+, 4/116)

!! 2015

2015-12-05: [[Festitrail|https://www.festitrail-autrans.com/]], 2h43min41s (24km, 800m D+, on snow, 107/210)


!! 2012

2012-12-02: [[Angkor Wat International Half Marathon|http://www.angkormarathon.org/]], 2h29min26s

!! 2011

2011-10-16: [[Marathon d'Amsterdam|http://www.amsterdammarathon.nl/]], 3h38min04s

2011-09-10: [[Trail de la Cote d'Opale|http://www.trailcotedopale.com/]], 2h52min41s (31km, 795m D+, 142/803)

2011-07-14: [[La Fleur du Roy|http://www.capvercors.com/capvercors9.1.html]], 1h05min58s (14km, 300m D+, 34/121)

2011-06-11: [[Castor Fou|http://castorfou.free.fr/]], 2h02min03s (23km, 500m D+, 135/425)

2011-03-13: [[Semi-marathon de Rambouillet|http://rambouilletolympique.pagesperso-orange.fr/semimarathon/semimarathon.htm]], 1h34min12s

2011-01-09: [[Trail Blanc de Serre Chevalier|http://www.trailserrechevalier.com/]], 3h02min46 (30.1km, 750m D+, 134/413)

!! 2010

''2010-07-18: [[Sky Race - Chemin de Ronde|http://www.trailserrechevalier.com/]], 2h53min09s (24km, 800m D+, 56/324)''

''2010-06-26: [[Le Cross du Mont-Blanc|http://www.montblancmarathon.net/]],2h56min49s (23km, 1450m D+, 177/1301)''

2010-06-13: [[La Course du Chateau de Vincennes|http://www.sportpassionevenement.com/courses/coursechateau/]], 1h00min36s (10km)

2010-05-22: [[Le Petit Savoyard (Grand Raid 73)|http://grandraid73.fr/]], 3h10min54s (23km, 1450m D+, Chambery)

''2010-05-09: [[Foulées Cachanaises|http://www.ville-cachan.fr/vos-loisirs/rendez-vous-cachanais/rendez-vous-sportifs/foulees-cachanaises/]] 41min52s (10km, 59/231)''

''2010-04-18: [[Semi-marathon du lac d'Annecy|http://www.marathon-annecy.com/]] 1h34min29s (343/2745)''

2010-04-11: [[Les Foulées Meudonnaises|http://fouleemeudonnaise.unblog.fr/]], 1h03min05s (10km)

2010-03-28: [[Lyon Urban Trail|http://www.lyonurbantrail.com/]], 2h10min33s (22km, 800m D+)

''2010-02-08: [[Les Drayes Blanches|http://drayesblanches.com/]], 2h13min46s (23.5km, 620m D+, on snow, 82/240)''

!! 2009

''2009-09-27: [[Paris-Versailles|http://www.parisversailles.com/]], 1h14min06s (16km, 1634/18004)''

2009-09-20: [[10km de Lyon|http://www.runninglyon.com/]], 43min31s

2009-09-05: [[Semi-marathon de Lille Metropole|http://www.semimarathon-lille.fr/]], 1h50min25s

''2009-07-13: [[La Fleur du Roy|http://www.villarddelans.com/]], 1h07min04s (14km, 300m D+, 57/211)''

2009-06-13: [[Castor Fou|http://castorfou.free.fr/]], 2h18min29s (23km, 500m D+)

''2009-04-05: [[Marathon de Paris|http://www.parismarathon.com/]], 3h32min49s (6201/30334)''

2009-03-08: [[Semi-marathon de Paris|http://www.semideparis.com/]], 1h42min53s

2009-02-06: [[Les Foulées de Vincennes|http://www.sportpassionevenement.com/]], 1h07min46s (10km)

!! 2008

2008-09-27: [[Paris-Versailles|http://www.parisversailles.com/]], 1h26min49s (16km)
/***
|Name|SectionLinksPlugin|
|Source|http://www.TiddlyTools.com/#SectionLinksPlugin|
|Documentation|http://www.TiddlyTools.com/#SectionLinksPlugin|
|Version|1.4.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|allow tiddler sections in TiddlyLinks to be used as anchor points|
This plugin enhances tiddler links so that they can include section references that ''auto-scroll to the indicated section heading'' within a tiddler (i.e., similar to the 'anchor' behavior provided in HTML by {{{<a name="foo">}}} and {{{<a href="#foo">...</a>}}}).  The {{{<<tiddler>>}}} macro syntax has also be extended to allow section references without a tiddler name, so that transclusion of //hidden sections from the same tiddler// can be easily accomplished.  The plugin also adds a new macro, <<sectionTOC>> which can auto-generate and embed a 'Table of Contents' outline view into a tiddler to enable quick navigation to sections within that tiddler.
!!!Usage
<<<
!!!!~TiddlyLink syntax
You can link to a section of a tiddler by adding the "##sectionname" syntax to the tiddlername:
{{{
[[SomeTiddler##SomeSection]]
}}}
When clicked, the tiddler is displayed and the specified section heading is automatically scrolled into view. If the tiddler title is omitted or the 'here' keyword is used, e.g.,
{{{
[[##SomeSection]] or [[here##SomeSection]]>>
}}}
then the current containing tiddler is implied by default.
!!!!HTML anchor syntax
You can use HTML syntax to create a scrollable 'anchor' location within a tiddler without use of the standard TW section heading syntax:
{{{
<html><a name="sectionname" /></html>
}}}
You can then link to that section using the enhanced TiddlyLink syntax as above.
!!!!{{{<<tiddler>>}}} macro 
The {{{<<tiddler>>}}} syntax has been extended so that when the tiddler title is omitted or the 'here' keyword is used, e.g.,
{{{
<<tiddler ##SomeSection>> or <<tiddler here##SomeSection>>
}}}
then the current containing tiddler is implied by default.
!!!!"""<<sectionTOC>>""" macro
This macro generates a 'Table of Contents' outline-style bullet list with links to all sections within the current tiddler.  Simply place the following macro at the //end of the tiddler content// (i.e., following all section headings).  Important note: //''The {{{<<sectionTOC>>}}} macro must occur at the end of the tiddler in order to locate the rendered section headings that precede it.''//
{{{
<<sectionTOC>> or <<sectionTOC className>>
}}}
To position the macro's //output// within the tiddler, you must create a special 'target element' that uses a specific classname (default='sectionTOC'), like this:
{{{
{{sectionTOC{}}}
}}}
When the {{{<<sectionTOC>>}}} macro is rendered, it will find the matching 'sectionTOC'-classed element and writes it's output there.  You can also add the macro and/or target elements directly to the [[ViewTemplate]] definition, so that every tiddler can automatically display the table of contents:
{{{
<span class='sectionTOC'></span> <!-- target element -->
...
<span macro='sectionTOC'></span> <!-- must be at end of tiddler -->
}}}
<<<
!!!Configuration
<<<
You can change the {{{<<SectionTOC>>}}} output link format by adding the following statement to a tiddler tagged with <<tag systemConfig>>
{{{
config.macros.sectionTOC.linkFormat='[[%0|##%0]]';
}}}
The default value (shown above) produces a link to each section within the tiddler, using "%0" to insert the section name into the link.  You can add extra formatting to generate additional output to suit your purposes.  For example, if you have EditSectionPlugin installed, you could include a link that invokes that plugin's popup editor directly from each item in the TOC display, like this:
{{{
config.macros.sectionTOC.linkFormat='[[%0|##%0]] <<editSection [[##%0]] [[(edit)]]>>';
}}}
<<<
!!!Examples
<<<
links to sections defined by ''TW heading syntax'' (e.g, {{{!!!sectionname}}}):{{indent{
[[SectionLinksPlugin##onClickTiddlerLink]]
[[##onClickTiddlerLink]] //(current tiddler implied)//}}}
links to anchors defined by ''HTML syntax'' (e.g., {{{<html><a href="anchorname"></html>}}}):{{indent{
[[SectionLinksPlugin##sampleanchorlink]]
[[##sampleanchorlink]] //(current tiddler implied)//}}}
<<<
!!!Revisions
<<<
2011.12.21 1.4.2 refactor sectionTOCformat to permit customization
2011.02.08 1.4.1 in isExternalLink() hijack, strip section references before testing for external link
2010.08.09 1.4.0 in scrollToSection(), added support for using HTML <a name="..."> anchor elements
2009.08.21 1.3.4 added handling to ignore leading/trailing whitespace in section references
2009.08.21 1.3.3 in createTiddlyLink(), add tiddlyLinkNonExistingSection class if matching section is not found
2009.08.14 1.3.2 in createTiddlyLink(), don't override core value for ~TiddlyLink attribute
2009.08.02 1.3.1 in sectionTOC.handler(), trim leading/trailing whitespace from generated section links
2009.08.01 1.3.0 in scrollToSection(), apply 3-tier section matching (exact, startsWith, contains)
2009.07.06 1.2.2 fixed displayTiddler() hijack
2009.07.03 1.2.1 in {{{<<sectionTOC>>}}}, suppress output if target is not found
2009.06.02 1.2.0 added support for 'here' keyword in {{{[[here##section]]}}} links and {{{<<tiddler here##section>>}}} macro
2009.04.09 1.1.1 in sectionTOC macro, make target visible when TOC is rendered.
2009.01.18 1.1.0 added {{{<<sectionTOC>>}}} macro to generate numbered-bullet links to sections of current tiddler
2009.01.06 1.0.0 converted to stand-alone plugin
2008.10.14 0.0.0 initial release (as [[CoreTweaks]] #784 - http://trac.tiddlywiki.org/ticket/784)
<<<
!!!Code
***/
//{{{
version.extensions.SectionLinksPlugin= {major: 1, minor: 4, revision: 2, date: new Date(2011,12,21)};

Story.prototype.scrollToSection = function(title,section) {
	if (!title||!section) return; var t=this.getTiddler(title); if (!t) return null;
	var elems=t.getElementsByTagName('*');
	var heads=[]; var anchors=[];
	for (var i=0; i<elems.length; i++)
		if (['H1','H2','H3','H4','H5'].contains(elems[i].nodeName)) heads.push(elems[i]);
	for (var i=0; i<elems.length; i++)
		if (elems[i].nodeName=='A' && (elems[i].getAttribute('name')||'').length) anchors.push(elems[i]);
	var found=null;
	for (var i=0; i<heads.length; i++)
		if (getPlainText(heads[i]).trim()==section) { found=heads[i]; break; }
	if (!found) for (var i=0; i<heads.length; i++)
		if (getPlainText(heads[i]).trim().startsWith(section)) { found=heads[i]; break; }
	if (!found) for (var i=0; i<heads.length; i++)
		if (getPlainText(heads[i]).trim().indexOf(section)!=-1) { found=heads[i]; break; }
	if (!found) for (var i=0; i<anchors.length; i++)
		if (anchors[i].getAttribute('name')==section) { found=anchors[i]; break; }
	if (!found) for (var i=0; i<anchors.length; i++)
		if (anchors[i].getAttribute('name').startsWith(section)) { found=anchors[i]; break; }
	if (!found) for (var i=0; i<anchors.length; i++)
		if (anchors[i].getAttribute('name').indexOf(section)!=-1) { found=anchors[i]; break; }
	if (found) {
		// if section heading is collapsed, click to expand it - see [[FoldHeadingsPlugin]]
		if (hasClass(found,'foldable') && found.nextSibling.style.display=='none') found.onclick();
		// scroll *after* tiddler animation
		var delay=config.options.chkAnimate?config.animDuration+100:0;
		setTimeout('window.scrollTo('+findPosX(found)+','+findPosY(found)+')',delay);
		return found;
	}
}
//}}}
/***
!!!!core hijacks
***/
/***
!!!!!createTiddlyLink
***/
//{{{
// [[tiddlername##section]] and [[##section]]
if (!window.createTiddlyLink_section)
	window.createTiddlyLink_section=window.createTiddlyLink;
window.createTiddlyLink=function(place,title) {
	var t=story.findContainingTiddler(place); var tid=t?t.getAttribute('tiddler'):'';
	var parts=title.split(config.textPrimitives.sectionSeparator);
	var title=parts[0]; var section=parts[1]; if (section) section=section.trim();
	if (!title.length || title.toLowerCase()=='here') title=tid;  // default=current tiddler
	arguments[1]=title;
	var btn=createTiddlyLink_section.apply(this,arguments);
	if (section) {
		btn.setAttribute('section',section);
		if (store.getTiddlerText(title+config.textPrimitives.sectionSeparator+section)===null)
			addClass(btn,'tiddlyLinkNonExistingSection');
	}
	return btn;
}
//}}}
/***
!!!!!onClickTiddlerLink
***/
//{{{
if (!window.onClickTiddlerLink_section)
	window.onClickTiddlerLink_section=window.onClickTiddlerLink;
window.onClickTiddlerLink=function(ev) {
	var e=ev||window.event;	var target=resolveTarget(e); var title=null;
	while (target!=null && title==null) {
		title=target.getAttribute('tiddlyLink');
		section=target.getAttribute('section');
		target=target.parentNode;
	} 
	var t=story.findContainingTiddler(target); var tid=t?t.getAttribute('tiddler'):'';
	if (title!=tid||!section) // avoid excess scrolling for intra-tiddler links
		onClickTiddlerLink_section.apply(this,arguments);
	story.scrollToSection(title,section);
	return false;
}
//}}}
/***
!!!!! displayTiddler
***/
//{{{
if (!Story.prototype.displayTiddler_section)
	Story.prototype.displayTiddler_section=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler)
{
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var parts=title.split(config.textPrimitives.sectionSeparator);
	var title=parts[0]; var section=parts[1]; if (section) section=section.trim();
	if (!title.length || title.toLowerCase()=='here') {
		var t=story.findContainingTiddler(place);
		title=t?t.getAttribute('tiddler'):'';
	}
	arguments[1]=title;  // default=current tiddler
	this.displayTiddler_section.apply(this,arguments);
	story.scrollToSection(title,section);
}
//}}}
/***
<html><a name="sampleanchorlink" /></html>This is a sample ''anchor link'': {{{<html><a name="sampleanchorlink" /></html>}}}
!!!!!isExternalLink
***/
//{{{
if (!config.formatterHelpers.isExternalLink_section)
	config.formatterHelpers.isExternalLink_section=config.formatterHelpers.isExternalLink;
config.formatterHelpers.isExternalLink=function(link) {  // remove section references before testing
	var l=link.split(config.textPrimitives.sectionSeparator)[0];
	return config.formatterHelpers.isExternalLink_section(l);
}
//}}}
/***
!!!!!tiddler.handler
***/
//{{{
if (!config.macros.tiddler.handler_section)
	config.macros.tiddler.handler_section=config.macros.tiddler.handler;
config.macros.tiddler.handler=function(place,macroName,params,wikifier,paramString,tiddler)
{
	if (!params[0]) return;
	var sep=config.textPrimitives.sectionSeparator;
	var parts=params[0].split(sep); var tid=parts[0]; var sec=parts[1]; if (sec) sec=sec.trim();
	if ((tid.toLowerCase()=='here'||!tid.length) && sec) { // fixup for 'here##section' and '##section'
		var here=story.findContainingTiddler(place)
		var tid=here?here.getAttribute('tiddler'):tiddler?tiddler.title:'';
		arguments[2][0]=tid+sep+sec;
		arguments[4]=paramString.replace(new RegExp('(here)?'+sep+sec),tid+sep+sec);
	}
	config.macros.tiddler.handler_section.apply(this,arguments);
}
//}}}
/***
!!!!sectionTOC macro
***/
//{{{
config.macros.sectionTOC = {
	targetClass: 'sectionTOC',
	linkFormat: '[[%0|##%0]]',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var out=[];
		var targetClass=params[0]||this.targetClass;
		var t=story.findContainingTiddler(place); if (!t) return;
		var elems=t.getElementsByTagName('*');
		var level=5; // topmost heading level
		for (var i=0; i<elems.length; i++) {
			var txt=getPlainText(elems[i]).trim();
			var link=this.linkFormat.format([txt]);
			switch(elems[i].nodeName) {
				case 'H1': out.push('#'+link);		level=1; break;
				case 'H2': out.push('##'+link);		level=level<2?level:2; break;
				case 'H3': out.push('###'+link);	level=level<3?level:3; break;
				case 'H4': out.push('####'+link);	level=level<4?level:4; break;
				case 'H5': out.push('#####'+link);	level=level<5?level:5; break;
				default: if (hasClass(elems[i],targetClass)) var target=elems[i];
			}
		}
		// trim excess bullet levels
		if (level>1) for (var i=0; i<out.length; i++) out[i]=out[i].substr(level-1);
		// show numbered list
		if (out.length && target) {
			if (target.style.display=='none') target.style.display='block';
			wikify(out.join('\n'),target);
		}
	}
}
//}}}
/***
!!!Invoke macro
{{{
<<sectionTOC>>
}}}
***/
// //<<sectionTOC>>
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 [2.9.6] changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 [1.0.0] Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 6, date: new Date(2008,10,17)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
	config.options.chkSinglePageMode=eval(v);
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
	config.options.chkSinglePageMode=false;
if (config.options.chkSinglePagePermalink==undefined)
	config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
	config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
	config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
	config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
	config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
	config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
		story.displayTiddler(null,tids[0]);
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
		story.closeAllTiddlers();
		story.displayTiddlers(null,tids);
	}
}


if (Story.prototype.SPM_coreDisplayTiddler==undefined)
	Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed
	var opt=config.options;
	var single=opt.chkSinglePageMode && !startingUp;
	var top=opt.chkTopOfPageMode && !startingUp;
	var bottom=opt.chkBottomOfPageMode && !startingUp;
	if (single) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
				return;
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				if (opt.chkSinglePageKeepEditedTiddlers) return;
				// if tiddler to be displayed is already shown, then leave active tiddler editor as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
			}
			story.closeTiddler(tid);
		});
	}
	else if (top)
		arguments[0]=null;
	else if (bottom)
		arguments[0]="bottom";
	if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (single || top))
			tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
		else if (bottom)
			tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=document.getElementById(story.idPrefix+title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		// scroll to top of page or top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
		// if animating, defer scroll until after animation completes
		var delay=opt.chkAnimate?config.animDuration+10:0;
		setTimeout("window.scrollTo(0,"+yPos+")",delay); 
	}
}

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
	Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=true;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
	this.SPM_coreDisplayTiddlers.apply(this,arguments);
	opt.chkBottomOfPageMode=saveBPM;
	opt.chkTopOfPageMode=saveTPM;
	opt.chkSinglePageMode=saveSPM;
}
//}}}
a short presentation of myself and my work
Benoit Lacroix
!!Issues

In buildings, the thermal functions of heating, ventilation, air conditioning and domestic hot water production are often interdependent. Additionally, it is more and more complex to control them, given the increasing use of alternative energy sources, such as solar thermal collectors or heat pumps. In this project, we elaborated an approach allowing to design and optimize the control of thermal systems in the buildings, while improving flexibility and reusability.

!!Results

[>img(, )[The prototype compact unit controlled using the proposed approach|images/prototype_compact_unit.png]]The approach was used to control a compact unit providing heating, ventilation and domestic hot water production in a low-energy building. The system was evaluated using a thermal simulator, and managed to improve the thermal comfort by 35% compared to the initial control system, for only a 2.5% increase in costs. 

!!Related publications

Lacroix B. Mercier D., Paulus C. (2013). [[Method and system for controlling and energy management installation|papers/WO_2013153184_A1.pdf]], Patent ~WO2013153184 //(full content available on the [[INPI patent database|http://bases-brevets.inpi.fr/fr/document/WO2013153184/]])//

Lacroix B., Paulus C., & Mercier D. (2012). [[Multi-Agent Control of Thermal Systems in Buildings|papers/mas_thermal_systems_ates-12_lacroix.pdf]]. In Proceedings of Agent Technologies in Energy Systems (ATES@AAMAS'12), Valencia, Spain.
!! Introduction

This section describes the work I conducted at Kamworks between 2013 and 2015 as manager of the innovative solar projects: bringing affordable solar electricity in rural cambodia with the rental of solar home systems.

!! Context

In Cambodia, 75% of the population still does not have access to grid electricity. As soon as you wander off a few kilometers from the main roads, the electric wires disappear, and you are left with only two solutions to power your lights and home appliances: buy an expensive and dirty diesel generator, or use a car battery that you will have to recharge every few days. On the other hand, clean and sustainable energy sources, such as solar electricity, are still too expensive for the typical households.

This gap is the challenge we decided to address with a unique business model in the South East Asia region: renting out Solar Home Systems for rural households.

!! A tale of Kamworks’  Solar Home Systems

Kamworks, a social business started in 2006 in Cambodia, has been developing innovative products in Cambodia with a participatory approach since almost a decade. This approach led to the design of a range of solar home systems designed specifically for the Cambodian context. However, the cost of these high quality solutions did not allowed the typical rural households to afford it. 

To tackle this issue, we developed in 2013 and 2014 our own pay-as-you-go solution: the solar home systems are now GSM-operated, allowing to remotely monitor them, and to use this data to improve service and maintenance. Thanks to the support of the GSMA Association, we were able to industrialize this new product, and to develop the software platform to collect and leverage this data.

!! Paying with Mobile Money

In addition to bringing additional functionalities for the service and maintenance, the software platform will soon allow additional services, such as improving the battery life, or informing the customers that the solar panel needs to be cleaned. And the platform is also the enabler of one of the key functionalities of the project: allowing the customers to pay using mobile money. 

When allowing customers to pay using multiple small payments, the collection of the money soon becomes a challenging issue. This is why Kamworks decided to partner with the leading mobile money supplier in Cambodia, WING. Through its 1700 stores nationwide, WING allows to transfer, deposit and withdraw money between each other and with anyone in Cambodia, via any mobile phone. Automatically received through the Kamworks software platform, all payments made by our customer through WING are now processed automatically. 

!! An Innovative Business Offer

With the GSM-operated units, and the software platform collecting mobile money payments, everything was in place to offer rural Cambodians high quality products at a low upfront cost. 

With the rental offer, people renting our solar systems pay a small fee every month, and they get much more power than they would with a car battery. As Cambodian are also eager to own their energy solution and build assets for their family, they can also decide to rent-to-own the systems, and become owners after 2 years.

Early fall 2014, we started to market the new offer in Kampong Thom province, and it shows great results!


!! Related publications

[[MECS Awards Second Round of Innovation Fund Grants|http://www.gsma.com/mobilefordevelopment/mecs-awards-second-round-of-innovation-fund-grants]], by Mary Roach, GSMA, February 2014 ([[pdf|medias/MECS Awards Second Round of Innovation Fund Grants.pdf]]).

[[The Synergies between Mobile, Energy and Water Access: Asia|http://www.gsma.com/mobilefordevelopment/the-synergies-between-mobile-energy-and-water-access-asia]], by Michael Nique and Neha Jain, GSMA, March 2014 ([[pdf|medias/GSMA_MECS_Synergies-between-Mobile-Energy-and-Water-Access_Asia.pdf]]).

[[How Mobile Phones Can Illuminate Rural Cambodia|http://discover.isif.asia/2014/05/how-mobile-phones-can-illuminate-rural-cambodia/]], by Danièle Adler, ISIF Asia, May 2014 ([[pdf|medias/How Mobile Phones Can Illuminate Rural Cambodia - Kamworks - ISIF Asia.pdf]]).

[[Kamworks Uses Mobile Technology to Expand the Access to Clean Energies in Cambodia|http://www.kamworks.com/news-details/innovation-kamworks-uses-mobile-technology-to-expand-the-access-to-clean-energies-in-cambodia/]], by Kamworks, June 2014 ([[pdf|medias/Kamworks Uses Mobile Technology to Expand the Access to Clean Energies in Cambodia.pdf]]).

[[Decentralised Energy Market in Rural Cambodia – A site visit to Kamworks|http://www.gsma.com/mobilefordevelopment/decentralised-energy-market-in-rural-cambodia-a-site-visit-to-kamworks]], by Rahul Shah, GSMA, December 2014 ([[pdf|medias/Decentralised Energy Market in Rural Cambodia - A site visit to Kamworks.pdf]]).



/*{{{*/
/*Mocha TiddlyWiki Theme*/
/*Version 1.0*/
/*Design and CSS originally by Anthonyy, ported to TiddlyWiki by Saq Imtiaz.*/
/*}}}*/
/*{{{*/

body {
 margin: 0 auto;
}

#contentWrapper{
 font-family: Lucida Grande, Tahoma, Arial, Helvetica, sans-serif; /* Lucida Grande for the Macs, Tahoma for the PCs */
 font-size: 1em;
 line-height: 1.6em;
 color: #666;
 border: 0;
 margin: 0 auto;
 max-width : 974px;
 padding:0;
}

.header {
 background: #fff; 
 padding-top: 10px;
 clear: both;
 border-bottom: 4px solid #948979;
}

.headerShadow { 
 padding: 2.6em 0em 0.5em 0em; 
}

.siteTitle {
 font-family: 'Trebuchet MS' sans-serif;
 font-weight: bold;
 font-size: 32px;
 color: #CC6633;
 margin-bottom: 30px;
 background-color: #FFF;
}

.siteTitle a{
 color:#CC6633; 
 border-bottom:1px dotted #cc6633;
}

.siteSubtitle {
 font-size: 1.0em;
 display: block;
 margin: .5em 3em; color: #999999;
}

#mainMenu {
 position:relative;
 float:left;
 margin-bottom:1em;
 display:inline;
 text-align:left;
 padding: 2em 0.5em 0.5em 0em;
 width:13em;
 font-size:1em;
}

#sidebar{
 position:relative;
 float:right;
 margin-bottom:1em;
  padding-top:2em;
 display:inline;
}

#displayArea {
 margin: 0em 17em 0em 15em;
}

.tagClear {clear:none;}

#contentFooter {background:#575352; color:#BFB6B3; clear: both; padding: 0.5em 1em;}

 
 #contentFooter a {
 color: #BFB6B3;
 border-bottom: 1px dotted #BFB6B3;
 }
 
 #contentFooter a:hover {
 color: #FFFFFF;
 background-color:#575352;
 }

 a,#sidebarOptions .sliderPanel a{
 color:#CC6714;
 text-decoration: none;
 }

 a:hover,#sidebarOptions .sliderPanel a:hover {
 color:#CC6714;
 background-color: #F5F5F5; 
 }

.viewer .button, .editorFooter .button{
 color: #666;
 border: 1px solid #CC6714;
}

.viewer .button:hover, 
.editorFooter .button:hover{
 color: #fff;
 background: #CC6714;
 border-color: #CC6714;
}

.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{color:#fff; background:#575352;border-color:#575352;}


 #mainMenu a {
 display: block;
 padding: 5px;
 border-bottom: 1px solid #CCC;
 }

 #mainMenu a:link, #navlist a:visited {
 color:#CC6714;
 text-decoration: none;
 }
 
 #mainMenu a:hover {
 background: #000000 url(arrow.gif) 96% 50% no-repeat;
 background-color: #F5F5F5;
 color:#CC6714;
 }

#mainMenu br {display:none;}

#sidebarOptions a {
 color:#999;
 text-decoration: none;
 }

#sidebarOptions a:hover {
 color:#4F4B45;
 background-color: #F5F5F5;border:1px solid #fff;
 }

#sidebarOptions {line-height:1.4em;}

 .tiddler {
 padding-bottom: 40px;
 border-bottom: 1px solid #DDDDDD; 
 }
.title {color:#CC6633;}
.subtitle, .subtitle a { color: #999999; font-size: 1.0em;margin:0.2em;}
.shadow .title{color:#948979;}

.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#4F4B45; background:transparent;border:1px solid #fff;}

.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#4F4B45; background:transparent;border:1px solid #fff;}

 .listLink,#sidebarTabs .tabContents {line-height:1.5em;}
 .listTitle {color:#888;}

#sidebarTabs .tabContents {background:#fff;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#4F4B45;background:#fff}

#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#4F4B45;background:#fff}

.tabSelected{color:#fff; background:#948979;}

.tabUnselected {
 background: #ccc;
}

 .tabSelected, .tabSelected:hover {
 color: #fff;
 background: #948979;
 border: solid 1px #948979;
padding-bottom:1px;
}

 .tabUnselected {
 color: #999;
 background: #eee;
 border: solid 1px #ccc;
padding-bottom:1px;
}

#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}
#sidebarTabs .tabSelected{padding-bottom:3px;}


#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#4F4B45}

#sidebarOptions .sliderPanel {
 background: #fff; border:none;
 font-size: .9em;
}
#sidebarOptions .sliderPanel a {font-weight:normal;}
#sidebarOptions .sliderPanel input {border:1px solid #999;}

.viewer blockquote {
 border-left: 3px solid #948979;
}

.viewer table {
 border: 2px solid [[ColorPalette::TertiaryDark]];
}

.viewer th, thead td {
 background: #948979;
 border: 1px solid #948979;
 color: #fff;
}
.viewer pre {
 border: 1px solid #948979;
 background: #f5f5f5;
}

.viewer code {
 color: #2F2A29;
}

.viewer hr {
 border-top: dashed 1px #948979;
}

.editor input {
 border: 1px solid #948979;
}

.editor textarea {
 border: 1px solid #948979;
}

.popup {
 background: #948979;
 border: 1px solid #948979;
}

.popup li.disabled {
 color: #000;
}

.popup li a, .popup li a:visited {
 color: #eee;
 border: none;
}

.popup li a:hover {
 background: #575352;
 color: #fff;
 border: none;
}

.tagging, .tagged {
 border: 1px solid #eee;
 background-color: #F7F7F7;
}

.selected .tagging, .selected .tagged {
 background-color: #eee;
 border: 1px solid #BFBAB3;
}

 .tagging .listTitle, .tagged .listTitle {
 color: #bbb;
}

.selected .tagging .listTitle, .selected .tagged .listTitle {
 color: #666; 
}

.tagging .button, .tagged .button {
 color:#aaa;
}
.selected .tagging .button, .selected .tagged .button {
 color:#4F4B45;
}

.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}

.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
 border: none; background:transparent; text-decoration:underline; color:#000;
}

h1,h2,h3,h4,h5 { color: #666; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}

#messageArea {
 border: 4px solid #948979;
 background: #f5f5f5;
 color: #999;
 font-size:90%;
}

#messageArea a:hover { background:#f5f5f5;}

#messageArea .button{
 color: #666;
 border: 1px solid #CC6714;
}

#messageArea .button:hover {
 color: #fff;
 background: #948979;
 border-color: #948979;
}


* html .viewer pre {
 margin-left: 0em;
}

* html .editor textarea, * html .editor input {
 width: 98%;
}

.searchBar {float:right;font-size: 1.0em;}
.searchBar .button {color:#999;display:block;}
.searchBar .button:hover {border:1px solid #fff;color:#4F4B45;}
.searchBar input { 
 background-color: #FFF;
 color: #999999;
 border: 1px solid #CCC; margin-right:3px;
}

#sidebarOptions .button:active, #sidebarOptions .highlight {background:#F5F5F5;}

*html #contentFooter { padding:0.25em 1em 0.5em 1em;}

#noticeBoard {font-size: 0.9em; color:#999; position:relative;display:block;background:#fff; clear: both; margin-right:0.5em; margin-top:60px; padding:5px; border-bottom: 1px dotted #CCC; border-top: 1px dotted #CCC;}
#mainMenu #noticeBoard a,#mainMenu #noticeBoard .tiddlyLink {display:inline;border:none;padding:5px 2px;color:#DF9153 }
#noticeBoard a:hover {border:none;} 

#noticeBoard br {display:inline;}

#mainMenu #noticeBoard .button{
 color: #666;
 border: 1px solid #DF9153;padding:2px;
}

#mainMenu #noticeBoard .button:hover{
 color: #fff;
 background: #DF9153;
 border-color: #DF9153;
}
/*}}}*/
/%
!info
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarOptions)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebar##show
	with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<<<
Configuration:
<<<
{{{
config.options.chkShowRightSidebar (false)
config.options.txtToggleRightSideBarLabelShow (◄)
config.options.txtToggleRightSideBarLabelHide (►)
}}}
<<<
!end
!show
<<tiddler {{
	var co=config.options;
	if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
	var sb=document.getElementById('sidebar');
	var da=document.getElementById('displayArea');
	if (sb) {
		sb.style.display=co.chkShowRightSidebar?'block':'none';
		da.style.marginRight=co.chkShowRightSidebar?'':'1em';
	}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
	this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
	+encodeURIComponent(encodeURIComponent(this.onclick))
	+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
	var co=config.options;
	var opt='chkShowRightSidebar';
	var show=co[opt]=!co[opt];
	var sb=document.getElementById('sidebar');
	var da=document.getElementById('displayArea');
	if (sb) {
		sb.style.display=show?'block':'none';
		da.style.marginRight=show?'':'1em';
	}
	saveOptionCookie(opt);
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	if (this.innerHTML==labelShow||this.innerHTML==labelHide) 
		this.innerHTML=show?labelHide:labelShow;
	this.title=(show?'hide':'show')+' right sidebar';
	var sm=document.getElementById('storyMenu');
	if (sm) config.refreshers.content(sm);
	return false;
">$1</a></html>
!end
%/<<tiddler {{
	var src='ToggleRightSidebar';
	src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
	var co=config.options;
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	'$1'!='$'+'1'?'$1':(co.chkShowRightSidebar?labelHide:labelShow);
}} {{
	var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
	'$2'!='$'+'2'?'$2':tip;
}}>>
!! Context

The project was held at Renault’s [[Technical Center for Simulation|http://www.experts.renault.com/kemeny/]], in partnership with the [[Multi-Agents Systems and Behavior Team|http://www.lifl.fr/SMAC/]] of the [[Computer Science Laboratory of Lille|http://www.lifl.fr]]. One of the missions of the Technical Center for Simulation is to develop and use driving simulators for study and research. These simulators are used for experiments in ergonomics, validation of embedded systems, comfort, or for the design and the validation of car lightings systems. The objective is to improve the drivers’ security, while reducing costs and delays in vehicles development.

<html>
<center>
<object type="application/x-shockwave-flash" data="video/player_flv_maxi.swf" width="400px" height="300px">
     <param name="movie" value="player_flv_maxi.swf" />
     <param name="FlashVars" value="flv=traffic_generators_scaner.flv&amp;configxml=video/flv_config_maxi.xml" />
</object>
</center>
</html>
!! Issues

In simulators, the driver is immersed in a simulated traffic, which realism is crucial for the validity of the results: the more realistic the environment is perceived, the more significant the drivers' reactions are. The wide range of drivers’ behavior is an important criterion for this realism: on the road, we are used to meet aggressive drivers, careful ones, etc. 

In individual-centered approaches, like traffic simulation in our case, the agents' behavioral variety is an important realism criteria. The behaviors also have to be consistent: if aberrant situations appear, the simulation realism is strongly impacted. In this work, we adressed the issue of the simultaneous influence of these two elements. Furthermore, this work was led in an industrial context. This involved taking into account specific needs: the designed tools had to allow experts specifying various and consistent behaviors, and final users easily using them.

!! Results

In this work, we proposed a behavioral differentiation model, which provides the basis for a generic and non-intrusive tool allowing an out-of-the-agent design. The model involves three dimensions. First, it describes the agents' behaviors using norms. They provide a behavioral pattern during conception, and a compliance reference during execution. Then, the generation process of the behaviors allows the creation of deviant or violating agents, by influencing the determinism of the mechanism. Finally, the norms can be inferred from previous simulations records or real data, providing an analysis tool of the results and allowing automating the model configuration. 

We applied the model to the traffic simulation in [[SCANeR|http://www.scaner2.com]]&trade;, the driving simulation software developed and used at the Technical Center for Simulation of Renault. The developments carried out during the thesis introduced driving styles in the traffic (e.g. cautious or aggressive drivers) specified using norms. The behavioral realism of the traffic was improved, and the experimentations show how the model contributes to the variety and the representativeness of the produced behaviors. Today, the behavioral differentiation model is part of the commercial version of the driving simulation software.

!! Related publications

Lacroix B., Mathieu P. & Kemeny A. (2013). [[Formalizing the Construction of Populations in Multi-Agent Simulations|papers/construction_populations_eaai-13_lacroix.pdf]]. Engineering Applications of Artificial Intelligence, vol. 26, issue 1, p. 211–226.  //(also available: [[bibtex|papers/construction_populations_eaai-13_lacroix.bib]] and [[paper on ScienceDirect|http://www.sciencedirect.com/science/article/pii/S0952197612001078]])//

Lacroix B. & Mathieu M. (2012). [[Automated Generation of Various and Consistent Populations in Multi-Agent Simulations|papers/automated_population_paams-12_lacroix.pdf]]. In: Demazeau, Y., Muller, J., Corchado, J., & Bajo, J. (Eds.), 10th International Conference on Practical Applications of Agents and ~Multi-Agent Systems. Advances in Intelligent and Soft Computing, vol. 155, pp. 127-137. //(also available: [[presentation|papers/automated_population_paams-12_slides_lacroix.pdf]], [[paper on SpringerLink|http://www.springerlink.com/content/m10hw83678h20364/]])//

Lacroix, B., Mathieu, M., & Kemeny, A. (2009). [[Generating Various and Consistent Behaviors in Simulations.|papers/generating_behaviors_paams09_lacroix.pdf]] In: Demazeau, Y., Pavon, J., Corchado, J., & Bajo, J. (Eds.), 7th International Conference on Practical Applications of Agents and ~Multi-Agent Systems. Advances in Intelligent and Soft Computing, vol. 55, pp. 110-119, Springer.

Lacroix, B., Mathieu, P., & Kemeny, A. (2008). [[A Normative Model for Behavioral Differentiation.|papers/normative_model_iat08_lacroix.pdf]] In Proceedings of the IEEE/WIC/ACM International Conference on Intelligent Agent Technology, pp. 96-99, Sydney, Australia.

//In french:// Lacroix, B. (2009). [[Normer pour mieux varier ? La différenciation comportementale par les normes, et son application au trafic dans les simulateurs de conduite.|papers/thesis_lacroix_2009.pdf]] Ph.D. thesis, University of Lille, France.
Here are some details on my work experiences, also available in my [[resume|cv/cv_benoit_lacroix_en.pdf]].

!! Co-founder at Portmoni

2016-current, [[Portmoni|http://portmoni.com]] (Cape Town, South Africa)

Want to get paid with mobile money?

We help innovative companies harness the power of mobile money. With Portmoni, you can easily manage your customers, your billing and your mobile payments. Even better, you gain competitive advantages with real-time data analytics and portfolio management.

Visit us at [[http://portmoni.com]]!

!! Machine-to-machine and mobile money expert

2015-current, BL Consulting (Cape Town, South Africa)

Design and development of projects based on machine-to-machine connectivity such as Pay-As-You-Go solutions, and mobile money integration for micro-payments.

*[[SeeSaw|http://greenseesaw.com/]] (South-Africa): design and develop the technology for remote monitoring and mobile payment integration for water kiosks in Lilongwe, Malawi.
*[[SOLshare|http://www.me-solshare.com/]] (Bangladesh): advisor to the management team for mobile money integration and software design for decentralized micro-grids in Bangladesh; mentoring of the the development team on design, architecture and technology.
*[[Kamworks|http://www.kamworks.com]] (Cambodia): design and implementation of new features for the mobile payment and M2M platform; development of data mining and machine learning algorithms (predictive maintenance, automated troubleshooting, product usage) for solar home systems.


!! Manager innovative solar systems

2012-2015, [[Kamworks|http://www.kamworks.com]] (social business in solar energy, Phnom Penh, Cambodia)

Manage the solar systems and energy audits lines of business at Kamworks, one of the leading solar company in Cambodia, and contribute to the development of rural electrification projects.

__Responsibilities:__
* Develop the professional solar systems and energy audits lines of business
* Support the Board of Directors for strategic decisions
* Supervise and manage the team of project managers
* Manage key accounts (pre-sales and after-sales, relationship with key partners)
* Field studies and design of grid connected and off-grid solar systems: on-field site assessment and quotation of systems (10kWp to 1MWp)
* Energy efficiency consultancy: field audits, data analysis, reports writing, results presentation to customers
__Accomplishments:__
* Defined and implemented the IT systems supporting the deployment of 20,000 Solar Home Systems (based on an open-source CRM)
* Increased revenue per audit by 300% by increasing quality and customer relationship
* Designed new business development strategies and commercial offers for MoonLights solar lantern and Energy Audits
* Presented Kamworks strategy and energy efficiency activities at the Asian Clean Energy Forum 2013 (ACEF 2013)

!! Technical project leader in renewables energies

2010-2012 (1.5 years), [[CEA|http://www.cea.fr]], [[LIST|http://www-list.cea.fr]] (Paris Area, 6,000 persons, applied research center)
(French Atomic Energy and Alternative Energies Research Center) 

Led an applied research project on energy efficiency in buildings using new energy sources, including solar thermal collectors, heat pumps and solar PV. Applications: improve energy efficiency in homes, integration into the Smart Grid.

__Responsibilities:__
*Manage the collaborative project between the CEA and the French National Institute of Solar Energy (INES) : organize and lead meetings, establish user requirement specifications, define objectives and deadlines, evaluate the results
*Propose an innovative approach to optimize energy consumption in buildings using new energy sources such as solar thermal systems, solar PV and heat pumps
*Develop a prototype for a proof of concept based on the proposed approach (Java). Application to compact units providing heating, cooling and hot water in buildings
*Develop a procedure and train the clients on the new solution: design and organize workshops and presentation
*Contribute to grants applications within French and European research funding schemes
__Accomplishments:__
*Proposed a first solution to the clients in less than 4 months, using rapid prototyping
*Successful simulations led to the implementation on a physical test bench at INES
*Two scientific papers submitted in peer-reviewed international conferences, project featured in the CEA's corporate magazine, patent pending
[[More details|EnergyEfficiency]] on this project.

!! Applied research engineer

2006-2009 (3 years), [[RENAULT|http://www.renault.com]] , [[Technical Center for Simulation|http://www.experts.renault.com/kemeny]] (Paris Area, 9,000 persons, automotive industry)

Elaborated and developed an innovative traffic simulation model for Renault's driving simulators. Applications include drivers’ training to achieve more energy efficient driving behaviors and reduction in costs and delays in vehicles development.

__Technical skills:__ Developed innovative solutions to a fundamental and technological problem 
* implemented and improved artificial intelligence techniques in a virtual reality context
* developed 3 software modules (C++) now included in the [[business version of the software|http://ww.scaner2.com]]
* published 5 peer reviewed scientific papers, presented 6 papers in international conferences (see [[publications|Publications]])
* used to team-work development on huge and complex software (~1M lines, version control system)
__Project management skills:__  Supported the execution of a research project (3 years, 8 persons)
* managed the collaborative project between Renault, the company co-owning the software ([[Oktal|http://www.oktal.fr]]) and the [[Computer Sciences Laboratory of Lille|http://www.lifl.fr]]: organized and led meetings, followed-up collaboration contracts, defined objectives and deadlines, evaluated the results 
* initiated and coordinated collaborations with foreign partners ([[Italy|http://www.unina.it]], [[USA|http://www.prtassoc.com]])
__Management skills:__
* supervised various service suppliers contracts (40 k€/year), including specifications, project following, user acceptance testing, sign off on the deliverable
* managed Master's degree's student, including recruitment, training and evaluation
[[More details|TrafficSimulation]] on this project. 

!! Research engineer in artificial intelligence

2006 (6 months), [[Computer Sciences Laboratory of Lille|http://www.lifl.fr]] (Lille Area, 150 persons, research laboratory), in collaboration with [[Alstom|http://www.alstom.com]] (transportation industry) //(internship)//

Elaborated an innovative crowd simulation model. Applications: subway design, fire safety simulation

__Responsibilities:__
*Propose an innovative crowd simulation model
*Develop a software prototype demonstrating the approach (Java)
__Accomplishments:__
*Project selected by the industrial to pursue direct R&D investments
*Published 2 peer reviewed scientific papers as first author (see [[publications|Publications]])
[[More details|CrowdsSimulation]] on this project

!! Software engineer

2004-2005 (1 year 1 month), [[AUCHAN|http://www.auchan.com]], Human Ressources Information Systems (Lille, 200 persons, retail industry) //(gap year internship)//

__Responsabilities:__
* Support the deployment of a web-based integrated [[workforce management solution|http://www.amano-tcs.co.uk/pages/uk/our-solutions/workforce-management.php]] for the French and Luxembourgian regions (55,000 persons):
** France: in charge of the user acceptance testing and sign off on the deliverable for the employees' activities management project
** Luxembourg: elaborate the functional specifications, parameterize the integrated solution, and conduct the learning experience feedback to implement the project in company's other subsidiaries
* Design and develop a dynamic website for worldwide company users (administration of the Human Resources Datawarehouse, C#/~ASP.Net/~DB2).
__Accomplishments:__
*Responsible for the sign off on the deliverable for the French employees' activities management project
*Success of the Luxembourgian project led to a global deployment in the group
*Developed website currently used in 9 different countries
Created with [[TiddlyWiki|http://tiddlywiki.org]]  @@<<tiddler ToggleRightSidebar with:".">>@@
//{{{
//This ensures that the footer sticks to the bottom of the screen when there are no tiddlers open. If that is not desirable, it can be deleted.
function setFooter() {
         if (document.getElementById && document.getElementById("contentFooter") ) {
            var windowHeight=findWindowHeight();
         if (windowHeight>0) {
            var contentHeight= document.getElementById('mainMenu').offsetHeight + document.getElementById("header").offsetHeight + document.getElementById("contentFooter").offsetHeight;
            var menu= document.getElementById('mainMenu');
            if (windowHeight-(contentHeight)>=0) {
               menu.style.position='relative';
               menu.style.marginBottom=(windowHeight-(contentHeight))+'px';
               }
            else {
                 menu.style.position='';
                 menu.style.marginBottom='';
                 }
            }
         }
}
window.onresize = function() {
  setFooter();
}

Story.prototype.refreshTiddler_footerhack=Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function (title,template,force)
{    
var theTiddler = Story.prototype.refreshTiddler_footerhack.apply(this,arguments);
setFooter();
   return theTiddler;}

//}}}
if(config.options.txtUserName != "BenoitLacroix") {
    config.options.chkSinglePageMode = true;
    config.options.chkShowRightSidebar = false;
    readOnly = true;
    showBackstage = false;
}