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
<!--{{{-->
<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>>
<<importTiddlers>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
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]]
<!--{{{-->
<div class='header' role='banner' 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' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/*{{{*/
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]];}

.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]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#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:0; top:0;}

.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:0 3px 0 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:0; padding-bottom:0;}

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

.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='toolbar' role='navigation' 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>
<!--}}}-->
----
@@bgcolor(orange):lambdaCA: a Peer Learning Cellular Automaton@@
Philippe Collard
[[Cellular Automata Journal|http://www.oldcitypublishing.com/journals/jca-home//]], accepted, but not yet published
----
@@bgcolor(orange):The "Two's Company, Three's a Crowd" Game@@
Philippe Collard
[[Complex Systems journal|http://www.complex-systems.com/issues/26-3.html]], Volume 26, Issue 3, 2017 /%[<img[a|./cs25-3.png]]%/
----
@@bgcolor(orange):Information Dissemination in scale-free networks: Profusion versus Scarcity@@
Laurent Brisson, Philippe Collard, Martine Collard, Erick Stattner
International Conference on Complex Networks and Their Applications, ed. [[Springer Verlag| https://link.springer.com/book/10.1007/978-3-319-72150-7?page=5#toc]], pp. 911-920, 2017
----
@@bgcolor(orange):The ~Eternal-Return model of human mobility and its impact on information flow@@
Martine Collard, Philippe Collard, Erick Stattner
[[Graph Theoretic Approaches for Analyzing Large Scale Social Networks | http://www.igi-global.com/book/graph-theoretic-approaches-analyzing-large/178732]], 2017, ed. IGI
----
@@bgcolor(orange):Segregation Landscape: A new view on the Schelling segregation space@@
Philippe Collard, Teodor Ghetiu
[[Complex Systems journal|http://www.complex-systems.com/issues/25-3.html]], Volume 25, Issue 3, 2016 /%[<img[a|./cs25-3.png]]%/
----
@@bgcolor(orange):Emergence of Frontiers in networked Schelling segregationist models@@
Philippe Collard, Salma Mesmoudi, Teodor Ghetiu, and Fiona Polack
[[Complex Systems journal|http://www.complex-systems.com/issues/22-1.html]], Volume 22, Issue 1, 2013
----
@@bgcolor(yellow):Systèmes Complexes : une introduction par la pratique@@
Philippe Collard, [[Sébastien Verel|http://www-lisic.univ-littoral.fr/~verel/]], Manuel Clergue
[[Presses polytechniques et universitaires romandes|http://www.ppur.com/en/product/612/9782880749910/Systemes%20complexes]], Publisher of the EPFL Press, Lausanne,  [[ISBN : 978-2-88074-991-0|http://www.systemescomplexes.fr]], 306 pp, 2013
[[Préface]] [[Marco Tomassini|http://www.hec.unil.ch/people/mtomassini]] /%[<img[a|./couverturePPUR_V2.png]]%/
*Membre de la commission de réflexion et d'action du PRES euro-méditerranéen de l'UNS
*Expert auprès de ''l’Agence d’évaluation de la recherche et de l’enseignement supérieur'' ([[AERES|http://www.aeres-evaluation.fr/]]) (2008-2010)
*Directeur de ''l'Institut Universitaire professionnalisé MIAGE'' (2003-2008)
*Coordinateur de la Maitrise MIAGE (2001-2002)
*Membre du conseil de l'UFR sciences (2002-2005)
*Membre du Comité des Projets du laboratoire I3S (2002-2004)
*Membre de la Commission de Spécialistes 27ème section (2002-2004)
!1 -- Format des données
|!Option|!Syntaxe|!Résultat|!Anglais|h
|texte en gras|{{{''gras''}}}|''gras''|''bold''|
|texte en italique|{{{//italique//}}}|//italique//|//italic//|
|texte souligné|{{{__souligné__}}}|__souligné__|__underlined__|
|texte barré|{{{--barré--}}}|--barré--|--strikethrough--|
|texte mis en exposant|{{{texte^^exposant^^}}}|texte^^exposant^^|text^^super^^|
|texte mis en indice|{{{texte~~indice~~}}}|texte~~indice~~|text~~sub~~|
|texte mis en évidence|{{{@@mis en évidence@@}}}|@@mis en évidence@@|@@highlighted@@|
|texte en de taille fixe|{{{ {{{taille fixe}}} }}}|{{{taille fixe}}}|{{{monospaced}}}|
|texte bleu|{{{@@color:#00f;texte bleu@@}}}|@@color:#00f;texte bleu@@| .|
|fond vert|{{{@@bgcolor:#0f0;fond vert@@}}}|@@bgcolor:#0f0;fond vert@@| .|
/***
|''Name:''|AnnotationsPlugin|
|''Description:''|Inline annotations for tiddler text.|
|''Author:''|Saq Imtiaz ( <b style="color: black; background-color: rgb(160, 255, 255);">lewcid</b>@gmail.com )|
|''Source:''|http://tw.<b style="color: black; background-color: rgb(160, 255, 255);">lewcid</b>.org/#AnnotationsPlugin|
|''Code Repository:''|http://tw.<b style="color: black; background-color: rgb(160, 255, 255);">lewcid</b>.org/svn/plugins|
|''Version:''|2.0|
|''Date:''||
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|

!!Usage:
*{{{((text to annotate(annotation goes here)}}}
* To include the text being annotated, in the popup as a title, put {{{^}}} as the first letter of the annotation text.
** {{{((text to annotate(^annotation goes here)}}}

!!Examples:
Mouse over, the text below:
* ((banana(the best fruit in the world)))
* ((banana(^ the best fruit in the world)))

***/
// /%
config.formatters.unshift({name:"annotations",match:"\\(\\(",lookaheadRegExp:/\(\((.*?)\((\^?)((?:.|\n)*?)\)\)\)/g,handler:function(w){
this.lookaheadRegExp.lastIndex=w.matchStart;
var _2=this.lookaheadRegExp.exec(w.source);
if(_2&&_2.index==w.matchStart){
var _3=createTiddlyElement(w.output,"span",null,"annosub",_2[1]);
_3.anno=_2[3];
if(_2[2]){
_3.subject=_2[1];
}
_3.onmouseover=this.onmouseover;
_3.onmouseout=this.onmouseout;
_3.ondblclick=this.onmouseout;
w.nextMatch=_2.index+_2[0].length;
}
},onmouseover:function(e){
popup=createTiddlyElement(document.body,"div",null,"anno");
this.popup=popup;
if(this.subject){
wikify("!"+this.subject+"\n",popup);
}
wikify(this.anno,popup);
addClass(this,"annosubover");
Popup.place(this,popup,{x:25,y:7});
},onmouseout:function(e){
removeNode(this.popup);
this.popup=null;
removeClass(this,"annosubover");
}});
setStylesheet(".anno{position:absolute;border:2px solid #000;background-color:#DFDFFF; color:#000;padding:0.5em;max-width:15em;width:expression(document.body.clientWidth > (255/12) *parseInt(document.body.currentStyle.fontSize)?'15em':'auto' );}\n"+".anno h1, .anno h2{margin-top:0;color:#000;}\n"+".annosub{background:#ccc;}\n"+".annosubover{z-index:25; background-color:#DFDFFF;cursor:help;}\n","AnnotationStyles");


// %/
!
[<img[a|./couverturePPUR_V2.png]]
 ''Systèmes Complexes''
Philippe Collard, Sébastien Verel, Manuel Clergue
Editeur  [[Presses polytechniques et universitaires romandes|http://www.ppur.com/en/product/612/9782880749910/Systemes%20complexes]], Publisher of the EPFL Press, Lausanne,  [[ISBN : 978-2-88074-991-0|http://www.systemescomplexes.fr]], 306 pages








!
[<img[a|./couvertureSAP2005.gif]]
 ''Les automates cellulaires et le vivant''
[[La Science au Présent|http://www.universalis.fr/encyclopedie/automates-cellulaires/]] : complément annuel scientifique de l'Encyclopædia Universalis (ouvrage collectif)
Encyclopædia Universalis [[ISBN : 2-85229-512-1|http://www.universalis.fr/encyclopedie/automates-cellulaires/]]








!
[<img[a|./couvertureProlog.png]]
''Programmation Déclarative et Impérative en Prolog''
Editeur [[Masson|http://www.amazon.fr/Programmation-imp%C3%A9rative-programmation-d%C3%A9clarative-Prolog/dp/2225828091]], Collection Manuels Informatiques, Paris, [[ISBN : 2-225-82809-1 |http://books.google.fr/books/about/Programmation_d%C3%A9clarative_et_imp%C3%A9rativ.html?id=4pGGAAAAIAAJ]]









!
[<img[a|./couverturePSA.gif]]
''Programmation Structurée en Assembleur'' (~Intel-Motorola : 6502-80286-68000)
Editeur  [[Masson|http://www.amazon.fr/Programmation-structur%C3%A9e-assembleur-8086-80286/dp/2225813639]], Collection Manuels Informatiques, Paris, [[ISBN : 2-225-81363-9 |http://www.guideinformatique.com/livre-programmation_structuree_en_assembleur_8_086_et_80_286-4817.htm]]








!
! Auteur d'articles pour l'[[Encyclopædia Universalis|http://www.universalis.fr/auteurs/philippe-collard/]]
*[[''Vie Artificielle''||http://www.universalis.fr/encyclopedie/vie-artificielle/]]

*[[''Algorithmes Génétiques''|http://www.universalis.fr/encyclopedie/algorithmique/6-algorithmes-genetiques/]]
/***
|Name|CalendarPlugin|
|Source|http://www.TiddlyTools.com/#CalendarPlugin|
|Version|1.5.1|
|Author|Eric Shulman|
|Original Author|SteveRumsby|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Description|display monthly and yearly calendars|
NOTE: For //enhanced// date popup display, optionally install:
*[[DatePlugin]]
*[[ReminderMacros|http://remindermacros.tiddlyspot.com/]]
!!!Usage:
<<<
|{{{<<calendar>>}}}|full-year calendar for the current year|
|{{{<<calendar year>>}}}|full-year calendar for the specified year|
|{{{<<calendar year month>>}}}|one month calendar for the specified month and year|
|{{{<<calendar thismonth>>}}}|one month calendar for the current month|
|{{{<<calendar lastmonth>>}}}|one month calendar for last month|
|{{{<<calendar nextmonth>>}}}|one month calendar for next month|
|{{{<<calendar +n>>}}}<br>{{{<<calendar -n>>}}}|one month calendar for a month +/- 'n' months from now|
<<<
!!!Configuration:
<<<
|''First day of week:''<br>{{{config.options.txtCalFirstDay}}}|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|
|''First day of weekend:''<br>{{{config.options.txtCalStartOfWeekend}}}|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|

<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//
|''Week number display format:''<br>{{{config.options.txtWeekNumberDisplayFormat }}}|<<option txtWeekNumberDisplayFormat >>|
|''Week number link format:''<br>{{{config.options.txtWeekNumberLinkFormat }}}|<<option txtWeekNumberLinkFormat >>|
<<<
!!!Revisions
<<<
2011.01.04 1.5.1 corrected parameter handling for {{{<<calendar year>>}}} to show entire year instead of just first month.  In createCalendarMonthHeader(), fixed next/previous month year calculation (use parseInt() to convert to numeric value).  Code reduction (setting options).
2009.04.31 1.5.0 rewrote onClickCalendarDate() (popup handler) and added config.options.txtCalendarReminderTags.  Partial code reduction/cleanup.  Assigned true version number (1.5.0)
2008.09.10 added '+n' (and '-n') param to permit display of relative months (e.g., '+6' means 'six months from now', '-3' means 'three months ago'.  Based on suggestion from Jean.
2008.06.17 added support for config.macros.calendar.todaybg
2008.02.27 in handler(), DON'T set hard-coded default date format, so that *customized* value (pre-defined in config.macros.calendar.journalDateFmt is used.
2008.02.17 in createCalendarYear(), fix next/previous year calculation (use parseInt() to convert to numeric value).  Also, use journalDateFmt for date linking when NOT using [[DatePlugin]].
2008.02.16 in createCalendarDay(), week numbers now created as TiddlyLinks, allowing quick creation/navigation to 'weekly' journals (based on request from Kashgarinn)
2008.01.08 in createCalendarMonthHeader(), 'month year' heading is now created as TiddlyLink, allowing quick creation/navigation to 'month-at-a-time' journals
2007.11.30 added 'return false' to onclick handlers (prevent IE from opening blank pages)
2006.08.23 added handling for weeknumbers (code supplied by Martin Budden (see 'wn**' comment marks).  Also, incorporated updated by Jeremy Sheeley to add caching for reminders (see [[ReminderMacros]], if installed)
2005.10.30 in config.macros.calendar.handler(), use 'tbody' element for IE compatibility.  Also, fix year calculation for IE's getYear() function (which returns '2005' instead of '105'). Also, in createCalendarDays(), use showDate() function (see [[DatePlugin]], if installed) to render autostyled date with linked popup.  Updated calendar stylesheet definition: use .calendar class-specific selectors, add text centering and margin settings
2006.05.29 added journalDateFmt handling
<<<
!!!Code
***/
//{{{
version.extensions.CalendarPlugin= { major: 1, minor: 5, revision: 1, date: new Date(2011,1,4)};

// COOKIE OPTIONS
var opts={
	txtCalFirstDay:				0,
	txtCalStartOfWeekend:		5,
	chkDisplayWeekNumbers:		false,
	txtCalFirstDay:				0,
	txtWeekNumberDisplayFormat:	'w0WW',
	txtWeekNumberLinkFormat:	'YYYY-w0WW',
	txtCalendarReminderTags:		'reminder'
};
for (var id in opts) if (config.options[id]===undefined) config.options[id]=opts[id];

// INTERNAL CONFIGURATION
config.macros.calendar = {
	monthnames:['Jan','Feb','Mar','Avr','Mai','Jun','Jul','Aout','Sep','Oct','Nov','Dec'],
	daynames:['L','Ma','Me','J','V','S','D'],
	todaybg:'#ccccff',
	weekendbg:'#c0c0c0',
	monthbg:'#e0e0e0',
	holidaybg:'#ffc0c0',
	journalDateFmt:'DD MMM YYYY',
	monthdays:[31,28,31,30,31,30,31,31,30,31,30,31],
	holidays:[ ] // for customization see [[CalendarPluginConfig]]
};
//}}}
//{{{
function calendarIsHoliday(date)
{
	var longHoliday = date.formatString('0DD/0MM/YYYY');
	var shortHoliday = date.formatString('0DD/0MM');
	for(var i = 0; i < config.macros.calendar.holidays.length; i++) {
		if(   config.macros.calendar.holidays[i]==longHoliday
		   || config.macros.calendar.holidays[i]==shortHoliday)
			return true;
	}
	return false;
}
//}}}
//{{{
config.macros.calendar.handler = function(place,macroName,params) {
	var calendar = createTiddlyElement(place, 'table', null, 'calendar', null);
	var tbody = createTiddlyElement(calendar, 'tbody');
	var today = new Date();
	var year = today.getYear();
	if (year<1900) year+=1900;

 	// get journal format from SideBarOptions (ELS 5/29/06 - suggested by MartinBudden)
	var text = store.getTiddlerText('SideBarOptions');
	var re = new RegExp('<<(?:newJournal)([^>]*)>>','mg'); var fm = re.exec(text);
	if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }

	var month=-1;
	if (params[0] == 'thismonth') {
		var month=today.getMonth();
	} else if (params[0] == 'lastmonth') {
		var month = today.getMonth()-1; if (month==-1) { month=11; year--; }
	} else if (params[0] == 'nextmonth') {
		var month = today.getMonth()+1; if (month>11) { month=0; year++; }
	} else if (params[0]&&'+-'.indexOf(params[0].substr(0,1))!=-1) {
		var month = today.getMonth()+parseInt(params[0]);
		if (month>11) { year+=Math.floor(month/12); month%=12; };
		if (month<0)  { year+=Math.floor(month/12); month=12+month%12; }
	} else if (params[0]) {
		year = params[0];
		if(params[1]) {
			month=parseInt(params[1])-1;
			if (month>11) month=11; if (month<0) month=0;
		}
	}

	if (month!=-1) {
		cacheReminders(new Date(year, month, 1, 0, 0), 31);
		createCalendarOneMonth(tbody, year, month);
	} else {
		cacheReminders(new Date(year, 0, 1, 0, 0), 366);
		createCalendarYear(tbody, year);
	}
	window.reminderCacheForCalendar = null;
}
//}}}
//{{{
// cache used to store reminders while the calendar is being rendered
// it will be renulled after the calendar is fully rendered.
window.reminderCacheForCalendar = null;
//}}}
//{{{
function cacheReminders(date, leadtime)
{
	if (window.findTiddlersWithReminders == null) return;
	window.reminderCacheForCalendar = {};
	var leadtimeHash = [];
	leadtimeHash [0] = 0;
	leadtimeHash [1] = leadtime;
	var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);
	for(var i = 0; i < t.length; i++) {
		//just tag it in the cache, so that when we're drawing days, we can bold this one.
		window.reminderCacheForCalendar[t[i]['matchedDate']] = 'reminder:' + t[i]['params']['title']; 
	}
}
//}}}
//{{{
function createCalendarOneMonth(calendar, year, mon)
{
	var row = createTiddlyElement(calendar, 'tr');
	createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon]+' '+year, true, year, mon);
	row = createTiddlyElement(calendar, 'tr');
	createCalendarDayHeader(row, 1);
	createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}
//{{{
function createCalendarMonth(calendar, year, mon)
{
	var row = createTiddlyElement(calendar, 'tr');
	createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon]+' '+ year, false, year, mon);
	row = createTiddlyElement(calendar, 'tr');
	createCalendarDayHeader(row, 1);
	createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}
//{{{
function createCalendarYear(calendar, year)
{
	var row;
	row = createTiddlyElement(calendar, 'tr');
	var back = createTiddlyElement(row, 'td');
	var backHandler = function() {
		removeChildren(calendar);
		createCalendarYear(calendar, parseInt(year)-1);
		return false; // consume click
	};
	createTiddlyButton(back, '<', 'Previous year', backHandler);
	back.align = 'center';
	var yearHeader = createTiddlyElement(row, 'td', null, 'calendarYear', year);
	yearHeader.align = 'center';
	yearHeader.setAttribute('colSpan',config.options.chkDisplayWeekNumbers?22:19);//wn**
	var fwd = createTiddlyElement(row, 'td');
	var fwdHandler = function() {
		removeChildren(calendar);
		createCalendarYear(calendar, parseInt(year)+1);
		return false; // consume click
	};
	createTiddlyButton(fwd, '>', 'Next year', fwdHandler);
	fwd.align = 'center';
	createCalendarMonthRow(calendar, year, 0);
	createCalendarMonthRow(calendar, year, 3);
	createCalendarMonthRow(calendar, year, 6);
	createCalendarMonthRow(calendar, year, 9);
}
//}}}
//{{{
function createCalendarMonthRow(cal, year, mon)
{
	var row = createTiddlyElement(cal, 'tr');
	createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);
	createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);
	createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);
	row = createTiddlyElement(cal, 'tr');
	createCalendarDayHeader(row, 3);
	createCalendarDayRows(cal, year, mon);
}
//}}}
//{{{
function createCalendarMonthHeader(cal, row, name, nav, year, mon)
{
	var month;
	if (nav) {
		var back = createTiddlyElement(row, 'td');
		back.align = 'center';
		back.style.background = config.macros.calendar.monthbg;

		var backMonHandler = function() {
			var newyear = year;
			var newmon = mon-1;
			if(newmon == -1) { newmon = 11; newyear = parseInt(newyear)-1;}
			removeChildren(cal);
			cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
			createCalendarOneMonth(cal, newyear, newmon);
			return false; // consume click
		};
		createTiddlyButton(back, '<', 'Previous month', backMonHandler);
		month = createTiddlyElement(row, 'td', null, 'calendarMonthname')
		createTiddlyLink(month,name,true);
		month.setAttribute('colSpan', config.options.chkDisplayWeekNumbers?6:5);//wn**
		var fwd = createTiddlyElement(row, 'td');
		fwd.align = 'center';
		fwd.style.background = config.macros.calendar.monthbg; 

		var fwdMonHandler = function() {
			var newyear = year;
			var newmon = mon+1;
			if(newmon == 12) { newmon = 0; newyear = parseInt(newyear)+1;}
			removeChildren(cal);
			cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
			createCalendarOneMonth(cal, newyear, newmon);
			return false; // consume click
		};
		createTiddlyButton(fwd, '>', 'Next month', fwdMonHandler);
	} else {
		month = createTiddlyElement(row, 'td', null, 'calendarMonthname', name)
		month.setAttribute('colSpan',config.options.chkDisplayWeekNumbers?8:7);//wn**
	}
	month.align = 'center';
	month.style.background = config.macros.calendar.monthbg;
}
//}}}
//{{{
function createCalendarDayHeader(row, num)
{
	var cell;
	for(var i = 0; i < num; i++) {
		if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, 'td');//wn**
		for(var j = 0; j < 7; j++) {
			var d = j + (config.options.txtCalFirstDay - 0);
			if(d > 6) d = d - 7;
			cell = createTiddlyElement(row, 'td', null, null, config.macros.calendar.daynames[d]);
			if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))
				cell.style.background = config.macros.calendar.weekendbg;
		}
	}
}
//}}}
//{{{
function createCalendarDays(row, col, first, max, year, mon) {
	var i;
	if (config.options.chkDisplayWeekNumbers){
		if (first<=max) {
			var ww = new Date(year,mon,first);
			var td=createTiddlyElement(row, 'td');//wn**
			var link=createTiddlyLink(td,ww.formatString(config.options.txtWeekNumberLinkFormat),false);
			link.appendChild(document.createTextNode(
				ww.formatString(config.options.txtWeekNumberDisplayFormat)));
		}
		else createTiddlyElement(row, 'td');//wn**
	}
	for(i = 0; i < col; i++)
		createTiddlyElement(row, 'td');
	var day = first;
	for(i = col; i < 7; i++) {
		var d = i + (config.options.txtCalFirstDay - 0);
		if(d > 6) d = d - 7;
		var daycell = createTiddlyElement(row, 'td');
		var isaWeekend=((d==(config.options.txtCalStartOfWeekend-0)
			|| d==(config.options.txtCalStartOfWeekend-0+1))?true:false);
		if(day > 0 && day <= max) {
			var celldate = new Date(year, mon, day);
			// ELS 10/30/05 - use <<date>> macro's showDate() function to create popup
			// ELS 05/29/06 - use journalDateFmt 
			if (window.showDate) showDate(daycell,celldate,'popup','DD',
				config.macros.calendar.journalDateFmt,true, isaWeekend);
			else {
				if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;
				var title = celldate.formatString(config.macros.calendar.journalDateFmt);
				if(calendarIsHoliday(celldate))
					daycell.style.background = config.macros.calendar.holidaybg;
				var now=new Date();
				if ((now-celldate>=0) && (now-celldate<86400000)) // is today?
					daycell.style.background = config.macros.calendar.todaybg;
				if(window.findTiddlersWithReminders == null) {
					var link = createTiddlyLink(daycell, title, false);
					link.appendChild(document.createTextNode(day));
				} else
					var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);
			}
		}
		day++;
	}
}
//}}}
//{{{
// Create a pop-up containing:
// * a link to a tiddler for this date
// * a 'new tiddler' link to add a reminder for this date
// * links to current reminders for this date
// NOTE: this code is only used if [[ReminderMacros]] is installed AND [[DatePlugin]] is //not// installed.
function onClickCalendarDate(ev) { ev=ev||window.event;
	var d=new Date(this.getAttribute('title')); var date=d.formatString(config.macros.calendar.journalDateFmt);
	var p=Popup.create(this);  if (!p) return;
	createTiddlyLink(createTiddlyElement(p,'li'),date,true);
	var rem='\\n\\<\\<reminder day:%0 month:%1 year:%2 title: \\>\\>';
	rem=rem.format([d.getDate(),d.getMonth()+1,d.getYear()+1900]);
	var cmd="<<newTiddler label:[[new reminder...]] prompt:[[add a new reminder to '%0']]"
		+" title:[[%0]] text:{{store.getTiddlerText('%0','')+'%1'}} tag:%2>>";
	wikify(cmd.format([date,rem,config.options.txtCalendarReminderTags]),p);
	createTiddlyElement(p,'hr');
	var t=findTiddlersWithReminders(d,[0,31],null,1);
	for(var i=0; i<t.length; i++) {
		var link=createTiddlyLink(createTiddlyElement(p,'li'), t[i].tiddler, false);
		link.appendChild(document.createTextNode(t[i]['params']['title']));
	}
	Popup.show(); ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return false;
}
//}}}
//{{{
function calendarMaxDays(year, mon)
{
	var max = config.macros.calendar.monthdays[mon];
	if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) max++;
	return max;
}
//}}}
//{{{
function createCalendarDayRows(cal, year, mon)
{
	var row = createTiddlyElement(cal, 'tr');
	var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
	if(first1 < 0) first1 = first1 + 7;
	var day1 = -first1 + 1;
	var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
	if(first2 < 0) first2 = first2 + 7;
	var day2 = -first2 + 1;
	var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
	if(first3 < 0) first3 = first3 + 7;
	var day3 = -first3 + 1;

	var max1 = calendarMaxDays(year, mon);
	var max2 = calendarMaxDays(year, mon+1);
	var max3 = calendarMaxDays(year, mon+2);

	while(day1 <= max1 || day2 <= max2 || day3 <= max3) {
		row = createTiddlyElement(cal, 'tr');
		createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
		createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;
		createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;
	}
}
//}}}
//{{{
function createCalendarDayRowsSingle(cal, year, mon)
{
	var row = createTiddlyElement(cal, 'tr');
	var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
	if(first1 < 0) first1 = first1+ 7;
	var day1 = -first1 + 1;
	var max1 = calendarMaxDays(year, mon);
	while(day1 <= max1) {
		row = createTiddlyElement(cal, 'tr');
		createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
	}
}
//}}}
//{{{
setStylesheet('.calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }', 'calendarStyles');
//}}}
/***
| Name:|Clock2|
| Author:|Simon Baird|
| Description:|A skinnable, sizeable analog clock|
| Source:|http://tiddlyspot.com/mptw/#Clock2|
| Requires:|Firefox 1.5.x or maybe Safari|
| Version:|1.0.6|
| Date:|8-Jul-2008|
!!Note
* Does not work in IE or Opera due to lack of canvas support.
* If you make a nice skin send it to me and I will include it here.
*I'm not actively maintaining this plugin
* See also http://randomibis.com/coolclock/
!!Ideas
* Can we support IE with this? http://sourceforge.net/projects/excanvas
* Skin should specify order of drawing so things can be on top of other things
* Fix it so we can have filled and/or stroked elements
* Skin should allow any number of moving and static elements
* Make download and example for non-TW use
* Make floating draggable?
!!Examples
{{{
<<clock2 fancy>><<clock2 120>>
<<clock2 chunkySwiss>> <<clock2 60 chunkySwiss noSeconds>><<clock2 '{
	outerBorder: { lineWidth: 60, radius:55, color: "#dd8877", alpha: 1 },
	smallIndicator: { lineWidth: 4, startAt: 80, endAt: 95, color: "white", alpha: 1 },
	largeIndicator: { lineWidth: 12, startAt: 77, endAt: 89, color: "#dd8877", alpha: 1 },
	hourHand: { lineWidth: 15, startAt: -15, endAt: 50, color: "white", alpha: 1 },
	minuteHand: { lineWidth: 10, startAt: 24, endAt: 200, color: "#771100", alpha: 0.6 },
	secondHand: { lineWidth: 3, startAt: 22, endAt: 83, color: "green", alpha: 0 },
	secondDecoration: { lineWidth: 1, startAt: 52, radius: 26, fillColor: "white", color: "red", alpha: 0.2 }
}'>>

}}}
<<clock2 fancy>><<clock2 120>>
<<clock2 chunkySwiss>> <<clock2 60 chunkySwiss noSeconds>><<clock2 '{
	outerBorder: { lineWidth: 60, radius:55, color: "#dd8877", alpha: 1 },
	smallIndicator: { lineWidth: 4, startAt: 80, endAt: 95, color: "white", alpha: 1 },
	largeIndicator: { lineWidth: 12, startAt: 77, endAt: 89, color: "#dd8877", alpha: 1 },
	hourHand: { lineWidth: 15, startAt: -15, endAt: 50, color: "white", alpha: 1 },
	minuteHand: { lineWidth: 10, startAt: 24, endAt: 200, color: "#771100", alpha: 0.6 },
	secondHand: { lineWidth: 3, startAt: 22, endAt: 83, color: "green", alpha: 0 },
	secondDecoration: { lineWidth: 1, startAt: 52, radius: 26, fillColor: "white", color: "red", alpha: 0.2 }
}'>>

See also BigClock.
!!Code
***/
//{{{

window.CoolClock = function(canvasId,displayRadius,skinId,showSecondHand) {
	return this.init(canvasId,displayRadius,skinId,showSecondHand);
}

CoolClock.config = {
	clockTracker: {},
	tickDelay: 1000,
	longTickDelay: 15000,
	defaultRadius: 85,
	renderRadius: 100,
	defaultSkin: "swissRail",
	skins:	{
		// try making your own...
		swissRail: {
			outerBorder: { lineWidth: 1, radius:95, color: "black", alpha: 1 },
			smallIndicator: { lineWidth: 2, startAt: 89, endAt: 93, color: "black", alpha: 1 },
			largeIndicator: { lineWidth: 4, startAt: 80, endAt: 93, color: "black", alpha: 1 },
			hourHand: { lineWidth: 8, startAt: -15, endAt: 50, color: "black", alpha: 1 },
			minuteHand: { lineWidth: 7, startAt: -15, endAt: 75, color: "black", alpha: 1 },
			secondHand: { lineWidth: 1, startAt: -20, endAt: 85, color: "red", alpha: 1 },
			secondDecoration: { lineWidth: 1, startAt: 70, radius: 4, fillColor: "red", color: "red", alpha: 1 }
		},
		chunkySwiss: {
			outerBorder: { lineWidth: 5, radius:97, color: "black", alpha: 1 },
			smallIndicator: { lineWidth: 4, startAt: 89, endAt: 93, color: "black", alpha: 1 },
			largeIndicator: { lineWidth: 8, startAt: 80, endAt: 93, color: "black", alpha: 1 },
			hourHand: { lineWidth: 12, startAt: -15, endAt: 60, color: "black", alpha: 1 },
			minuteHand: { lineWidth: 10, startAt: -15, endAt: 85, color: "black", alpha: 1 },
			secondHand: { lineWidth: 4, startAt: -20, endAt: 85, color: "red", alpha: 1 },
			secondDecoration: { lineWidth: 2, startAt: 70, radius: 8, fillColor: "red", color: "red", alpha: 1 }
		},
		fancy: {
			outerBorder: { lineWidth: 5, radius:95, color: "green", alpha: 0.7 },
			smallIndicator: { lineWidth: 1, startAt: 80, endAt: 93, color: "black", alpha: 0.4 },
			largeIndicator: { lineWidth: 1, startAt: 30, endAt: 93, color: "black", alpha: 0.5 },
			hourHand: { lineWidth: 8, startAt: -15, endAt: 50, color: "blue", alpha: 0.7 },
			minuteHand: { lineWidth: 7, startAt: -15, endAt: 92, color: "red", alpha: 0.7 },
			secondHand: { lineWidth: 10, startAt: 80, endAt: 85, color: "blue", alpha: 0.3 },
			secondDecoration: { lineWidth: 1, startAt: 30, radius: 50, fillColor: "blue", color: "red", alpha: 0.15 }
		}
	}
};

CoolClock.prototype = {
	init: function(canvasId,displayRadius,skinId,showSecondHand) {
		this.canvasId = canvasId;
		this.displayRadius = displayRadius || CoolClock.config.defaultRadius;
		this.skinId = skinId || CoolClock.config.defaultSkin;
		this.showSecondHand = typeof showSecondHand == "boolean" ? showSecondHand : true;
		this.tickDelay = CoolClock.config[ this.showSecondHand ? "tickDelay" : "longTickDelay"];

		this.canvas = document.getElementById(canvasId);
		this.canvas.setAttribute("width",this.displayRadius*2);
		this.canvas.setAttribute("height",this.displayRadius*2);

		this.renderRadius = CoolClock.config.renderRadius; 

		var scale = this.displayRadius / this.renderRadius;
		this.ctx = this.canvas.getContext("2d");
		this.ctx.scale(scale,scale);

		CoolClock.config.clockTracker[canvasId] = this;
		this.tick();
		return this;
	},

	fullCircle: function(skin) {
		this.fullCircleAt(this.renderRadius,this.renderRadius,skin);
	},

	fullCircleAt: function(x,y,skin) {
		with (this.ctx) {
			save();
			globalAlpha = skin.alpha;
			lineWidth = skin.lineWidth;
			if (!document.all)
				beginPath();
			arc(x, y, skin.radius, 0, 2*Math.PI, false);
			if (skin.fillColor) {
				fillStyle = skin.fillColor
				fill();
			}
			else {
				// XXX why not stroke and fill
				strokeStyle = skin.color;
				stroke();
			}
			restore();
		}
	},

	radialLineAtAngle: function(angleFraction,skin) {
		with (this.ctx) {
			save();
			translate(this.renderRadius,this.renderRadius);
			rotate(Math.PI * (2 * angleFraction - 0.5));
			globalAlpha = skin.alpha;
			strokeStyle = skin.color;
			lineWidth = skin.lineWidth;
			if (skin.radius) {
				this.fullCircleAt(skin.startAt,0,skin)
			}
			else {
				beginPath();
				moveTo(skin.startAt,0)
				lineTo(skin.endAt,0);
				stroke();
			}
			restore();
		}
	},

	render: function(hour,min,sec) {
		var skin = CoolClock.config.skins[this.skinId];
		this.ctx.clearRect(0,0,this.renderRadius*2,this.renderRadius*2);

		this.fullCircle(skin.outerBorder);

		for (var i=0;i<60;i++)
			this.radialLineAtAngle(i/60,skin[ i%5 ? "smallIndicator" : "largeIndicator"]);
				
		this.radialLineAtAngle((hour+min/60)/12,skin.hourHand);
		this.radialLineAtAngle((min+sec/60)/60,skin.minuteHand);
		if (this.showSecondHand) {
			this.radialLineAtAngle(sec/60,skin.secondHand);
			this.radialLineAtAngle(sec/60,skin.secondDecoration);
		}
	},


	nextTick: function() {
		setTimeout("CoolClock.config.clockTracker['"+this.canvasId+"'].tick()",this.tickDelay);
	},

	stillHere: function() {
		return document.getElementById(this.canvasId) != null;
	},

	refreshDisplay: function() {
		var now = new Date();
		this.render(now.getHours(),now.getMinutes(),now.getSeconds());
	},

	tick: function() {
		if (this.stillHere()) {
			this.refreshDisplay()
			this.nextTick();
		}
	}
}



config.macros.clock2 = {
	counter: 0,
	handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		var size,skin,seconds,skinData;
		for (var i=0;i<params.length;i++)
			if (/^\d+$/.exec(params[i]))
				size = params[i];
			else if (params[i] == "noSeconds")
				seconds = false;
			else if (/^\{/.exec(params[i]))
				eval("skinData = " + params[i]);
			else
				skin = params[i];
		if (skinData) {
			CoolClock.config.skins.customSkin = skinData;
			skin = "customSkin";
		}
		var canvas = createTiddlyElement(place,"canvas","clockcanvas"+this.counter);
		var clock = new CoolClock("clockcanvas"+this.counter,size,skin,seconds);
		this.counter++;
	}
}

//}}}
<<tag interface>> <<tag syntaxe>>
@@bgcolor(orange):Semaine <<today 0WW>>/52@@
> Licence
>> [[L2 informatique|L2 Informatique]]
>> [[L3 informatique|L3 Informatique]]
>> [[L3 MASS|L3 MASS]]
> Master
>> [[M1 Informatique]]
>> [[M2 Informatique]]
>> [[M2 MIAGE]]
/%* [[L3 MIAGE|Licence MIAGE]]%/
[[.]]
[[Cours & Travaux Pratiques]]
[[Publications 2011-2017]]


void
<div class='toolbar' macro='toolbar +saveTiddler
-cancelTiddler deleteTiddler'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div class="editLabel"> </div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span
macro='message views.editor.tagPrompt'></span><span
macro='tagChooser'></span></div>
<div class='editor' macro='edit text'></div>
@@color(blue):Me Contacter au [[Département Informatique]]@@ ([[UNSA|http://portail.unice.fr/jahia/jsp/index.jsp]])
/***
|Name|FullScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#FullScreenPlugin|
|Version|1.1|
|Requires|~TW2.x|
!Description:
Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.

!Demo:
Click the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.

!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Edit the ViewTemplate to add the fullscreen command to the toolbar.

!History:
*25-07-06: ver 1.1
*20-07-06: ver 1.0

!Code
***/
//{{{
var lewcidFullScreen = false;

config.commands.fullscreen =
{
            text:"FullScreen",
            tooltip:"Fullscreen mode"
};

config.commands.fullscreen.handler = function (event,src,title)
{
            if (lewcidFullScreen == false)
               {
                lewcidFullScreen = true;
                setStylesheet('#sidebar, .header ,  #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");
               }
            else
               {
                lewcidFullScreen = false;
                setStylesheet(' ',"lewcidFullScreenStyle");
               }
}

config.macros.fullscreen={};
config.macros.fullscreen.handler =  function(place,macroName,params,wikifier,paramString,tiddler)
{
        var label = params[0]||" «Screen» ";
        var tooltip = params[1]||"Fullscreen mode";
        createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);
}

var lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler =function(title,animate,slowly)
{
           lewcid_fullscreen_closeTiddler.apply(this,arguments);
           if (story.isEmpty() && lewcidFullScreen == true)
              config.commands.fullscreen.handler();
}


Slider.prototype.lewcidStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{
           this.lewcidStop();
           if (story.isEmpty() && lewcidFullScreen == true)
              config.commands.fullscreen.handler();
}
//}}}

*You can create ''Bold'' text by enclosing it in pairs of single quotes ('''')
*You can create ==Strikethrough== text by enclosing it in pairs of equal signs (====)
*You can __Underline__ text by enclosing it in pairs of underscores (____)
*You can create //Italic// text by enclosing it in pairs of forward slashes (////)
*You can create ^^superscript^^ text by enclosing it in pairs of carrats (^^^^)
*You can create ~~subscript~~ text by enclosing it in pairs of tildes (~~~~)
*You can change the text's @@color(green):color@@ by enclosing it in pairs of at-signs (@@@@) and specifying a text color using the phrase ''color(yourcolorhere):''
*You can change the text's @@bgcolor(red):background color@@ by enclosing it in pairs of at-signs (@@@@) and specifying a background text color using the phrase ''bgcolor(yourcolorhere):''
! [[Projet Scientifique]]

! [[IA-Prolog|./_enseignement_fichiers/licenceInfo/prolog/td.html]]

! [[Introduction Systèmes Complexes|Licence 3/Informatique/Introduction Systèmes Complexes]]
! @@[[Programmation Orientée Objet|Licence 3/MASS/Programmation Orientée Objet]]@@

! [[Programmation Orientée Agent|Licence 3/MASS/Programmation Orientée Agent]]

! [[Programmation C|Licence 3/MASS/Programmation C]]
''EVALUATION''
*__CONTROLE TERMINAL__ (50%) : @@26 avril 13h30 salle 313 - sans document.@@ 
*__PROJET en BINOME__ (25%) :  A rendre au plus tard le @@ 06 mai 2018 @@ [[Cliquer ICI pour envoyer par courriel le rapport (.pdf) et le code (.nlogo)| mailto: philippe.collard@gmail.com]] 
*__Travail TDM__ (25%)

! --1. Introduction aux Systèmes Complexes--
>[[Introduction|./_enseignement_fichiers/licenceInfo/IntroSC/introduction/introduction.pdf]]
>[[Programmation NetLogo|./_enseignement_fichiers/licenceInfo/IntroSC/progNetLogo/ProgrammationNetLogo.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/progNetLogo/IntroNetLogo.html]]
! --2. Automate cellulaire (1D et 2D) --
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/AC/AC.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/AC/AC.html]]
! --3. Morphogénèse : Modèle du "French Flag" & Modèle de réaction-diffusion de Turing--
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/morphogenese1/morphogenese.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/morphogenese1/TP-Morphogenese.html]]
! 4. --Chaos déterministe--
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/chaos/chaos.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/chaos/TP-logistique.html]]
! 5.--Propagation d'une épidémie--
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/epidemie/epidemie.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/epidemie/TP-epidemie.html]]
! 6- --Intelligence collective--
>[[COURS|./_enseignement_fichiers//licenceInfo/IntroSC/IC/cours-ic.pdf]]
>[[TP|./_enseignement_fichiers//licenceInfo/IntroSC/IC/TP-ic.html]]
! 7.--Modèle socio-économique de Bass--
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/bass/bass-etudiant.pdf]]
>[[MOOC|./_enseignement_fichiers/licenceInfo/IntroSC/bass/Bass-Model-coursera.mp4]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/bass/TP-bass.html]]
! 8. --Modèle de Schelling--
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/schelling3/micro-macro.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/schelling3/tp-schelling.html]]
! 9. --Modèle d'apprentissage (Peer Learning)--
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/bass/bass-etudiant.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/apprentissage/TP-peer-learning.html]]
! 10. --Modèle de Schelling 3D (colocation)--
! 11. --(12 avril) Mobilité des piétons dans une ville (modèle de Manhattan)--

! 12. (19 avril) Préparation projet
! 13. (26 avril) __CONTROLE TERMINAL__  : @@14h-15h30 salle 313 - sans document.@@


! Projet : 
il s'agit de reprendre le modèle d'apprentissage (c.f. séance 9) et de le reformuler sous la forme d'un automate cellulaire (c.f  séance 2).
En d'autres temes, on représentera l'historique du système d'apprentissage (peer learning) par un ''diagramme espace-temps'' ; l'axe horizontal représentant la ligne d'automates et l'axe vertical le temps.
* Question 1 : reprendre la question 1 de la séance 9
* Question 2 : répondre à la question 2 de la séance 9
** A chaque étape (tick), un étudiant peut progresser par lui-même (i.e. sans aide) d'un niveau avec une probabilité {{{p}}}.
** A chaque étape, un étudiant qui n'a pas progressé par lui-même, peut progresser d'un niveau avec l'aide de ses voisins immédiat avec une probabilité {{{q}}} pondérée par le nombre de voisins qui peuvent l'aider.
** Un étudiant {{{i}}} de niveau {{{level_i}}} ne peut se faire aider que par un voisin {{{j}}} de niveau {{{level_j}}} si et seulement si {{{level_i<level_j<=level_i+delta}}} ; où {{{delta}}} est une variable globale implémentée par un slider.
* Question 3 : proposer une stratégie afin qu'un "décrocheur" puisse échanger sa place avec un "non-docrocheur" ; vous devez montrer  grace aux simulations que votre stratégie améliore notablement le {{{mean-learning-time}}} et le {{{sd-learning-time}}}.


/%
! @@NEW@@ 27 avril : deadline rendu du [[projet|./_enseignement_fichiers/licenceInfo/IntroSC/projet/2017/projet2017.html]]

/%
! 2. Procession +  + présentation du [[projet|./_enseignement_fichiers/licenceInfo/IntroSC/projet/2016/projet2016.html]]
>[[cours-TP|./_enseignement_fichiers/licenceInfo/IntroSC/procession/procession2016.html]]


! 3. Modèle de Schelling
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/schelling/micro-macro-etudiant.pdf]]
>[[COURS (avec corrections)|./_enseignement_fichiers/licenceInfo/IntroSC/schelling/micro-macro.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/schelling/tp-schelling.html]]

! 7. Modèles de propagation d'une épidémie (SI - percolation - SIR)
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/epidemie/epidemie.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/epidemie/TP-epidemie.html]]
! 8. Modèle d'aggrégation sur un réseau social type scale-free
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/schelling2/Schelling2.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/schelling2/tp-schelling2.html]]

! 11. Modèle de Bass (grille + scale free network) + Modèle d'apprentissage (peer learning + dropout)
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/bass/bass-etudiant.pdf]]
>[[COURS (avec corrections)|./_enseignement_fichiers/licenceInfo/IntroSC/bass/bass.pdf]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/bass/bass-etudiant.pdf]]

! 12.  Travail sur le projet
13h45h - 18h15

!@@2 mai : CT : 16h-18h AMPHI Sciences-naturelles (sans documents)@@


! 10- jeudi xx: 
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/...]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/...]]

! 11- jeudi xx : 
>[[COURS|./_enseignement_fichiers/licenceInfo/IntroSC/...]]
>[[TP|./_enseignement_fichiers/licenceInfo/IntroSC/...]]

/%
>@@[[COURS|./_enseignement-fichiers/licenceInfo/IntroSC/chaos/chaos.pdf]]@@
>@@[[TP|./_enseignement-fichiers/licenceInfo/IntroSC/chaos/TP-logistique.html]]@@
%/



10 TP :  le lundi à partir du 15 septembre (13h-15h)
5 TD : le mercredi à partir du 17 septembre (8h-10h) PAS DE TD le mercredi 8 octobre
-- CC le mercredi 22 octobre 8h-10h--
>[[serie1|./enseignement_fichiers/L3 MASS LP/serie1.html]] [[solution|./enseignement_fichiers/L3 MASS LP/serie1solution.html]]
>[[serie2|./enseignement_fichiers/L3 MASS LP/serie2.html]] [[solution|./enseignement_fichiers/L3 MASS LP/serie2solution.html]]
>[[serie3|./enseignement_fichiers/L3 MASS LP/serie3.html]] [[solution|./enseignement_fichiers/L3 MASS LP/serie3solution.html]]
>[[serie4|./enseignement_fichiers/L3 MASS LP/serie4.html]] [[solution|./enseignement_fichiers/L3 MASS LP/serie4solution.html]]
>[[serie5|./enseignement_fichiers/L3 MASS LP/serie5.html]] [[solution|./enseignement_fichiers/L3 MASS LP/serie5solution.html]]
>[[serie6|./enseignement_fichiers/L3 MASS LP/serie6.html]] [[solution|./enseignement_fichiers/L3 MASS LP/serie6solution.html]]
>[[serie7|./enseignement_fichiers/L3 MASS LP/serie7.html]] [[solution|./enseignement_fichiers/L3 MASS LP/serie7solution.html]]
COURS (1h30) : lundi salle Pv313 : 13h15-14h45
TPM (1h30 x 2) : lundi salle Pv313 : 15h-16h30 + 16h45 - 18h15

Evaluation : CT (40%) + projet (30%) + ~TPm (30%)

! 1- --Programmation Agent en Netlogo (15 janvier 2018)  --
>[[programmation Netlogo|./_enseignement_fichiers/L3MassPOA/procession/ProgrammationNetLogo.pdf]] + [[TP|./_enseignement_fichiers/L3MassPOA/introduction/IntroNetLogo.html]]
>[[Intro|./_enseignement_fichiers/L3MassPOA/introduction/introduction.pdf]] + [[TP|./_enseignement_fichiers/L3MassPOA/procession/procession.html]]

! 2- --Modèle de ségrégation de Schelling (22 janvier 2018)--
>[[COURS.pdf|./_enseignement_fichiers/L3MassPOA/schelling/micro-macro-etudiant.pdf]] + [[TP|./_enseignement_fichiers/L3MassPOA/schelling/tp-schelling.html]]

! 3- --Automate cellulaire (29 janvier 2018)--
>[[COURS.pdf|./_enseignement_fichiers/L3MassPOA/AC/AC.pdf]] + [[TP|./_enseignement_fichiers/L3MassPOA/AC/AC.html]]

! 4- --Processus de morphogénèse (5 février 2018)--
>[[COURS.pdf|./_enseignement_fichiers/L3MassPOA/morphogenese/morphogeneseETUDIANT.pdf]] + [[TP|./_enseignement_fichiers/L3MassPOA/morphogenese/TP-Morphogenese.html]]

! 5- --Chaos déterministe : équation logistique (12 février 2018)--
>[[COURS|./_enseignement_fichiers/L3MassPOA/logistique/equation-logistique.pdf]]
>[[TP|./_enseignement_fichiers/L3MassPOA/logistique/TP-logistique.html]]

! 6- --Propagation d'épidémie (19 février 2018)--
>[[COURS.pdf|./_enseignement_fichiers/L3MassPOA/epidemie/epidemie.pdf]]
>[[TP|./_enseignement_fichiers/L3MassPOA/epidemie/TP-epidemie.html]]

! 7- --Intelligence collective (26 février 2018) --
>[[COURS.pdf|./_enseignement_fichiers/L3MassPOA/IC/cours-ic.pdf]]
>[[TP|./_enseignement_fichiers/L3MassPOA/IC/TP-ic.html]]

! 8- @@12 mars 2018 : CT (13h15-14h45 - salle PV 313- sans document)@@ : exemple de [[SUJET|./_enseignement_fichiers/L3MassPOA/Examen/exempleCT.html]]

! Projet
>[[Modèle de Bass en économie|./_enseignement_fichiers/L3MassPOA/projet/projet2018/projet2018.html]] 
! ''Évaluation'' 
>~CC1 : Travaux en TDM (30%)
>~CC2 : Projet (en binôme) (30%) @@color(red): A rendre au plus tard le __vendredi 22 décembre __@@
>CT : Ecrit (40%) : @@color(red): __lundi 4 décembre 10h15-11h45 amphi de Math__ @@ /%[[Exemple CT|./_enseignement_fichiers/licenceMASS/examen/exempleCT.pdf]]%/

!Nous sommes en semaine @@bgcolor(orange): <<today 0WW>> / 53@@

!''__Cours__'' : lundi 10h15 à 11h45  : amphi de Math à partir du lundi 17 septembre 
Support des cours : [[COURS1|./_enseignement_fichiers/licenceMASS/cours/coursJava1.pdf]], [[COURS2|./_enseignement_fichiers/licenceMASS/cours/coursJava2.pdf]], [[COURS3|./_enseignement_fichiers/licenceMASS/cours/coursJava3.pdf]], [[COURS4|./_enseignement_fichiers/licenceMASS/cours/coursJava4.pdf]]

--01. semaine 38--
--02. semaine 39--
--03. semaine 40--
--semaine 41 @@color(red): PAS DE COURS@@--
04. semaine 42 
05. semaine 43 
semaine 44 @@color(red): Pose pédagogique (ni cours ni TDM)@@
06. semaine 45 
semaine 46 @@color(red): PAS DE COURS@@ 
07. semaine 47  
semaine 49 @@color(red): Controle Terminal (10h15-11h45 amphi de Math)@@  @@color(red): [[EXEMPLE DE SUJET|./_enseignement_fichiers/licenceMASS/examen/2015/CT2015.pdf]]@@ 

! ''__Travaux Pratiques sur Machine__'' : groupe 1 (lundi 13h00 à 15h) - groupe 2 (lundi 15h15 à 17h15) - groupe 3 (lundi 17h30 à 19h30) : salle ~PV313 à partir du 17 septembre
Support des séances de ~TD machine  : [[SERIE1|./_enseignement_fichiers/licenceMASS/TD/serie1/serie1.html]], [[SERIE2|./_enseignement_fichiers/licenceMASS/TD/serie2/serie2.htm]], [[SERIE3|./_enseignement_fichiers/licenceMASS/TD/serie3/serie3.htm]], [[SERIE4|./_enseignement_fichiers/licenceMASS/TD/serie4/serie4.htm]], [[SERIE5|./_enseignement_fichiers/licenceMASS/TD/serie5/serie5new.htm]]

--01. semaine 38 @@color(red):  DEBUT ~SERIE1@@ --
--02. semaine 39  @@color(red): FIN ~SERIE1 + DEBUT ~SERIE2@@ --
--03. semaine 40 @@color(red):  ~SERIE2@@--
--04. semaine 41  @@color(red): FIN ~SERIE2 + DEBUT ~SERIE3@@--
05. semaine 42  @@color(red): ~SERIE3@@
06. semaine 43  @@color(red): ~SERIE4@@  
semaine 44  @@color(red): Pose pédagogique (ni cours ni TDM)@@
07. semaine 45 @@color(red): FIN ~SERIE4 + DEBUT ~SERIE5@@
08. semaine 46 @@color(red): ~SERIE5@@
09. semaine 47 @@color(red): FIN ~SERIE5@@
10. semaine 48 @@color(red): Démarrage du PROJET (13h à 19h30 en PV 313)@@
/%
11. semaine 49 @@color(red):FIN ~~SERIE5@@
12. semaine 50 @@color(red):démarrage du PROJET (15h à 18h en PV 313)@@
13. semaine 50 @@color(red):"Libre Service encadré" suite du PROJET (15h à 18h en PV 313) (pas d'appel !)@@
%/

! ''__Projet__'' à réaliser en binôme (30% de la note finale) à rendre avant le vendredi 22 décembre 2018
[[SUJET|./_enseignement_fichiers/licenceMASS/projet/projet2018/projet-2018.html]] 




*[[Séances Préparatoires: POO/JAVA|./enseignement_fichiers/L3Miage/mise-a-niveau/TD.html]]
*[[Travaux Pratique : POO/JAVA]]
Systèmes Complexes Avancés (SCA)
* --Séance 1-- (mercredi 18 octobre 9h) 
** [[COURS1|./_enseignement_fichiers/M1Info/SAC/SAC2017/procession/procession.pdf]]
** [[COURS POA : Netlogo|./_enseignement_fichiers/M1Info/SAC/SAC2017/netlogo/simulation_SC_Netlogo.pdf]] 
* --Séance 2-- (mercredi 8 novembre 9h) 
** [[TDM1|./_enseignement_fichiers/M1Info/SAC/SAC2017/procession/TP_procession.html]] 
* --Séance 3-- (mercredi 15 novembre14h) 
** [[COURS2+TDM|./_enseignement_fichiers/M1Info/SAC/SAC2017/mobilite/ETUDIANTmobility.pdf]]
* --Séance 4-- (mardi 21 novembre 14h)
** [[TDM2|./_enseignement_fichiers/M1Info/SAC/SAC2017/mobilite/TP-manhattan-sens-unique/TP-mobility-sens-unique.html]] 
* Séance 5 (mercredi 22 novembre 9h)
** [[Openstreetmap et QJIS|./_enseignement_fichiers/M1Info/SAC/SAC2017/projet/projet2017.pdf]]
** [[Démarrage du Projet|./_enseignement_fichiers/M1Info/SAC/SAC2017/projet/projet-carte.html]]
** [[Nice.shp|./_enseignement_fichiers/M1Info/SAC/SAC2017/projet/carte/Nice.shp]]
** [[Nice.dbf|./_enseignement_fichiers/M1Info/SAC/SAC2017/projet/carte/Nice.dbf]]


__Evaluation__ :
# ~TDM1 + ~TDM2 (40%)  : __A RENDRE__, par email, à la fin de la séance de TDM, (i) un rapport scientifique (.pdf de 4 pages max avec captures écran).
# PROJET (60%) : __A RENDRE__, par email, sous la forme (i) un rapport scientifique (.pdf de 4 pages max), (ii) code Netlogo (.nlogo), (iii) vos fichiers .dbf et .shp avant le __22 décembre 2017__.

!@@[[Natural Computing]]@@

!@@Algorithmes Evolutionnaires@@
*[[Cours|./enseignement_fichiers/xxx.ppt]] [[TD|./enseignement_fichiers/xxx.doc]]
!@@Science de la Décision@@
''Systèmes Complexes Avancés: traitement de données spatiales''
* Séance 1 : mercredi 26/9 : 14H-18H salle 385 Lucioles
** [[Thème1: Programmation Orienté Agent|./_enseignement_fichiers/M2miage/SD/SD2017/mobilite/mobility.pdf]] 
** [[Cours-POA-NetLogo|./_enseignement_fichiers/M2miage/SD/SD2017/netlogo/simulation_SC_Netlogo.pdf]]
* Séance 2 : mercredi 4/10 : 14H-18h salle 385 Lucioles
** [[Thème2 : mobilité dans un monde virtuel|./_enseignement_fichiers/M2miage/SD/SD2017/mobilite/TP_mobility-sens-unique.html]]
** [[correction|./_enseignement_fichiers/M2miage/SD/SD2017/mobilite/mobility-grille-sens-unique.nlogo]]
* Séance 3 : mercredi 11/10 : 14H-18H salle 385 Lucioles
** [[Information sur openstreetmap et QJIS|./_enseignement_fichiers/M2miage/SD/SD2017/projet/projet2017.pdf]]
** [[projet|./_enseignement_fichiers/M2miage/SD/SD2017/projet/projet-carte.html]]
__Evaluation__ :
# ''en binôme''  :  Thème2 (40%)  : __A RENDRE__, par email, sous la forme suivant : (i) un rapport scientifique (.pdf de 2 pages max) + (ii) code Netlogo de la dernière version (.nlogo) à la fin de la 2ème séance.
# ''seul'' : Projet (60%) : __A RENDRE__, par email, sous la forme suivant : (i) un rapport scientifique (.pdf de 4 pages max) + (ii) code Netlogo (.nlogo) avant le __20 octobre__.


/%** [[COURS1|./_enseignement_fichiers/M2miage/SD/SD2016/procession/procession.pdf]]%/

/%* Séance 2 : vendredi 28/9 : 9H45-12H45 salle 342 Lucioles
** [[TDM1|./_enseignement_fichiers/M2miage/SD/SD2016/procession/TP_procession.html]] 
** [[COURS2|./_enseignement_fichiers/M2miage/SD/SD2016/frontiere/frontiereEtudiant.pdf]]
%/
<<search>>
----
@@bgcolor(red):[[Dernière minute]]@@
----
@@[[BOOK]]@@

@@[[Publication|Publications 2011-2017]]@@

@@[[Cours & Travaux Pratiques]]@@
----
<<calendar thismonth>>
----
<<clock2 70>>
----
[[Une idée, une Question ...|mailto: philippe.collard@gmail.com]]
----
<<saveChanges>> 
<<closeAll>>
@@bgcolor(red):<<toggleSideBar "" :: hide >>@@ ^^[[°|MainMenu]]^^
/% <<tagCloud systemConfig interface hide Plugins syntaxe>> %/
/% [img[bbbb|./image/qrcode.png]]%/


!Objectifs:
>Dans le but de créer des systèmes autonomes, robustes et évolutifs, une nouvelle forme d'ingénierie trouve son inspiration dans les systèmes complexes naturels. Par exemple, pour concevoir des systèmes sécurisés contre les intrusions, il est possible d'imaginer de nouveaux mécanismes inspirés des défenses immunitaires. Les systèmes inspirés par la Nature doivent être pensés comme des entités auto-organisées, adaptatives et distribuées ; ils reproduisent le comportement et les schéma organisationnels qui existent dans les systèmes naturels complexes.
>Ce cours est une introduction aux principes et méthodes de "l'informatique Nature-inspirée" : il présente différents systèmes utilisés en ingénierie (optimisation, communication, etc.). Il fait le lien entre les sciences de la Nature (éthologie, socio-biologie, évolution neo-darwienne, ...) et les méthodes informatiques. Nous insisterons sur le fait que la Nature doit être une source d'inspiration et non une contrainte.

!Programme (5 séance de 4 heures)
#Introduction NaturalComputing : From micro-motive to macro-behavior [[CoursTD|./enseignement_fichiers/M2info/naturalComputing/micro-macro/micro-macro.pdf]]
#Optimisation par Colonie de fourmis (Ant optimization) [[Cours|./enseignement_fichiers/M2info/naturalComputing/ANT/Fourmis.ppt]]+ [[TDM|./enseignement_fichiers/M2info/naturalComputing/ANT/tdACO.html]]
#Transposition du modèle de Schelling sur un réseau invariant d'échelle (Scale-free network)  [[CoursTD|./enseignement_fichiers/DEA/naturalComputing/micro-macro.pdf]]
# [[voir site de Sébastien Vérel|http://www.i3s.unice.fr/~verel/]]
# [[voir site de Sébastien Vérel|http://www.i3s.unice.fr/~verel/]]
# Évaluation (soutenance des projets)

!Bibliographie :
    * Machine Nature: The Coming Age of Bio-Inspired Computing, by Moshe Sipper, McGraw-Hill, New York, 2002
    * Les Systèmes complexes : mathématiques & biologie, H. P. Zwirn, ed.Odile Jacob
    * Outil de simulation : http://ccl.northwestern.edu/netlogo
    * Réseau National de Sciences de la Complexité : http://complexsystems.lri.fr/RNSC
! Planning
1)@@ __Pré-soutenance (oral)__ + capacité d'évaluer un pair@@ : 30% - 15mn avec questions - ''semaine du 26 février'' - Utiliser Beamer

2) @@__Soutenance (oral)__ @@ : 30% - 15mn avec questions -  ''jeudi 26 avril - à partir de 9h en salle ~PV301'' - utiliser Latex-beamer

3) @@[[Rapport écrit|./_enseignement_fichiers/L2PS/exemple-plan-rapport.pdf]]  + __journal individuel d'activité__@@ : 40%
##Un rapport écrit par groupe ''à envoyer par email à votre encadrant au plus tard le 25 avril (minuit)'' - Latex, format article scientifique (double colonne + max 6 pages)
##Un journal individuel d'activé par étudiant ''à envoyer par email à votre encadrant au plus tard le 25 avril (minuit)'' -  format libre

@@bgcolor(red):ATTENTION@@ : ''prise en compte de la présence aux séances de TDM dans la note globale''

 __4 premières semaines__ : 
!! 1 cours : amphi BIO/GEO (mardi  11h30)
* Mardi 16 janvier :  [[Introduction|./_enseignement_fichiers/L2PS/introduction/introduction.pdf]] [[Netlogo|./_enseignement_fichiers/L2PS/introduction/ProgrammationNetLog.pdf]] (P. Collard)
* Mardi 23 janvier : [[Traitement statistique des données |./_enseignement_fichiers/L2PS/R/cm02-Simon-R.pdf]] [[(A. Malapert)|http://www.i3s.unice.fr/~malapert/org/teaching/R/TP-PSI.html]]
* Mardi 30 janvier : [[Repésentation graphique des données |./_enseignement_fichiers/L2PS/gnuplot/gnuplot.pdf]] (O. Dalle)
* Mardi 06 février : [[Présentation des travaux (écrit/oral) |./_enseignement_fichiers/L2PS/latex/latex-beamer.pdf]]  (P. Collard)
!! 1 TDM : groupe A+B+C : mercredi ou jeudi (salles machines PV 304 ou 316)
* Semaine du 16 janvier : ~NetLogo
**[[TDM1.html|./_enseignement_fichiers/L2PS/introduction/ficheTP-01-procession.html]]
**[[Netlogo|./_enseignement_fichiers/L2PS/introduction/ProgrammationNetLog.pdf]]
**[[un MOOC sur NetLogo |./_enseignement_fichiers/L2PS/introduction/1.7IntroductionToNetLogo1.mp4]]
* Semaine du 23 janvier : R
**[[TDM2 (A. Malapert)|http://www.i3s.unice.fr/~malapert/org/teaching/R/TP-PSI.html]]
/%**[[TDM2|./_enseignement_fichiers/L2PS/R/ficheTP-02-R.pdf]]
**[[temp_1.csv|./_enseignement_fichiers/L2PS/R/data/temp_1.csv]] [[temp_2.csv|./_enseignement_fichiers/L2PS/R/data/temp_2.csv]] [[temp_3.csv|./_enseignement_fichiers/L2PS/R/data/temp_3.csv]]
**[[ruban-3_final.csv|./_enseignement_fichiers/L2PS/R/data/ruban-3_final.csv]] [[ruban-3_initial_final.csv|./_enseignement_fichiers/L2PS/R/data/ruban-3_initial_final.csv]] [[ruban-3_initial_duree.csv|./_enseignement_fichiers/L2PS/R/data/ruban-3_initial_duree.csv]]
**CORRECTION : [[exo1.R|./_enseignement_fichiers/L2PS/R/exo1.R]] [[exo2.R|./_enseignement_fichiers/L2PS/R/exo2.R]] [[exo3.R|./_enseignement_fichiers/L2PS/R/exo3.R]] [[exo4.R|./_enseignement_fichiers/L2PS/R/exo4.R]] [[exo5.R|./_enseignement_fichiers/L2PS/R/exo5.R]]
%/
* Semaine du 30 janvier : Gnuplot
**[[TDM3|https://l2info.olivier-dalle.fr/Enseignements/InitiationGNUPlot]] 
* Semaine du 6 février :  Latex + Beamer 
**[[cours+TDM4 (cf. derniers slides du cours) |./_enseignement_fichiers/L2PS/latex/latex-beamer.pdf]]
**[[IJCAI.zip|./_enseignement_fichiers/L2PS/latex/ijcai13-latex.zip]]
**Présentation des sujets de projet
! __8 semaines suivantes__  : 2 TDM par semaine à partir de la semaine du 12 février (voir edt) :
/%
! __Choix du projet__ :
* ''3 voeux par étudiant à remettre au plus tard au premier TDM dans la semaine du 13 février''
* 1 groupe = 3 étudiants
* 1 sujet = n groupes
! Sujets proposés
|!#|!sujets proposés en 2017 par P. Collard|
|1|Modèle de Schelling (ségrégation 2D, émergence de communautés)|
|2|Modèle de Schelling (ségrégation 3D, collocation)|
|3|Ségrégation dans un réseau scale-free|
|4|Propagation d'un feu de forêt (phénomène de percolation)|
|5|Propagation de virus ("poignée de main" vs. "poignée de porte")|
|6|Modèle de déplacement des piétons (par exemple, sédentaires vs. grands voyageurs)|
|7|Rétro-action entre mobilité et réseaux sociaux|
|8|Modèle de Bass : diffusion d'une innovation|
|9|Modèle de Bass dans un réseau scale-free|
|10|Propagation de rumeurs|
|11|Modèle d'appentissage scolaire (phénomène de décrochage)|
|12|Modèle d'évacuation en urgence (incendie, ...) d'une salle de réunion (cinéma, ...)|
|13|...|

! __Sujets proposés par P. Collard en 2018__
|!#|!Trinôme|!sujet|
|1| Rémy Munier + Alexandre Denos + Erdal Toprak | Propagation de rumeur dans un réseau social |
|2| Raphael Julien + Alessandro Rubio + Youssef Mekouar| Stratégies d'évacuation dans une salle de spectacle |
|3| ~Mohamed-Amine Romdhane + Zhang Noé| Propagation d'un feux de foret |
|4| Tao Zhaopeng + Butté Hugo + Soumrany Maxime | Modéle de  Bass : How can imitation counterbalance innovation?|
|5| Shaun Philipps + David Macchini + Thomas Rey | Propagation d'un virus (type grippe) |
|6| Elorian Regin + Rémi Yacoub | Modèle proies-prédateurs |
%/
/%
! Sujets proposés en 2015
1) [[sujets proposés par E. Coupechoux|./_enseignement_fichiers/L2PS/ListeProjetsEmilie.pdf]]
2) Sujets proposés par O. Dalle (voir tableau ci-dessous)
|!#|!sujets proposés par O. Dalle|
|1|propagation de virus|
|2|rumeurs dans les reseaux sociaux|
|3|game of life|
|4|pagerank|
|5|feux rouges/ vague verte|
|6|modele proie/predateur|
|7|modeles d'influence|
|8|modele de croissance des phoques en fonction des changements du climatique|
%/
! Présoutenance (10mn + 5mn de questions) :
Titre du sujet et membres de l'équipe
> Introduction
>> Présenter le contexte et les éléments du sujet
>> Positionner le sujet relativement aux travaux antérieurs (cf. bibliographie)
> Problématique
>> Définir la problématique et Insister sur son importance/pertinence
>> Formuler des questions et/ou faire apparaitre des paradoxes
> Ébaucher la modélisation
>> Indiquer les hypothèses simplificatrices
>> Décrire les éléments constitutifs du modèle et les interactions entre ces éléments
>> Préciser les paramètres caractéristiques du modèle
>> Protocole expérimental en vu de répondre aux questions
>> Choix des valeurs des paramètres
>> Choix des mesures étudiées
> Résultats attendus
> Conclusion
>> Répartition du travail
>> Planning prévisionnel

! __Notes de pré-soutenance 2018__
|!Trinôme|!sujet|!note|
| Rémy Munier + Alexandre Denos + Erdal Toprak | Propagation de rumeur dans un réseau social |13,5|
| Raphael Julien + Alessandro Rubio + Youssef Mekouar| Stratégies d'évacuation dans une salle de spectacle |11|
| ~Mohamed-Amine Romdhane + Zhang Noé| Propagation d'un feux de foret |14,5|
| Tao Zhaopeng + Butté Hugo + Soumrany Maxime | Modéle de  Bass : How can imitation counterbalance innovation?|13|
| Shaun Philipps + David Macchini + Thomas Rey | Propagation d'un virus (type grippe) |12|
| Elorian Regin + Rémi Yacoub | Modèle proies-prédateurs |9,5|
| BADACHE/BRETONIERE | Propagation de Virus (SIR) |11|
| BENTELLIS/ADAM/BELLET | Propagation rumeurs reseaux sociaux |12|
| CARDINI/ ~CAILLAT-GRENIER | Phenomenes emergents dans les colonies de fourmis |12|
| BAILET/TRAORE/BOUREK | Etude des moyens de luytte contre feux de foret |13|
| BEN ADLEJELLIL/BEY OSMAN/FERRIOL | Strategie evacuation des salles de spectacle |11,5|
| COUNILLE/ALESSANDRO | Telechargements illegaux |13|
| DA SILVA NEVES/PREVOT/ZACCARIA | Propagation d’un virus dans un réseau |16|
| GOMES/Lelievre/NANG | File d'attente |11|
| HALLACI/M HAMED/JRAD | Modèle de Sakodas d'interactions sociales |14|
| MILLIER/NERSISSIAN/PETROU | Evolution des cellules saines et cancéreuses |17|
| JANKEE/SAMSON | Agregation de Schelling |14|

! ''Soutenance'' (10mn + 5 mn de questions) :
@@JEUDI 26 avril@@ à partir de 9h en salle PV301 - 15mn avec questions (30%) - utiliser Latex-beamer -

!!@@Ordre de passage@@
@@bgcolor(red):ATTENTION@@ : chaque étudiant doit être présent durant toutes les présentations de son groupe
!!Groupe 1: 
|!Ordre de passage|!Trinôme|!sujet|
|01|Rémy Munier + Alexandre Denos + Erdal Toprak |Propagation de rumeur dans un réseau social |
|02| BADACHE/BRETONIERE | Propagation de Virus (SIR) |
|03| COUNILLE/ALESSANDRO| Telechargements illegaux|
|04|Raphael Julien + Alessandro Rubio + Youssef Mekouar |Stratégies d'évacuation dans une salle de spectacle |
!!Groupe 2: 
|!Ordre de passage|!Trinôme|!sujet|
|05| BENTELLIS/ADAM/BELLET | Propagation rumeurs réseaux sociaux |
|06| DA SILVA NEVES/PREVOT/ZACCARIA| Propagation d’un virus dans un réseau|
|07|~Mohamed-Amine Romdhane + Zhang Noé|Propagation d'un feux de forêt |
|08| CARDINI/ ~CAILLAT-GRENIER | Phenomenes emergents dans les colonies de fourmis |
!!Groupe 3: 
|!Ordre de passage|!Trinôme|!sujet|
|09| GOMES/Lelievre/NANG| File d'attente|
|10|Tao Zhaopeng + Butté Hugo + Soumrany Maxime |Modèle de  Bass : How can imitation counterbalance innovation? |
|11| BAILET/TRAORE/BOUREK | Etude des moyens de luytte contre feux de forêt |
|12| HALLACI/M HAMED/JRAD| Modèle de Sakodas d'interactions sociales|
!!Groupe 4: 
|!Ordre de passage|!Trinôme|!sujet|
|13|Shaun Philipps + David Macchini + Thomas Rey |Propagation d'un virus (type grippe) |
|14| BEN ADLEJELLIL/BEY OSMAN/FERRIOL | Stratégie d'évacuation des salles de spectacle |
|15| MILLIER/NERSISSIAN/PETROU| Evolution des cellules saines et cancéreuses|
|16|Elorian Regin + Rémi Yacoub |Modèle proies-prédateurs |
|17| JANKEE/SAMSON| Agregation de Schelling|


/%
|!Horaire|!Groupe|!sujet|
|8h| Valdenaire /Jung / Malalel | Propagation de rumeur dans un réseau social |
|8h20| Briand / Marin / Roche | Polénisation |
|8h40| Marini / Murtin / Samak | Stratégies d'évacuation dans une salle de spectacle |
|9h| Zimmer / Chevrier / Doglio | Propagation  d'un feux de foret (vent+pente...) |
|9h20| Ramoul / Frischman / Boukadida | Modèle d'appentissage (phénomène de décrochage) |
Pause
|!Horaire|!Groupe|!sujet|
|9h40| Manchez /Le Quintrec | Modéle de ségrégation |
|10h| BEKELE / DIALLO / LARABI | Propagation des déchets par les courants marins|
|10h20| ABDALLAH  / LALLIS / GENTIL| Evolution génétique d’une population (couleur des yeux) |
|10h40| BOUNAB / BERRIRI / DEKEYSER | Feux de forets  |
|11h| QUI / CALLERISA / ~FONTANY-LEGALL Brandon | Colonies de fourmis  |
Pause
|!Horaire|!Groupe|!sujet|
|11h20| MAHÉ / TRACOL / MANGOURNY | Propagation d’un feu de forêt|
|11h40| KHORN / ROBIN / BONSAUDO | Changement du climat|
|12h| DJEMA / PERCELAY | Modèle ~Proies-Prédateurs|
|12h20| BOBINEAU / ARBONA / VAN STRAATEN | Propagation d’un virus sur un réseau|
%/
Plan typique pour le rapport et la soutenance ([[voir|./_enseignement_fichiers/L2PS/latex/latex-beamer.pdf]])
{{{
\begin{abstract} ... \end{abstract}
\section*{Introduction}
\subsection{Contexte}
\subsection{Etat de l'art}
\subsection{Questions scientifiques}
\section{Modélisation}
\subsection{Hypothèses simplificatrices}
\subsection{Description du modèle}
\section{Simulation}
\subsection{Cadre expérimental}
\subsection{Protocole expérimental}
\section{Résultats}
\section{Discussion}
\section*{Conclusion et perspectives}
}}}
/%
!Notes de présoutenance :
!!Modèle proies/prédateurs: co-existence/équilibre

!!Théorie des jeux

!!Simulation de la propagation du virus du Chikungunya

!!Diffusion d'une innovation dans un réseau

!!Diffusion d'innovations et stratégies de marketing

!!Propagation de virus (modèle SIR), application au virus Ebola

!!Groupe 1: 
Propagation virus / modele SIR 
!!Groupe 2:  
Diffusion innovation
!!Groupe 3: 
Propagation virus EBOLA / modele SIR
!!Groupe 4: 
Proie/Prédateur avec pollution
!!Groupe 5: 
Feux de foret/ Bombardiers d'eau 
!!Groupe 6: 
Feux de foret 
!!Groupe 7:
Propagation de rumeur 

!! Propagation virus (percolation) :  
!! Propagation de rumeurs dans un réseau social : 
!! Propagation de virus : 
!! Modélisation du décrochage scolaire : 
!! Modèle d'agrégation de Schelling 2D : 
!! Modèle d'agrégation de Schelling 3D (emergence de "tours") : 
!! Modèle proie-prédateur (3D-milieu aquatique) : 
/%

!@@PLANNING SOUTENANCE : MARDI 21 avril PV 301@@ 
@@Chaque étudiant DOIT assister à l'ensemble des soutenances de sa session@@
@@Pensez à venir avec votre présentation beamer (fichier.pdf) sur une clé USB !@@

/%
@@SESSION 1@@
!!8h : Modèle proies/prédateurs: co-existence/équilibre

!!8h20 : Théorie des jeux

!!8h40 : Simulation de la propagation du virus du Chikungunya

!!9h : Diffusion d'une innovation dans un réseau

!!9h20 : Diffusion d'innovations et stratégies de marketing

!!9h 40 : Propagation de virus (modèle SIR), application au virus Ebola


@@10 h PAUSE@@

@@SESSION 2@@
!! 10h20 : Propagation de rumeurs dans un réseau social

!! 10h40 : Propagation de virus 

!! 11h : Modélisation du décrochage scolaire

!! 11h20 : Propagation virus (percolation) 

!! 11h40 : Modèle d'agrégation de Schelling (influence des "marginaux")


@@12h PAUSE@@

@@SESSION 3@@
!!  14h : Modèle d'agrégation de Schelling 3D (emergence de "tours")

!! 14h20 : Modèle proie-prédateur (3D-milieu aquatique) 

!! 14h40 : Propagation virus / modele SIR

!!15h : Diffusion innovation

!!15h20 : Propagation virus EBOLA / modele SIR


@@15h40 PAUSE@@

@@SESSION 4@@
!!16h : Proie/Predateur avec pollution

!!16h20 : Feux de foret/ Bombardiers d'eau

!!16h40 : Feux de foret

!! 17h : Propagation de rumeur

%/
''Systèmes Complexes''
''Une introduction par la pratique''

''Préface'' 
A une époque où les effets d'imbrication et d'interconnexion se font ressentir globalement en économie, en politique, en écologie et dans pratiquement tous les domaines de l'activité humaine, on s'interroge de plus en plus sur la nature de ces phénomènes. 
Qu'est-ce qui fait que ces comportements paraissent si surprenants et aient souvent la marque de l'imprévisibilité ? 
La vérité est que nous n'en savons pas encore assez pour pouvoir en prédire l'évolution de manière fiable, et encore moins pour les contrôler. C'est en partie à cause de cet aveu d'impuissance que l'on convient d'appeler ces systèmes complexes. Faut-il pour autant abandonner tout espoir de comprendre ? 
Certainement pas, et le présent ouvrage en est la preuve. En effet, depuis deux ou trois décennies les études et les centres spécialisés sur les systèmes complexes se sont multipliés et, bien que nous n'ayons pas encore atteint le but d'une compréhension satisfaisante, notre connaissance s'en trouve aujourd'hui grandement améliorée. Cependant, les notions acquises ont eu de la peine à percer au-delà des cercles de spécialistes à cause de leur difficulté intrinsèque et du formalisme mathématique requis. C'est à ce manque de vulgarisation de cette nouvelle science que cet ouvrage essaye de remédier, sans jamais abandonner la rigueur des concepts et sans pour autant tomber dans une facilité illusoire. Les auteurs se sont confrontés à la tâche de présenter et d'illustrer les systèmes complexes par l'exemple et par la pratique. Pour ce faire, ils ont choisi des systèmes d'agents suffisamment simples dans leurs règles de comportement individuel, mais pouvant donner lieu à des comportements collectifs émergents que l'on peut aisément qualifier de complexes. Ainsi, à côté de classiques dans les sciences de la complexité comme les automates cellulaires, la morphogenèse et le chaos déterministe, l'on trouve une belle introduction aux réseaux complexes, réseaux qui sous-tendant la plupart des systèmes humains ou créés par l'homme, et  une introduction à l'intelligence collective par le biais d'automates simulant les comportements de base des insectes sociaux. Ces exemples sont loin d'être simplistes : accessibles au raisonnement, ils présentent des comportements très variés et fournissent les bases indispensables pour appréhender un jour, qui sait, le système économique global ou le climat.

L'originalité de l'ouvrage se trouve plus particulièrement dans l'approche pédagogique proposée par les auteurs. La meilleure façon d'éveiller les esprits aux comportements complexes est sans doute celle de les illustrer visuellement par des images et des séquences vidéo. Le livre s'articule ainsi autour d'ateliers démontrant le comportement dynamique du système correspondant par des programmes de simulation numérique dotés d'une interface graphique du plus bel effet. Le fait d'observer le déroulement des expériences numériques à lui seul est déjà une garantie d'une meilleure compréhension par rapport à l'évolution d'un système complexe. Mais avec un effort de la part du lecteur, celui-ci pourra aller beaucoup plus loin en modifiant les programmes et en construisant des variantes selon les suggestions des auteurs ou ses propres intuitions. Cela, il est vrai, demande un certain investissement en programmation, mais l'effort ne sera pas vain. Simplement, pour tirer un maximum d'avantages du livre le lecteur devra être actif et participatif.

Ce livre comble une lacune culturelle et éducative d'une façon unique. Certes, il existe d'autres ouvrages illustrant la nature des systèmes complexes mais aucun, à ma connaissance, n'implique le lecteur comme le fait cette remarquable introduction. Le style du livre, facile d'approche mais pouvant être utilisé à plusieurs niveaux, en fait un outil précieux pour quiconque a envie de mieux comprendre les systèmes complexes, y compris les enseignants et les chercheurs pour qui le livre sera une source d'inspiration et de matériel choisi. On ne peut que féliciter les auteurs pour le courage et la cohérence avec lesquels ils se sont attelés à cette tâche difficile.

En conclusion, je souhaite vraiment que le livre rencontre le succès qu'il mérite et que le lecteur prenne autant de plaisir que moi à la lecture de cet ouvrage innovant dans un domaine crucial pour la compréhension du monde et de la société qui nous entourent.

Professeur Marco Tomassini
Université de Lausanne
@@How to Prevent Intolerant Agents from High Segregation?@@
Philippe Collard and Salma Mesmoudi
''Advances in Artificial Life, ECAL 2011'': Proceedings of the Eleventh European Conference on the Synthesis and Simulation of Living Systems,
T. Lenaerts, M. Giacobini, H. Bersini, P. Bourgine, M. Dorigo and R. Doursat, [[eds.|http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=12760]]
MIT Press, ISBN 978-0-262-29714-1, 2011
@@A Study of Neutrality of Boolean Function Landscapes in Genetic Programming@@
L. Vanneschi, Y. Pirola, G. Mauri, P. Collard and S. Verel
''Journal of Theoretical Computer Science'', 425, pp. 34-57, 2012

@@Mobility and Information Flow: Percolation in a ~Multi-Agent Model@@
M. Collard, P. Collard, E. Stattner
''International Conference on Ambient Systems, Networks and Technologies'' (ANT), ed. Elseiver
Procedia CS, Vol. 10, p. 22-29, 2012
@@hal-01284628@@  Ouvrage 
__Philippe Collard__, Sébastien Verel, Manuel Clergue.
Systèmes Complexes : une introduction par la pratique
''Presses polytechniques et universitaires romandes'', Publisher of the [[Presses polytechniques et universitaires romandes|http://www.ppur.com/en/product/612/9782880749910/Systemes%20complexes]], 2013, 978-2-88074-991-0. 
----
@@hal-01716804@@  Article dans une revue 
The "Two's Company, Three's a Crowd" Game 
__Philippe Collard__,
[[Complex Systems journal|http://www.complex-systems.com]], Volume 26, Issue 3, 2017

@@hal-01716804@@ Article dans une revue 
__Philippe Collard__, Teodor Ghetiu.
Segregation Landscape: A new view on the Schelling segregation space
[[Complex Systems journal|http://www.complex-systems.com]], Volume 25, Issue 3, 2016.

@@hal-01284623@@  Article dans une revue 
__Philippe Collard__, Salma Mesmoudi, Teodor Ghetiu, Fiona Polack.
Emergence of Frontiers in networked Schelling segregationist models
[[Complex Systems journal|http://www.complex-systems.com]], Volume 22, Issue 1, 2013.

@@hal-00767043@@  Article dans une revue 
Martine Collard, __Philippe Collard__, Erick Stattner.
Mobility and Information Flow: Percolation in a ~Multi-Agent Model
''Procedia CS'', 2012, 10, pp.22-29. <10.1016/j.procs.2012.06.007>

@@hal-00563462@@  Article dans une revue 
Leonardo Vanneschi, Yuri Pirola, Giancarlo Mauri, __Philippe Collard__, Sébastien Verel.
A Study of Neutrality of Boolean Function Landscapes in Genetic Programming
''Journal of Theoretical Computer Science'', Elsevier, 2012, 425, pp.34-57. <10.1016/j.tcs.2011.03.011>

----
@@hal-01637573@@ Communication dans un congrès 
Laurent Brisson, Martine Collard, Philippe Collard, Erick Stattner
Information Dissemination in scale-free networks: Profusion versus Scarcity
International Conference on Complex Networks and Their Applications, 2017, ed Springer Verlag.
----
@@hal-??@@ Communication dans un congrès
Martine Collard, Philippe Collard, Erick Stattner
The ~Eternal-Return model of human mobility and its impact on information flow
[[Graph Theoretic Approaches for Analyzing Large Scale Social Networks | http://www.igi-global.com/book/graph-theoretic-approaches-analyzing-large/178732]], 2017, ed. IGI

@@hal-01252936v1@@  Communication dans un congrès 
Martine Collard, __Philippe Collard__, Laurent Brisson, Erick Stattner.
Rumor Spreading Modeling: Profusion versus Scarcity
ASONAM 2015 : IEEE/ACM ''International Conference on Advances in Social Networks Analysis and Mining'', Paris, France. pp.1547 - 1554, 2015. <10.1145/2808797.2809299>

@@hal-01288467v1@@  Communication dans un congrès 
__Philippe Collard__, Wilfried Segretier.
How can imitation counterbalance innovation? An ABM Bass model for competing products
''IEEE RCIS 2014 Eighth International Conference on Research Challenges in Information Science'', Marrakech, Morocco. 2014. <http://www.rcis-conf.com/rcis2014/>

@@hal-01285679v1@@  Communication dans un congrès 
__Philippe Collard__.
Beyond the Schelling's segregation model: is it equivalent to be repulse by dissimilar rather to be attracted by similar ?
MIT press. European Conference on the Synthesis and Simulation of Living Systems, Taormina, Italy. ''Advances in Artificial Life'', ed. MIT press, 2013. <https://mitpress.mit.edu/books/advances-artificial-life-ecal-2013>

@@hal-01288725v1@@  Communication dans un congrès 
Carlin Anaïs, Sébastien Verel, __Philippe Collard__.
Modeling Luxury Consumption: An Inter-Income Classes Study of Demand Dynamics and Social Behaviors
Annual ''Workshop on the Economic Science with Heterogeneous Interacting Agents'' (WEHIA), Reykjavik, Iceland. 2013. <https://sites.google.com/site/wehia2013/>

@@hal-00874344v1@@  Communication dans un congrès 
Martine Collard, __Philippe Collard__, Erick Stattner.
Simulating human mobility and information diffusion
IEEE/ACM ''International Conference on Advances in Social Networks Analysis and Mining'', Niagara falls, Canada. pp.1-5, 2013

@@hal-00742859v1@@  Communication dans un congrès 
__Philippe Collard__, Salma Mesmoudi.
How to Prevent Intolerant Agents from High Segregation?
''Advances in Artificial Life'', ECAL, Paris, France. MIT press, pp.8, 2011
----
*[[publications tracked by scholar.google|http://scholar.google.fr/citations?sortby=pubdate&hl=fr&user=dApD5dAAAAAJ&pagesize=100&view_op=list_works]]
*[[publications tracked by bibsonomy|http://www.bibsonomy.org/search/collard+philippe]]
*[[publications tracked by DBLP|http://www.dblp.org/search/index.php#query=author:philippe_collard]]
*[[publications tracked by HAL|http://hal.archives-ouvertes.fr/index.php?action_todo=search&submit=1&s_type=simple&f[0]=@auteur&v[0]=philippe collard&orderby=DATEPROD&ascdesc=DESC]] 
/%*[[publications tracked by scientificcommons|http://en.scientificcommons.org/#search_string=philippe%20collard]]%/
__BOOK__
@@color(green):Systèmes Complexes : une introduction par la pratique@@
Philippe Collard, Sébastien Verel, Manuel Clergue
''[[Presses polytechniques et universitaires romandes|http://www.ppur.com/en/product/612/9782880749910/Systemes%20complexes]]''
Publisher of the EPFL Press, Lausanne,  [[ISBN : 978-2-88074-991-0|http://www.systemescomplexes.fr]], 306 pages, 2013

__JOURNAL__
@@color(green):Emergence of Frontiers in networked Schelling segregationist models@@
P. Collard, S. Mesmoudi, T. Ghetiu, and F. Polack
''Journal [[Complex Systems|http://www.complex-systems.com/current.html]]'', Volume 22, Issue 1, 2013

__CONFERENCE__
@@color(green):Beyond the Schelling's segregation model: is it equivalent to be repulse by dissimilar rather to be attracted by similar ?@@
Philippe Collard
European Conference on the Synthesis and Simulation of Living Systems
''Advances in Artificial Life'', ed. MIT press, 2013

@@color(green):Simulating human mobility and information diffusion@@
M. Collard, P. Collard, E. Stattner
IEEE/ACM International Conference on Advances in Social Networks Analysis and Mining (ASONAM)
IEEE Catalog Number: ~CFP1334H-USB
ISBN: 978-1-4799-1496-8, 2013

__WOKSHOP__
@@color(green):Rumor Spreading Modeling: Profusion versus Scarcity@@
M. Collard, P. Collard, L. Brisson and E. Stattner
IEEE/ACM International Conference on Advances in Social Networks Analysis and Mining.
International Workshop on Dynamics in Networks, Paris, France, 2015

@@color(green):How can imitation counterbalance innovation? An ABM Bass model for competing products@@
P. Collard, W. Segretier
IEEE Eighth International Conference on Research Challenges in Information Science, Marrakesh, Morocco,  2014

@@color(green):Modeling Luxury Consumption: An ~Inter-Income Classes Study of Demand Dynamics and Social Behaviors@@
A. Carlin, S. Verel and P. Collard
Annual Workshop on the Economic Science with Heterogeneous Interacting Agents (WEHIA)
Reykjavik, Iceland, 2013

*[[publications tracked by scholar.google|http://scholar.google.fr/citations?sortby=pubdate&hl=fr&user=dApD5dAAAAAJ&pagesize=100&view_op=list_works]]
*[[publications tracked by bibsonomy|http://www.bibsonomy.org/search/collard+philippe]]
*[[publications tracked by DBLP|http://www.dblp.org/search/index.php#query=author:philippe_collard]]
*[[publications tracked by HAL|http://hal.archives-ouvertes.fr/index.php?action_todo=search&submit=1&s_type=simple&f[0]=@auteur&v[0]=philippe collard&orderby=DATEPROD&ascdesc=DESC]] 
/%*[[publications tracked by scientificcommons|http://en.scientificcommons.org/#search_string=philippe%20collard]]%/
/***
|''Name:''|RearrangeTiddlersPlugin|
|''Source:''|http://www.TiddlyTools.com/#AttachFilePlugin|
|''Author:''|Joe Raii|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.0.10|

adapted from: http://www.cs.utexas.edu/~joeraii/dragn/#Draggable
changes by ELS:
* hijack refreshTiddler() instead of overridding createTiddler()
* find title element by className instead of elementID
* set cursor style via code instead of stylesheet
* set tooltip help text
* set tiddler "position:relative" when starting drag event, restore saved value when drag ends
* update 2006.08.07: use getElementsByTagName("*") to find title element, even when it is 'buried' deep in tiddler DOM elements (due to custom template usage)

***/
//{{{

Story.prototype.rearrangeTiddlersHijack_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,unused1,unused2,unused3,unused4,unused5)
{
	this.rearrangeTiddlersHijack_refreshTiddler(title,template,unused1,unused2,unused3,unused4,unused5);
	var theTiddler = document.getElementById(this.idPrefix + title); if (!theTiddler) return;
	var theHandle;
	var children=theTiddler.getElementsByTagName("*");
	for (var i=0; i<children.length; i++) if (hasClass(children[i],"title")) { theHandle=children[i]; break; }
	if (!theHandle) return theTiddler;

	Drag.init(theHandle, theTiddler, 0, 0, null, null);
	theHandle.style.cursor="move";
	theHandle.title="drag title to re-arrange tiddlers"
	theTiddler.onDrag = function(x,y,myElem) {
		if (this.style.position!="relative")
			{ this.savedstyle=this.style.position; this.style.position="relative"; }
		y = myElem.offsetTop;
		var next = myElem.nextSibling;
		var prev = myElem.previousSibling;
		if (next && y + myElem.offsetHeight > next.offsetTop + next.offsetHeight/2) { 
			myElem.parentNode.removeChild(myElem);
			next.parentNode.insertBefore(myElem, next.nextSibling);//elems[pos+1]);
			myElem.style["top"] = -next.offsetHeight/2+"px";
		}
		if (prev && y < prev.offsetTop + prev.offsetHeight/2) { 
			myElem.parentNode.removeChild(myElem);
			prev.parentNode.insertBefore(myElem, prev);
			myElem.style["top"] = prev.offsetHeight/2+"px";
		}
	};
	theTiddler.onDragEnd = function(x,y,myElem) {
		myElem.style["top"] = "0px";
		if (this.savedstyle!=undefined)
			this.style.position=this.savedstyle;
	}
	return theTiddler;
}

/**************************************************
 * dom-drag.js
 * 09.25.2001
 * www.youngpup.net
 **************************************************
 * 10.28.2001 - fixed minor bug where events
 * sometimes fired off the handle, not the root.
 **************************************************/

var Drag = {
	obj:null,

	init:
	function(o, oRoot, minX, maxX, minY, maxY) {
		o.onmousedown = Drag.start;
		o.root = oRoot && oRoot != null ? oRoot : o ;
		if (isNaN(parseInt(o.root.style.left))) o.root.style.left="0px";
		if (isNaN(parseInt(o.root.style.top))) o.root.style.top="0px";
		o.minX = typeof minX != 'undefined' ? minX : null;
		o.minY = typeof minY != 'undefined' ? minY : null;
		o.maxX = typeof maxX != 'undefined' ? maxX : null;
		o.maxY = typeof maxY != 'undefined' ? maxY : null;
		o.root.onDragStart = new Function();
		o.root.onDragEnd = new Function();
		o.root.onDrag = new Function();
	},

	start:
	function(e) {
		var o = Drag.obj = this;
		e = Drag.fixE(e);
		var y = parseInt(o.root.style.top);
		var x = parseInt(o.root.style.left);
		o.root.onDragStart(x, y, Drag.obj.root);
		o.lastMouseX = e.clientX;
		o.lastMouseY = e.clientY;
		if (o.minX != null) o.minMouseX = e.clientX - x + o.minX;
		if (o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX;
		if (o.minY != null) o.minMouseY = e.clientY - y + o.minY;
		if (o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY;
		document.onmousemove = Drag.drag;
		document.onmouseup = Drag.end;
		Drag.obj.root.style["z-index"] = "10";
		return false;
	},

	drag:
	function(e) {
		e = Drag.fixE(e);
		var o = Drag.obj;
		var ey = e.clientY;
		var ex = e.clientX;
		var y = parseInt(o.root.style.top);
		var x = parseInt(o.root.style.left);
		var nx, ny;
		if (o.minX != null) ex = Math.max(ex, o.minMouseX);
		if (o.maxX != null) ex = Math.min(ex, o.maxMouseX);
		if (o.minY != null) ey = Math.max(ey, o.minMouseY);
		if (o.maxY != null) ey = Math.min(ey, o.maxMouseY);
		nx = x + (ex - o.lastMouseX);
		ny = y + (ey - o.lastMouseY);
		Drag.obj.root.style["left"] = nx + "px";
		Drag.obj.root.style["top"] = ny + "px";
		Drag.obj.lastMouseX = ex;
		Drag.obj.lastMouseY = ey;
		Drag.obj.root.onDrag(nx, ny, Drag.obj.root);
		return false;
	},

	end:
	function() {
		document.onmousemove = null;
		document.onmouseup = null;
		Drag.obj.root.style["z-index"] = "0";
		Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style["left"]), parseInt(Drag.obj.root.style["top"]), Drag.obj.root);
		Drag.obj = null;
	},

	fixE:
	function(e) {
		if (typeof e == 'undefined') e = window.event;
		if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
		if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
		return e;
	}
};
//}}}
^^[[°|SideBarOptions]]^^  <<version>>
<<saveChanges>>
<<closeAll>>
<<newTiddler>>
<<slider chkSliderOptionsPanel OptionsPanel options 'Change TiddlyWiki advanced options'>>
----
[[Aide Mémoire]]
[[© tiddlywiki|http://www.tiddlywiki.com/]]
/% <<tagCloud systemConfig interface hide Plugins syntaxe>>%/
@@color(orange):''P''hilippe''C''ollard@@[[.|SiteTitle]]com 
div#mainmenu hr {margin:0px;padding:0px;padding-top:10px;
 border-style:none;
 border-width:1px;
 border-color:#ccc;
 border-bottom-style:solid;
} 
.tiddler {
    border-top: 1px solid #ccc;
    border-left: 1px solid #ccc;
    border-bottom: 3px solid #ccc;
    border-right: 3px solid #ccc;
    margin: 0.5em;
    background:#fff;
    padding: 0.5em;
    -moz-border-radius: 0.5em;
    -moz-box-shadow: 3px 3px 2px #888;
    -webkit-box-shadow: 3px 3px 2px #888;
    box-shadow: 3px 3px 2px #888;
}

.header {height: 80px}
.siteTitle {font-size:2.5em;}
.headerShadow {position:relative; padding:1em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:1em 0em 1em 1em; left:0px; top:0px;}

.viewer pre { font-size:75%; }
/* colour scheme begin */ 
div#titleLine { padding-top:30px; background:#369;}

div#sidebarOptions { background:#69b; }

div#sidebarOptions a.button { color:#eef;}
div#sidebarOptions a.button:hover { color:#fff; background:#252;}
div#mainmenu .tiddlyLink { font-weight:bold;color:#369; }
div#mainmenu .tiddlyLink:hover { background:#369;color:white; }
div#mainmenu .button { font-weight:bold; color:#363; }
div#mainmenu .button:hover { background:#363;color:white; }
div.viewer a.tiddlyLink { color:#369; }
div.viewer a.tiddlyLink:hover { background:#acd; }
div.footer a.tiddlyLink { color:#369; }
div.footer a.tiddlyLink:hover { background:#acd; }
.editorFooter a.button, .tiddler .button { color: #369; background:#eee; }
.editorFooter a.button:hover, .tiddler .button:hover { color: #fff; background: #369; }
.editorFooter a.button:active, .tiddler .button:active { color: #fff; background: #369; }
.editorFooter a:link { color: #369; } 
#popup {color:#eee; background:#369;}
#popup a {color:#fff; background:#369; }
#popup a:hover {color:black; background:#eee;}

div.tabset {background:#69b;}

a.tab {background:#369;}
#mainMenu .externalLink { color:#252; }
#mainMenu .externalLink:hover { color:white;background:#696; }
.tiddler .externalLink { color:#252; }
.tiddler .externalLink:visited { color:#252; }
.tiddler .externalLink:hover { color:#252;background:#ada; }
.viewer a:link { color: #252; } 
.viewer a:visited { color: #252; } 
.viewer a:hover { color:#252; background:#ada; }
#titleLine a {color:white;}
a.tabSelected {background:#369;font-weight:bold;}
#sidebarTabs {color: white;background-color: #69b;}
#sidebarTabs .tabSelected {color: white;background-color: #369;}
#sidebarTabs .tabUnselected {color: white;background-color: #369;}
#sidebarTabs .tabContents {background-color: #69c;}
#sidebarTabs .txtMoreTab .tabSelected {background-color: #7ad;}
#sidebarTabs .txtMoreTab .tabUnselected {background-color: #369;}
#sidebarTabs .txtMoreTab .tabContents {background-color: #7ad;}
#sidebarTabs .txtMoreTab .tabset {background-color: #69b;}
#sidebarTabs .tabContents .tiddlyLink {color: #135;}
#sidebarTabs .tabContents .tiddlyLink:hover {background-color: #eee;color: black;}
#sidebarTabs .tabContents .button {color: #eee;}
#sidebarTabs .tabContents .button:hover {color: #white;background-color: #252;}
/* colour scheme end */

#displayArea {
 margin-right: 15em;
 margin-left: 12em;
}

// this works great in firefox but breaks something with ie. help??
// .toolbar { float:right; }


.viewer h1,
.viewer h2,
.viewer h3,
.viewer h4,
.viewer h5 { font-family: 'Trebuchet MS' Arial sans-serif; background:#f8f8f8; }

.viewer h1 { font-size:1.2em; }
.viewer h2 { font-size:1.1em; }
.viewer h3 { font-size:1.0em; }
.viewer h4 { font-size:0.9em; }
.viewer h5 { font-size:0.8em; }

body {
 background:#eee;
}

div.tiddler {
 background:white;
 border-top:solid #ccc 2px;
 border-left:solid #ccc 2px;
 border-bottom:solid #aaa 2px;
 border-right:solid #aaa 2px;
 margin-bottom:5px;
 padding-bottom:10px;
}


div.title {
 font-family:'Trebuchet MS' Arial sans-serif;
 font-size:150%;
}

div.editor input,
div.editor textarea {
 background:#ffe;
 border:solid #aa9 2px;
 margin:4px;
}

@media print {
 div.tiddler {border:none white 0px; border-top:solid #bbb 1px;}
 div.tagged {border:none white 0px;}
 #titleLine { display:none; }
 #displayArea { margin-right: 0px; margin-left: 0px; }
 .toolbar { display:none; }
}
/*
{{{
*/
body {
 background-color: #ffffff;
}

#siteSubtitle {
 font-weight: bold;
}


#displayArea {
 margin: 0em 15em 0em 0.5em;
 background-color: #ffffff;
}

#titleLine {
 color: #ffffff;
 background-color: #330000;
 padding: 1em 1em;
}

#sidebarOptions .sidebarSubHeading {
 color: #000000;
}

.tiddler .button {
 padding: 0.2em 0.4em 0.2em 0.4em;
 background-color: #ffffef;
 color: #000000;
 border-left: 1px solid #bcbcbc;
 border-top: 1px solid #bcbcbc;
 border-right: 1px solid #330000;
 border-bottom: 1px solid #330000;
}

.tiddler .button:hover {
 color: #000000;
 background-color: #ffe271;
 border-left: 1px solid #330000;
 border-top: 1px solid #330000;
 border-right: 1px solid #bcbcbc;
 border-bottom: 1px solid #bcbcbc;
}

#tiddlerDisplay {
}

.tiddler {
}

.selectedTiddler {
 background-color: #ffffcc;
 font-size: 9pt;
 padding-top: 10px;
 padding-left: 10px;
 padding-bottom: 10px;
 padding-right: 10px;
 border-left: 1px solid #330000;
 border-top: 1px solid #330000;
 border-right: 1px solid #330000;
 border-bottom: 1px solid #330000;
}

.unselectedTiddler {
 font-size: 9pt;
 padding-top: 10px;
 padding-left: 10px;
 padding-bottom: 10px;
 padding-right: 10px;
 border-left: 1px solid #ffffff;
 border-top: 1px solid #ffffff;
 border-right: 1px solid #ffffff;
 border-bottom: 1px solid #ffffff;
}

.title {
 font-size: 13pt;
 padding-left: 5px;
 background-color: #ffff77;
 border-left: 1px solid #330000;
 //border-top: 1px solid #330000;
 border-right: 1px solid #330000;
 //border-bottom: 1px solid #330000;
// background-color: #cccc99;
}

.viewer pre { width: 100%; overflow: auto; }
}}}
<<tagCloud systemConfig>>
/***

|Name|ToggleSideBarMacro|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#ToggleSideBarMacro|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Provides a button for toggling visibility of the SideBar. You can choose whether the SideBar should initially be hidden or displayed.

!Demo
<<toggleSideBar "Toggle Sidebar">>

!Usage:
{{{<<toggleSideBar>>}}} <<toggleSideBar>>
additional options:
{{{<<toggleSideBar label tooltip show/hide>>}}} where:
label = custom label for the button,
tooltip = custom tooltip for the button,
show/hide = use one or the other, determines whether the sidebar is shown at first or not.
(default is to show the sidebar)

You can add it to your tiddler toolbar, your MainMenu, or where you like really.
If you are using a horizontal MainMenu and want the button to be right aligned, put the following in your StyleSheet:
{{{ .HideSideBarButton {float:right;} }}}

!History
*23-07-06: version 1.0: completely rewritten, now works with custom stylesheets too, and easier to customize start behaviour. 
*20-07-06: version 0.11
*27-04-06: version 0.1: working.

!Code
***/
//{{{
config.macros.toggleSideBar={};

config.macros.toggleSideBar.settings={
         styleHide :  "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
         styleShow : " ",
         arrow1: "«",
         arrow2: "»"
};

config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
          var tooltip= params[1]||'toggle sidebar';
          var mode = (params[2] && params[2]=="hide")? "hide":"show";
          var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
          var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;
          var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
          if (mode == "hide")
             { 
             (document.getElementById("sidebar")).setAttribute("toggle","hide");
              setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
             }
};

config.macros.toggleSideBar.onToggleSideBar = function(){
          var sidebar = document.getElementById("sidebar");
          var settings = config.macros.toggleSideBar.settings;
          if (sidebar.getAttribute("toggle")=='hide')
             {
              setStylesheet(settings.styleShow,"ToggleSideBarStyles");
              sidebar.setAttribute("toggle","show");
              this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
              }
          else
              {    
               setStylesheet(settings.styleHide,"ToggleSideBarStyles");
               sidebar.setAttribute("toggle","hide");
               this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
              }

     return false;
}

setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");

//}}}
|~ViewToolbar|fullscreen closeTiddler closeOthers collapseTiddler  collapseOthers +editTiddler > fields syncing permalink references jump|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|
<<newTiddler>> <<newJournal "DD MMM YYYY">>
<<<
[[Configurer]]
----
[[Administration Française|http://www.service-public.fr/]]
[[Education Nationale|http://www.education.gouv.fr/index.php]]
[[LegiFrance|http://www.legifrance.gouv.fr/]]
[[Bulletin Officiel|http://www.education.gouv.fr/bo/default.htm]]
[[Université de Nice-Sophia Antipolis|http://portail.unice.fr/jahia/jsp/index.jsp]]
----
[[Pages Jaunes|http://www.pagesjaunes.fr/]]
[[Météo|http://www.meteofrance.com/FR/index.jsp]]
[[Le Conjugueur|http://www.leconjugueur.com/]]
A WikiWord is a word composed of a bunch of other words slammed together with each of their first letters capitalised. WikiWord notation in a conventional WikiWikiWeb is used to name individual pages while TiddlyWiki uses WikiWord titles for smaller chunks of MicroContent. Referring to a page with a WikiWord automatically creates a link to it. Clicking on a link jumps to that page or, if it doesn't exist, to an editor to create it. This ThirdVersion of TiddlyWiki also adds NonWikiWordLinks.
Philippe Collard
config.macros.cloud = {
	tagstip: "%1 tiddlers tagged with '%0'",
	refslabel: " (%0 references)",
	refstip: "%1 tiddlers have links to '%0'",
	linkslabel: " (%0 links)",
	linkstip: "'%0' has links to %1 other tiddlers",
	groups: 9,
	init: function() {
		config.macros.tagCloud=config.macros.cloud; // for backward-compatibility
		config.shadowTiddlers.TagCloud='<<cloud>>';
		config.shadowTiddlers.StyleSheetTagCloud=
			'/*{{{*/\n'
			+'.tagCloud span {line-height: 3.5em; margin:3px;}\n'
			+'.tagCloud1{font-size: 80%;}\n'
			+'.tagCloud2{font-size: 100%;}\n'
			+'.tagCloud3{font-size: 120%;}\n'
			+'.tagCloud4{font-size: 140%;}\n'
			+'.tagCloud5{font-size: 160%;}\n'
			+'.tagCloud6{font-size: 180%;}\n'
			+'.tagCloud7{font-size: 200%;}\n'
			+'.tagCloud8{font-size: 220%;}\n'
			+'.tagCloud9{font-size: 240%;}\n'
			+'/*}}}*/\n';
		setStylesheet(store.getTiddlerText('StyleSheetTagCloud'),'tagCloudsStyles');
	},
	getLinks: function(tiddler) { // get list of links to existing tiddlers and shadows
		if (!tiddler.linksUpdated) tiddler.changed();
		var list=[]; for (var i=0; i<tiddler.links.length; i++) {
			var title=tiddler.links[i];
			if (store.isShadowTiddler(title)||store.tiddlerExists(title))
				list.push(title);
		}
		return list;
	},
	handler: function(place,macroName,params) {
		// unpack params
		var inc=[]; var ex=[]; var limit=0; var action='popup';
		var links=(params[0]&&params[0].toLowerCase()=='links'); if (links) params.shift();
		var refs=(params[0]&&params[0].toLowerCase()=='references'); if (refs) params.shift();
		if (params[0]&&params[0].substr(0,7).toLowerCase()=='action:')
			action=params.shift().substr(7).toLowerCase();
		if (params[0]&&params[0].substr(0,6).toLowerCase()=='limit:')
			limit=parseInt(params.shift().substr(6));
		while (params.length) {
			if (params[0].substr(0,1)=='+') { // read taglist from tiddler
				inc=inc.concat(store.getTiddlerText(params[0].substr(1),'').readBracketedList());
			} else if (params[0].substr(0,1)=='-') { // exclude taglist from tiddler
				ex=ex.concat(store.getTiddlerText(params[0].substr(1),'').readBracketedList());
			} else if (params[0].substr(0,1)=='=') { // get tag list using tagged tags
				var tagged=store.getTaggedTiddlers(params[0].substr(1));
				for (var t=0; t<tagged.length; t++) inc.push(tagged[t].title);
			} else ex.push(params[0]); // exclude params
			params.shift();
		}
		// get all items, include/exclude specific items
		var items=[];
		var list=(links||refs)?store.getTiddlers('title','excludeLists'):store.getTags();
		for (var t=0; t<list.length; t++) {
			var title=(links||refs)?list[t].title:list[t][0];
			if (links)	var count=this.getLinks(list[t]).length;
			else if (refs)	var count=store.getReferringTiddlers(title).length;
			else 		var count=list[t][1];
			if ((!inc.length||inc.contains(title))&&(!ex.length||!ex.contains(title)))
				items.push({ title:title, count:count });
		}
		if(!items.length) return;
		// sort by decending count, limit results (optional)
		items=items.sort(function(a,b){return(a.count==b.count)?0:(a.count>b.count?-1:1);});
		while (limit && items.length>limit) items.pop();
		// find min/max and group size
		var most=items[0].count;
		var least=items[items.length-1].count;
		var groupSize=(most-least+1)/this.groups;
		// sort by title and draw the cloud of items
		items=items.sort(function(a,b){return(a.title==b.title)?0:(a.title>b.title?1:-1);});
		var cloudWrapper = createTiddlyElement(place,'div',null,'tagCloud',null);
		for (var t=0; t<items.length; t++) {
			cloudWrapper.appendChild(document.createTextNode(' '));
			var group=Math.ceil((items[t].count-least)/groupSize)||1;
			var className='tagCloudtag tagCloud'+group;
			var tip=refs?this.refstip:links?this.linkstip:this.tagstip;
			tip=tip.format([items[t].title,items[t].count]);
			if (action=='goto') { // TAG/LINK/REFERENCES GOTO
				var btn=createTiddlyLink(cloudWrapper,items[t].title,true,className);
				btn.title=tip;
				btn.style.fontWeight='normal';
			} else if (!links&&!refs) { // TAG POPUP
				var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,onClickTag,className);
				btn.setAttribute('tag',items[t].title);
			} else { // LINK/REFERENCES POPUP
				var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,
					function(ev) { var e=ev||window.event; var cmt=config.macros.cloud;
						var popup = Popup.create(this);
						var title = this.getAttribute('tiddler');
						var count = this.getAttribute('count');
						var refs  = this.getAttribute('refs')=='T';
						var links = this.getAttribute('links')=='T';
						var label = (refs?cmt.refslabel:cmt.linkslabel).format([count]);
						createTiddlyLink(popup,title,true);
						createTiddlyText(popup,label);
						createTiddlyElement(popup,'hr');
						if (refs) {
							popup.setAttribute('tiddler',title);
							config.commands.references.handlePopup(popup,title);
						}
						if (links) {
							var tiddler = store.fetchTiddler(title);
							var links=config.macros.cloud.getLinks(tiddler);
							for(var i=0;i<links.length;i++)
								createTiddlyLink(createTiddlyElement(popup,'li'),
									links[i],true);
						}
						Popup.show();
						e.cancelBubble=true; if(e.stopPropagation) e.stopPropagation();
						return false;
					}, className);
				btn.setAttribute('tiddler',items[t].title);
				btn.setAttribute('count',items[t].count);
				btn.setAttribute('refs',refs?'T':'F');
				btn.setAttribute('links',links?'T':'F');
				btn.title=tip;
			}
		}
	}
};