| Home |
| About Me |
| Blogs |
| My Projects |
| Contact Me! |
| Version Control | Restaurant v Table | Class v ID | Arrays v Hashes | Thinking Styles | The Map Method | Diversity in Tech | The Dog Class |
| Feedback | Stereotype Threat | Object vs Functional Programing | JavaScript vs Ruby | Values | Computer Memory | Conflict | Blog 16 |
We hear it almost every day. The technology field is growing very rapidly in the world, but its all white men, maybe a few Asians. Recent surveys taken on some of the world's top tech companies found that the overwhelming majority of employees were white men. While women appear to be making gains in the field, they still have a long way to go. Racial divisions appear to be even more apparent, with most employees who identify as latino making up less than 10% of employees at each company, except Apple which had 12%. One of the questions we have to ask ourselves is: why is this?
The actual answer could lie in any number of places. It could be that we as a society are still moving on from very old prejudices and sterertypes. It could be access to the education required to get jobs in tech. It could be a lack of knowledge about what education is actually needed. Whatever the answer happens to be, there are several efforts across the country looking to combat this issue.
In the advent of Social Media, it is becoming easier and easier to draw attention to an issue. When someone does something that stands out it doesn't take much fr it to become "viral". One instance of this was a tweet that a young woman sent to Emma Watson, the Harry Potter actress and an outspoken activist for women's rights. The girl asked Watson what she should do: She wants to be an engineer, but her father says that it's a men's profession. How can she change that? Watson's respons was short, simple, and powerful: Become an engineer. This simple sentence did a lot. It established that the girl should not have limiations put on her because of her gender, and encouraged her to be the change that she wanted to see.
Twitter has also made some headlines recently with the #ILookLikeanEngineer campaign. This encourages people to take pictures of themselves to show that engineers can be men, women, hispanic, asian, black, whatever. The campaign has taken off and is meant to make people understand that anyone can be an engineer if they want.
There are also non-social media projects looking to address the issue of diversity. The non-profit group Black Girls CODE is an organization that holds seminars and camps for girls of color to learn how to code. These take place on weekends and over the summer so that the girls can learn the basics of design and development. They also take the girls on field trips to tech companies so that they can get some first-hand knowledge from the workers there.
Again putting the focus on young girls, the kickstarter campaign Jewelbots was successfully funded recently. Jewelbots are friendship bracelets for girls that are programable through an app. The idea is to get girls thinking and problem solving through basic code in order to generate an interest in the profession.
Diversity in tech is an issue that is being addressed in many ways, but the biggest thing we can take away from these efforts is that it will take a lot of people taking action in order to reverse a troubling trend.


Rock Music!
The style and musicality of rock music was heavily influenced by blues traditions and rhythm and blues (also known as R&B) from the early 20th century. It was born out of the natural evolution of many musical styles from the 1930s and 1940s, including swing, gospel, country, and folk
Rock and roll (often written as rock & roll, rock 'n' roll, or rock 'n roll) is a genre of popular music that originated and evolved in the United States during the late 1940s and early 1950s from musical styles such as gospel, jump blues, jazz, boogie woogie, rhythm and blues, and country music. While elements of what was to become rock and roll can be heard in blues records from the 1920s and in country records of the 1930s, the genre did not acquire its name until 1954.
Gothic rock (alternately called goth-rock or goth) is a style of rock music that emerged from post-punk in the United Kingdom in the late 1970s. The first post-punk bands which shifted towards dark music with gothic overtones include Siouxsie and the Banshees, Joy Division, Bauhaus, and the Cure.
The genre itself was defined as a separate movement from post-punk. Gothic rock stood out due to its more dark sound, with minor or bass chords, reverbs, dark arrangements or dramatic and melancholic melodies, having inspirations in gothic literature allied with themes such as sadness, existentialism, nihilism, dark romanticism, tragedy, melancholy and morbidity. These themes are often approached in a poetic way. The sensibilities of the genre led the lyrics to represent the evil of the century and the romantic idealization of death and the supernatural imagination.
Heavy metal, genre of rock music that includes a group of related styles that are intense, virtuosic, and powerful. Driven by the aggressive sounds of the distorted electric guitar, heavy metal is arguably the most commercially successful genre of rock music.
Although the origin of the term heavy metal is widely attributed to novelist William Burroughs, its use actually dates well back into the 19th century, when it referred to cannon or to power more generally. It also has been used to classify certain elements or compounds, as in the phrase heavy metal poisoning. Heavy metal appeared in the lyrics of Steppenwolf’s “Born to be Wild” (1968), and by the early 1970s rock critics were using it to refer to a specific style of music.
Grunge (sometimes referred to as the Seattle sound) is an alternative rock genre and subculture that emerged during the mid-1980s in the American Pacific Northwest state of Washington, particularly in Seattle and nearby towns. The style became known as a hybrid of punk and metal.[6] The early grunge movement revolved around Seattle's independent record label Sub Pop and the region's underground music scene.
The owners of Sub Pop marketed the style shrewdly and the media was encouraged to describe it as "grunge". By the early 1990s, its popularity had spread, with grunge bands appearing in California, then emerging in other parts of the United States and in Australia, building strong followings and signing major record deals.
Indie rock is a genre of rock music that originated in the United States and United Kingdom in the 1970s. Originally used to describe independent record labels, the term became associated with the music they produced and was initially used interchangeably with alternative rock or "guitar pop rock". In the 1980s, the use of the term "indie" (or "indie pop") started to shift from its reference to recording companies to describe the style of music produced on punk and post-punk labels.
During the 1990s, grunge and punk revival bands in the US and Britpop bands in the UK broke into the mainstream, and the term "alternative" lost its original counter-cultural meaning. The term "indie rock" became associated with the bands and genres that remained dicated to their independent status. By the end of the 1990s, indie rock developed several subgenres and related styles, including lo-fi, noise pop, emo, slowcore, post-rock, and math rock. In the 2000s, changes in the music industry and a growing importance of the Internet enabled a new wave of indie rock bands to achieve mainstream success, leading to questions about its meaningfulness as a term.
For more information on Rock Music you can click Here


| {{o.displayName}} | {{o.email}} | {{o.org}} |
|
| No Recipients Found |
| {{o.displayName}} | {{o.email}} | {{o.org}} |
|
| No CC Recipients found |
| {{o.displayName}} | {{o.email}} | {{o.org}} |
|
| No BCC Recipients found |
| {{o.displayName}} | {{o.email}} | {{o.org}} |
|
| No records found. |


|
|
2022
-
Oltean Mihai, Multi Expression Programming for solving classification problems, Technical report, 2022.
2021
-
Oltean Mihai, Fruits 360 dataset: new research directions, Technical report, 2021.
2019
-
Oltean Mihai, Jenny5 - the robot, Technical report, 2019.
2018
-
Mureșan Horea, Oltean Mihai, Fruit recognition from images using deep learning, Acta Univ. Sapientiae, Informatica Vol. 10, Issue 1, pp. 26-42, 2018. Data can be downloaded from Kaggle or Github.
2017
-
Oltean Mihai, An optical solution for the set splitting problem, Acta Univ. Sapientiae, Informatica Vol. 9, Issue 2, pp. 134-143, 2017.
2010
-
Oltean Mihai, Muntean Oana, An Optical Solution for the SAT Problem, Third International Workshop on Optical SuperComputing, OSC 2010, Bertinoro, Italy, November 17-19, 2010, Revised Selected Papers, LNCS 6748, pp. 53-62, Springer-Verlag, 2010 [website].
-
Știrb L., Marian Zs., Oltean Mihai, An Autonomous Approach to Wheel Changing Problem, Studia Universitatis Babeș-Bolyai
Series Informatica, Vol. LV, Issue 1, pp. 41-50, 2010 [Youtube movie].
2009
-
Oltean Mihai, Muntean Oana, Solving the subset sum problem with a light-based computer, Natural Computing, Springer-Verlag, Vol 8, Issue 2, pp. 321-331, 2009
[website].
-
Oltean Mihai, Light-based string matching, Natural Computing, Springer-Verlag, Vol 8. Issue 1, pp. 121-132, 2009.
-
Muntean Oana, Oltean Mihai, Optical solutions for the unbounded subset-sum problem, International Journal of Innovative Computing, Information and Control, Vol. 5, Issue 8, 2159-2167, 2009 [website].
-
Muntean Oana, Oltean Mihai, Optical solutions for linear Diophantine equations, Journal of Optoelectronics and Advanced Materials, Vol. 11, Issue 11, pp. 1728-1734, 2009 [website].
-
Oltean Mihai, Muntean Oana, Evolutionary design of graph-based structures for optical computing, in proceedings of the second workshop on Optical SuperComputing, OSC 2009, LNCS 5882, pp. 56-69, Springer-Verlag, 2009 [website].
-
Oltean Mihai, Dioșan Laura,
An autonomous GP-based system for regression and classification
problems
Applied Soft Computing, Vol. 9, Issue 1, pp. 49-60, 2009
-
Dioșan Laura, Oltean Mihai,
Evolutionary design of Evolutionary Algorithms
Genetic Programming and Evolvable Machines, Springer, Vol. 10, Issue
3, pp. 263-306, 2009.
-
Oltean Mihai, Groșan Crina, Dioșan Laura, Mihăilă Cristina,
Genetic Programming with linear representation: a survey,
International Journal on Artificial Intelligence Tools, World
Scientific, Vol. 19, Issue 2, pp. 197-238, 2009.
-
Oltean Mihai, Unconventional Computing: A Short Introduction, Studia Universitatis Babeș-Bolyai
Series Informatica, Vol. LIV, Issue 1, pp. 85-96, 2009.
2008
-
Oltean Mihai, Solving the Hamiltonian path problem with a light-based computer, Natural Computing, Springer-Verlag, Vol 6, Issue 1, pp. 57-70, 2008
[website].
-
Oltean Mihai,
Muntean Oana,
Exact Cover with Light, New Generation Computing,
Springer-Verlag, Vol. 26, Issue 4, pp. 327-344, 2008
[website].
-
Oltean Mihai, Muntean Oana, Solving
NP-Complete Problems with Delayed Signals: An Overview of Current
Research Directions, in proceedings of 1st international
workshop on Optical SuperComputing, LNCS 5172, pp. 115-128,
Springer-Verlag, 2008 [website]
-
Dioșan Laura, Oltean Mihai, What Else Is the Evolution of PSO Telling Us?, Journal of Artificial Evolution and Applications
Volume 2008, Article ID 289564, 12 pages, Hindawi Publishing Corporation, 2008.
-
Oltean Mihai, Dioșan Laura, An Adaptive GP Strategy for Evolving Digital Circuits, 12th International Conference, KES 2008, Knowledge-Based Intelligent Information and Engineering Systems, Vol. 5179 LNCS pp. 376-383, 2008
2007
-
Muntean Oana, Oltean Mihai, Processing Bank Checks with Genetic
Programming and Histograms, Bio-inspired, Learning, and
Intelligent Systems for Security, BLISS 2007, pp. 102-105, IEEE
Press, 2007.
-
Dioșan L., Oltean Mihai,
Who's better? PESA or NSGA II?,
The
International Conference on Intelligent Systems Design and
Applications, Workshop on Evolutionary Multiobjective Optimization:
Design and Applications, Brazil, October 22th - 24th, pp.
869-874, IEEE CS Press, 2007.
-
Muntean O., Dioșan L., Oltean Mihai,
Solving the even-n-parity problems using Best Sub Tree Genetic
Programming Adaptive Hardware Systems 2007, pp. 511-518, IEEE Press, 2007.
-
Muntean Oana, Dioșan Laura, Oltean Mihai,
Best SubTree Genetic Programming,
Genetic and Evolutionary Computation Conference (GECCO), pp. 1667-1673, ACM Press, 2007.
-
Dioșan Laura, Oltean Mihai,
A. Rogozan, J. P. Pecuchet,
Genetically Designed Multiple-Kernels for Improving the SVM
Performance, Genetic and Evolutionary Computation Conference (GECCO), pp. 1873,
2007.
-
Dioșan L., Oltean Mihai,
Evolving Evolutionary Algorithms using Evolutionary Algorithms,
Genetic and Evolutionary Computation Conference (GECCO), 2442-2449, ACM Press, 2007.
-
Dioșan L., Oltean Mihai,
Observing the swarm behavior during its evolutionary design,
Genetic and Evolutionary Computation Conference (GECCO), 2667-2674, ACM Press, 2007.
-
Oltean Mihai, Evolving
Evolutionary Algorithms with Patterns, Soft Computing,
Springer-Verlag, Vol. 11, Issue 6, pp. 503-518, 2007.
-
Oltean Mihai, Groșan C.,
Using Traceless Genetic
Programming for Solving Multiobjective Optimization Problems,
Journal of Experimental and Theoretical Artificial Intelligence,
Taylor & Francis, Vol. 19, pp. 227-248, 2007 [source code].
-
Dioșan L., Oltean Mihai,
Evolving the Update
Strategy of the Particle Swarm Optimisation Algorithms,
International Journal on Artificial Intelligent Tools, Vol. 16,
Issue 1, pp. 87-110, World-Scientific, 2007.
-
Oltean Mihai, Liquid State Genetic
Programming, International
Conference on Adaptive and Natural Computing Algorithms, Warsaw,
Poland, ICANNGA 2007, B.
Beliczynski et al. (Eds.), Part I, LNCS 4431, Springer-Verlag, pp.
220-229, 2007.
(best paper award)
-
Oltean Mihai, A-Brain: a general system for solving data analysis problems, Journal of Experimental and Theoretical Artificial Intelligence, Taylor & Francis, Vol. 19, pp. 333-353, 2007.
-
Dioșan L, Oltean Mihai, (et al.), Improving SVM Performance using a
Linear Combination of Kernels, International Conference on Adaptive and
Natural Computing Algorithms, ICANNGA 2007, B. Beliczynski et al.
(Eds.), Part II, LNCS 4432, Springer-Verlag, pp. 218-227, 2007.
2006
-
Oltean Mihai,
A light-based device for solving the
Hamiltonian path problem, Unconventional Computing,
Calude C. (et al.)(Eds), LNCS 4135, pp. 217-227, Springer-Verlag, 2006,
[ppt], [html].
-
Oltean Mihai, Switchable Glass: A possible medium for Evolvable Hardware,
NASA conference on Adaptive Hardware Systems, Stoica A., et al. (Eds), pp. 81-87, IEEE CS Press, 2006.
-
Dioșan L., Oltean Mihai,
Evolving crossover operators for function
optimization, European Conference on Genetic Programming,
LNCS 3905, pp. 97-108, Springer-Verlag, 2006 (best paper nominee).
-
Dioșan L., Oltean Mihai,
Evolving the structure of the Particle Swarm
Optimization algorithms, European
Conference on Evolutionary Computation in Combinatorial Optimization, LNCS 3906, pp. 25-36, Springer-Verlag, 2006.
-
Oltean Mihai, A-Brain: the multiple problems solver, ACM Symposium on Applied Computing, pp. 955-959, ACM Press, 2006.
2005
-
Oltean Mihai, Evolving Evolutionary Algorithms using Linear Genetic Programming, Evolutionary Computation, MIT Press, Vol. 13, Issue 3, pp. 387-410, 2005.
-
Groșan C., Oltean Mihai, Adaptive Representation for Single Objective Optimization, Soft Computing, Springer-Verlag, Vol. 9(8): pp. 594-605, 2005.
-
Oltean Mihai,
Evolving reversible circuits for the even-parity problem, EvoHOT workshop, Lausanne, Switzerland, Applications of Evolutionary Computing,
Rothlauf, F.; Branke, J.; Cagnoni, S.; Corne, D.W.; Drechsler, R.; Jin, Y.; Machado, P.; Marchiori, E.;
Romero, J.; Smith, G.D.; Squillero, G. (Eds.) LNCS 3449, pp. 225-234, Springer-Verlag,
Berlin, 2005.
-
Dumitrescu D., Groșan C., Oltean Mihai, Evolving Continuous Pareto Regions, Evolutionary Computation Based Multi-Criteria Optimization: Theoretical Advances and Applications, edited by A. Abraham, L. Jain and R. Goldberg, Springer-Verlag, London, pp. 167-199, 2005.
-
Oltean Mihai, Abraham Ajith, Groșan Crina, Koppen M, Multiobjective optimization using adaptive pareto archived evolution strategy, Proceedings - 5th International Conference on Intelligent Systems Design and Applications, ISDA '05, pp. 558-563, IEEE Computer Society Press, 2005.
2004
-
Oltean Mihai, A Practical
Evidence for the No Free Lunch Theorems, BioInspired Approaches to
Advanced Information Technology, BioADIT'04, Lausanne, Switzerland,
29-31 January, edited by A. Ijspeert (et al), pp. 382-388, 2004.
-
Oltean Mihai, Searching for a
Practical Evidence for the No Free Lunch Theorems, BioInspired
Approaches to Advanced Information Technology, BioADIT'04, Lausanne,
Switzerland, 29-31 January, edited by A. Ijspeert (et al), LNCS 3141,
pp. 472-483, Springer-Verlag, Berlin, 2004.
-
Oltean Mihai (et al.),
Evolving Digital Circuits for the Knapsack
Problem, International Conference on Computational Sciences,
E-HARD Workshop, 6-9 June, Krakow, Poland, Edited by M. Bubak, G. D. van Albada, P.Sloot, and J. Dongarra, Vol. III, pp. 1257-1264, Springer-Verlag, Berlin, 2004.
-
Oltean M., Solving
Even-Parity Problems using Traceless Genetic Programming, IEEE
Congress on Evolutionary Computation, Portland, 19-23 June, edited by G.
Greenwood (et. al), pp. 1813-1819, IEEE Press, 2004 [source code].
-
Oltean Mihai (et al.),
Encoding Multiple Solutions in a Linear GP
Chromosome, International Conference on Computational Sciences,
E-HARD Workshop, 6-9 June, Krakow, Poland, Edited by M. Bubak, G. D. van Albada, P.Sloot, and J. Dongarra, Vol. III, pp. 1281-1288, Springer-Verlag, Berlin, 2004.
-
Oltean Mihai,
Evolving Winning
Strategies for Nim-like Games, World Computer Congress, Student
Forum, 26-29 August,
Toulouse,
France, edited by Mohamed Kaaniche, pp. 353-364, Kluwer Academic
Publisher, 2004.
-
Oltean Mihai, Solving
Classification Problems using Traceless Genetic Programming,
World Computer Congress, The Symposium on Professional Practice in AI,
26-29 August, Toulouse, France, edited by E. Mercier-Laurent, J.
Debenham, pp. 403-412, 2004 [source code].
-
Oltean Mihai, Dumitrescu, D.,
Evolving TSP Heuristics using
Multi Expression Programming, International Conference on
Computational Sciences, ICCS'04, 6-9 June, Krakow, Poland, Edited by M. Bubak, G.van Albada,
P. Sloot, and J. Dongarra, Vol. II,
pp. 670-673, Springer-Verlag, Berlin, 2004 [website, source code].
-
Oltean Mihai, Dumitrescu, D., A
Permutation based Approach for the 2-D Cutting Stock Problem, First
International Industrial Conference Bionik
2004, 22-23 April, Hanover, Germany, Edited by I. Boblan, and R. Bannasch,
pp. 73-80, 2004.
-
Oltean Mihai,
Improving the
Search by Encoding Multiple Solutions in a Chromosome, contributed
chapter, Evolutionary Machine Design, pp. 85-110, Nova Science Publisher, New-York, edited by
Nadia Nedjah (et. al).
-
Oltean Mihai,
Improving Multi Expression Programming: an Ascending
Trail from Sea-level Even-3-parity Problem to Alpine Even-18-Parity
Problem, contributed
chapter, Evolvable Machines: Theory and Practice, edited by
Nadia Nedjah (et. al), pp. 229-255, Springer-Verlag, Berlin, 2004 [website, source code].
-
Oltean Mihai, Groșan C., Evolving
Digital Circuits using Multi Expression Programming, NASA/DoD
Conference on Evolvable Hardware, 24-26 June, Seattle, Edited by R.
Zebulum, D. Gwaltney, G. Horbny, D. Keymeulen, J. Lohn, A. Stoica, pp. 87-90, IEEE Press, NJ, 2004 [website, source code].
-
Groșan C., Oltean Mihai,
Improving the Performance of
Evolutionary Algorithms for the Multiobjective 0/1 Knapsack Problem
Using Epsilon-Dominance, International Conference on
Computational Sciences, ICCS'04, Edited by M. Bubak, G. D. van Albada,
P. Sloot, and J. Dongarra, Vol II,
pp. 674-677, 6-9 June, Krakow, Poland, 2004.
-
Oltean Mihai, Sas Laura, A Comparison of Genetic Programming and Statistical Methods for
Solving Prediction Problems, International Conference on Computers and Communications, ICCC, pp. 310-314, 2004.
-
Oltean Mihai, New Evolutionary Computation Models and their Applications to Machine Learning, PhD thesis, Babeș-Bolyai University, scientific adviser: prof. Dumitrescu D., defended on December 2004.
2003
-
Oltean Mihai, Groșan C., A Comparison of Several Linear
Genetic Programming Techniques, Complex-Systems, Vol. 14, Nr. 4,
pp. 285-313, 2003. [website, source code]
-
Oltean Mihai,
Evolving Evolutionary Algorithms for Function Optimization,
Proceedings of the 5th International Workshop on Frontiers in
Evolutionary Algorithms, The 7th Joint Conference on Information Sciences, September 26-30, 2003,
Research Triangle Park, North Carolina, Edited by Ken Chen (et. al),
pp. 295-298, 2003.
-
Oltean Mihai,
Solving Even-Parity Problems using Multi Expression
Programming, Proceedings of the 5th International Workshop on
Frontiers in Evolutionary Algorithms, The 7th Joint Conference on
Information Sciences, September 26-30, 2003, Research Triangle Park,
North Carolina, Edited by Ken Chen (et. al), pp. 315-318, 2003.
-
Oltean Mihai, Groșan C.,
Evolving Evolutionary Algorithms using Multi
Expression Programming, The 7th
European Conference on Artificial Life, September 14-17, 2003,
Dortmund, Edited by W. Banzhaf (et al),
LNAI 2801, pp.
651-658, Springer-Verlag, Berlin, 2003.source code
-
Oltean Mihai, Groșan C.,
Solving Classification Problems using Infix Form
Genetic Programming, The 5th International Symposium on Intelligent
Data Analysis, August 28-30, 2003, Berlin, Edited by M. Berthold (et al),
LNCS 2810, pp. 242-252, Springer-Verlag, Berlin, 2003.
-
Groșan C., Oltean Mihai, Adaptive Representation for Single Objective
Optimization, First Balkan Conference on Informatics, 17-20 November
2003, Thessalonica, Greece, edited by Y. Manoulopoulus (et al), pp.
345-355.
-
Groșan C., Oltean Mihai, Dumitrescu D., Performance metrics for multiobjective optimization evolutionary algorithms, 11th Conference on applied and industrial mathematics, CAIM, Vol. 1, pp, 132-135, 2003.
-
Groșan C., Oltean Mihai, Oltean Mihaela, An evolutionary approach to geometrical place problems, Acta Universitatis Apulensis. Mathematics - Informatics, Vol. 5, pp. 71-82, 2003.
-
Groșan C., Oltean Mihai, Oltean Mihaela, The role of elitism in multiobjective optimization with evolutionary algorithms, Acta Universitatis Apulensis. Mathematics - Informatics, Vol. 5, pp. 82-90, 2003.
-
Groșan C., Oltean Mihai, Oltean Mihaela, A new evolutionary algorithm for the multiobjective 0/1 knapsack problem, Acta Universitatis Apulensis. Mathematics - Informatics, Vol. 6, pp. 233-237, 2003.
2002
-
Oltean Mihai, Dumitrescu D., Multi Expression Programming, Technical report, Babeș-Bolyai University, 2002.
-
Oltean Mihai, Groșan Crina, Expressions modeling by using evolutionary techniques, Ginfo, No. 2, Computer Libris
Agora, Cluj-Napoca, 2002 (in Romanian).
2001
-
Dumitrescu D., Oltean Mihai, Theorem proving using Resolution, Proceeding of the Joint Conference on Mathematics and Computer Science, Oradea, 2001.
-
Dumitrescu D., Groșan Crina, Oltean Mihai, Genetic Chromodynamics for multimodal and multiobjective optimization, Proceeding of the Joint Conference on Mathematics and Computer
Science, Oradea 2001,
-
Oltean Mihai, Groșan Crina, Ordered configurations, Ginfo, Nr. 4, Computer Libris Agora, Cluj-Napoca, 2001,
(in Romanian).
-
Oltean Mihai, Crina Groșan, Evolutionary algorithms, Ginfo, Nr. 8, Computer Libris Agora, Cluj-Napoca, 2001 (in
Romanian).
-
Dumitrescu D., Groșan Crina, Oltean Mihai, Simple Multiobjective Evolutionary Algorithm, Seminar on Computer
Science, Babeș- Bolyai University, Cluj-Napoca, pp. 1-12, 2001.
-
Dumitrescu D., Crina Groșan, Oltean Mihai, Genetic Chromodynamics for Obtaining Continuous Representation
of Pareto Regions, Studia Universitas Babeș-Bolyai, Informatica,
Volume XLVI, No. 1, pp. 15-30, 2001.
-
Dumitrescu D., Crina Groșan, Oltean Mihai, A new evolutionary adaptive representation paradigm, Studia Universitas Babeș-Bolyai, Informatica,
Volume XLVI, No. 2, pp. 19-28, 2001.
2000
-
Dumitrescu D., Crina Groșan and Oltean Mihai, A New Evolutionary Approach for Multiobjective Optimization, Studia Universitas Babeș-Bolyai, Informatica, Vol. XLV, No. 1, pp. 51-68, 2000.
-
Oltean Mihai, Dynamic programming in NP-Complete problems, Ginfo, Nr. 2, Computer Libris Agora, Cluj-Napoca, 2000 (in romanian).
1999
-
Oltean Mihai, Automatic generation of computer programs, (Generarea automata a programelor de calculator), Undergraduation thesis, Babeș-Bolyai University, scientific adviser: prof. Militon Frențiu, defended on July 1999 (in Romanian).
-
Dumitrescu D., Oltean Mihai, An Evolutionary Algorithm for Theorem Proving in Propositional Logic,
Studia Universitatis Babeș-Bolyai, Informatica, Vol. XLIV, No. 2, pp. 87-98, 1999.
-
D. Tătar, Oltean Mihai, Theorem proving and DNA computing, Studia Universitatis Babeș-Bolyai
Informatica, vol. XLIV, No. 2, pp. 62-71, 1999.
-
Oltean Mihai, Prime numbers and divisibility, Ginfo, Nr. 2, Computer Libris Agora, Cluj-Napoca.1999,
(in Romanian)
-
Oltean Mihai, Word97 macros, Ginfo, Nr. 8, Computer Libris Agora, Cluj-Napoca, 1999 (in Romanian).
-
Oltean Mihai, Dirichlet's box principles, Ginfo, Nr. 6, Computer Libris Agora, Cluj-Napoca, 1999 (in Romanian)
-
Oltean Mihai, Games programming using DirectX Ginfo, Nr. 3, Computer Libris Agora, Cluj-Napoca, 1999 (in
Romanian)
|


Data between June 15, 2021 and December 12, 2021 are missing because Travis.org stopped working on June 15, 2021.
I have migrated over to GitHub actions on December 13, 2021.
Being a long-time Hacker News reader, I realized that most interesting HN submissions for me are of two categories:
- stories that attract a lot of attention and comments, signaling active and extended debates
- stories that attract a lot of attention but few comments, signaling very insightful post that requires no further comments
Hence, I used the Comment/Score ratio to sort the top HN submissions and locate these stories at the top and the bottom of the list.


Personal Project: Rankings for universities that offer various data science programs.
Tidy Tuesday: Work with Video Games dataset to summarize and arrange data to make meaningful charts.
Tidy Tuesday: Work with R4DS Community Stats dataset to summarize and arrange data to make meaningful charts.
Tidy Tuesday: Work with Women's World Cup datasets to summarize and arrange data to make meaningful charts.
SWD Challenge-July 2019: Identify data that makes sense to plot in a radial view and visualize it.
Tidy Tuesday: Work with Media Franchises dataset to summarize and arrange data to make meaningful charts.
Tidy Tuesday: Work with UFO Sightings dataset to summarize and arrange data to make meaningful charts.
Tidy Tuesday: Work with Christmas Bird Counts dataset to summarize and arrange data to make meaningful charts.
Tidy Tuesday: Work with Meteorites dataset to summarize and arrange data to make meaningful charts.
SWD Challenge-June 2019: Test your design design skills and rebrand a particular graph.
Tidy Tuesday: Work with Ramen Ratings dataset to summarize and arrange data to make meaningful charts.
Class Group Project: Use regression and decision trees in R to predict movie awards
SWD Challenge-May 2019: Go out and collect a dataset of your own, analyze it and create a graph visualizing your findings.
Class Group Project: Use Power BI to analyze the success of promotions
Kaggle Competition: Predict survival on the Titanic using Machine Learning
Class Group Project: Use R to find out the factors affecting absenteeism at work


CWP No. 7467 of 1991 1 IN THE HIGH COURT OF PUNJAB AND HARYANA AT CHANDIGARH. CWP No. 7467 of 1991 Date of decision 5.1.2012 Hindu College of Pharmacy, Sonipat . Petitioner Versus Haryana State Board for Prevention and Control of Water Pollution .. Respondents CORAM: HON'BLE MR. JUSTICE M.M.KUMAR HON'BLE MR. JUSTICE AJAY KUMAR MITTAL Present: Mr. Ankit Goel, Advocate for the Petitioner Mr. Narender Singh, DAG Haryana. 1. To be referred to the Reporter or not ? 2. Whether the judgement should be reported in the Digest ? M.M.KUMAR,J.
1. The instant petition under Article 226 of the Constitution raises a significant issue as to 'whether the Hindu College of Pharmacy, Sonipat is exigible to payment of water cess and whether it would be covered by the expression 'local authority' and 'specified industry' used in Section 2(a) and 2(c) read with Schedule 1 of Section 3 of the Water (Prevention and Control of Pollution) Cess Act, 1977 (for brevity 'the Act'). As per the charging Section 3 of the Act, water cess could be levied on the 'specified industry' or 'local authority'. It is payable by every person carrying on any 'specified industry' or by any 'local authority'. The case of the petitioner is that it is neither covered by the definition of expression 'local authority' or 'specified industry' as envisaged under Section 2(a) and 2 ( c) read with Schedule 1 of the Act. It is claimed that they are neither 'local authority' nor covered by any 'specified industry being' an educational institution.
CWP No. 7467 of 1991 2
2. In response to notice of motion having been issued, the respondent- Board has filed the written statement. It is claimed that the Board has rightly issued letter dated 27.3.1986 to the petitioner requiring it to submit monthly water consumption return as per condition no.5 of the Act. According to the respondents , the petitioner is covered under Section 2(a) of the Act being 'local authority' and are liable to pay water cess.
3. We have heard learned counsel for the parties at a considerable length and are of the view that this petition deserves to succeed. It would first be appropriate to read the charging Section 3 of the Act which is set out below:
"3. Levy and Collection of cess.- (1) There shall be levied and collected cess for the purposes of the Water (Prevention and Control of Pollution )Act,1974 and utilization thereunder.
(2)The cess under sub section (1) shall be payable by-
(a) every person carrying on any specified industry and
(b) every local authority, and shall be calculated on the basis of the water consumed by such person or local authority, as the case may be, for any of the purposes specified in column (1) of schedule II, at such rate, not exceeding the rate specified in the corresponding entry in column (2) thereof as the Central Government may, by notification in the official gazette, from time to time specify (3) Where any local authority supplies water to any person carrying on any specified industry or to any other local CWP No. 7467 of 1991 3 authority and such person or other local authority is liable to pay cess under sub section (2) in respect of the water so supplied, then, notwithstanding anything contained in that sub section, the local authority first mentioned shall not be liable to pay such cess in respect of such water."
4. A perusal of the aforesaid provision would make it clear that cess has been levied and is to be collected for the purposes of Water (Prevention and Control of Pollution ) Act, 1974 and utilization thereunder. Such water cess is payable by a 'local authority' or any person carrying on any 'specified industry'. The expression ' local authority' and 'specified industry' as used in Section 3 of the Act are defined by sections 2
(a) and 2( c) of the Act respectively and the definitions are set out below:
" 2. Definition.- In this Act, unless the context otherwise requires,-
(a) " local authority' means a municipal corporation or a municipal council ( by whatever name called) or a cantonment Board or any other body entrusted with the duty of supplying water under the law by or under which it is constituted.
(b) .. .. .. ..
(c )'specified industry' means any industry specified in schedule 1."
5. Under Section 2(a) of the Act ' local authority' has been defined to mean a municipal corporation, municipal council, cantonment Board or any other body entrusted with the duty of supplying water under the law by or under which it is constituted. The 'local authority' necessarily has to be entrusted with the duty of supplying water under the law. An CWP No. 7467 of 1991 4 educational institution like the petitioner has no obligation to supply water by virtue of provision of any law. When we read the expression like municipal council, municipal corporation which are obliged by the municipal laws to supply water to residents of local area then any other such institution could be brought under the definition by the principle of ejusdem generis if it under obligation by law to supply water. It is neither the case pleaded nor even argued. The bald statement that the petitioner is covered by expression 'local authority' is without substance and has not been substantiated at all. Likewise under Section 2(c) of the Act 'specified industry' is the one, which is detailed in schedule 1. According to the Schedule 15 industries have been listed which reads as under:
"Schedule 1"
[See Section 2(c) ]
1. Ferrous metallurgical industry
2. Non-ferrous metallurgical industry
3. Mining industry
4. Ore processing industry
5. Petroleum industry
6. Petro-chemical industry
7. Chemical industry.
8. Ceramic industry
9. Cement industry
10.Textile industry.
11.Paper industry.
12.Fertilizer industry.
13.Coal (including Coke) industry.CWP No. 7467 of 1991 5
14.Power (thermal and diesel) generating industry.
15.Processing of animal or vegetable products industry."
6. The educational institution run by the petitioner have not been included in the definition of 'specified industry' nor any mention thereof has been made in the schedule. By no stretch of reasoning the petitioner school it could be called an 'industry' for the purposes of charging water cess. There is no mention in Schedule 1 of the institution like the petitioner. It is only those industries which cause water pollution or discharge trade effluents that have been made liable to pay water cess. For example, the Petroleum industry, Ferrous metallurgical industry, Chemical industry etc. etc. Therefore, it is evident that respondent did not have any jurisdiction to demand levy or cess from the petitioner. Any amount of water cess, under the Act, which is to be recovered from the local authority or specified industry did not cover the same. It was under some mis-conceived notion that the petitioner college was sought to be brought within the mis-chief of Section 3 of the Act and was assessed by passing assessment order dated 26.9.1986 (P.1). Consequential order of penalty dated 26.2.1990 (P.2) for non payment would also not be sustainable. Likewise the order dated 19.4.1991 for recovery of cess, penalty and interest as arrears of land revenue would also be illegal. It is further appropriate to mention that when the petition came up for motion hearing, the Division Bench of this Court vide order dated 21.5.1991 had stayed the operation of recovery order dated 19.4.1991.
6. The matter in respect of Tourism Corporation has been considered by a Division Bench of this Court in the case of Haryana Tourism Corporation Ltd v. Haryana State Board for the Prevention and CWP No. 7467 of 1991 6 Control of Water Pollution and another AIR 1993 P & H 272. The Bench held that Haryana Tourism Corporation would not fall in any of the industries nor it would be covered by the expression 'local authority.The Bench rejected similar argument of the respondent and the view of the Division Bench is discernible from the perusal of paras 5 and 6 of the judgement which reads thus:
" 5. "................... Under no circumstance, the petitioner- Corporation can be said to be carrying on an industry engaged in processing of animal or vegetable products. Faced with this situation, emphasis was laid by the learned counsel for the respondents that the petitioner-Corporation fell within the ambit of 'local authority' being 'any other body' and, therefore, is liable to pay cess as it is supplying water to various visitors visiting or staying in the complexes.
6. The stand of the respondents cannot be accepted. As already noticed, the local authority means a municipal corporation or any other body entrusted with the duty of supplying water under the law by or under which it is constituted. In the present case, the respondents have completely failed to show that the petitioner-Corporation is entrusted with the duty of supplying water under the law...................... It does not apply to such persons who draw their own water, say, by installing tubewell and then supply in the houses or the complexes where some visitors also happen to come and stay. It is not the duty of such authority or a body to supply water under any provisions of law. The petitioner-Corporation is drawing water CWP No. 7467 of 1991 7 for its own consumption and is not entrusted with the duty of supplying water to others. Merely providing the amenity of water to the visitors coming or staying in the complexes, by the petitioner-Corporation cannot mean to hold that it is entrusted with the duty of supplying water to them under the law.........` "
8. In view of the above, this petition succeeds. It is declared that the petitioner is not liable to pay water cess under Section 3 of the Act as it is neither 'local authority' or 'specified industry' within the meanings of Section 2(a) and 2 ( c) of the Act. Consequently, orders dated 26.9.1986 (P.1), 26.2.1990 (P.2) and 19.4.1991 (P.4) are hereby quashed.
(M.M.Kumar) Judge (Ajay Kumar Mittal) 5.1.2012 Judge okg


PE and sport premium 2017 to 2018 academic year.
Search results for local authority "Camden"
| Established 2017 | School 2017 | Funding | ||
|---|---|---|---|---|
| 202 | Camden | 2021101 | Camden Primary Pupil Referral Unit | £16190 |
| 202 | Camden | 2022019 | Argyle Primary School | £18970 |
| 202 | Camden | 2022036 | Beckford Primary School | £19530 |
| 202 | Camden | 2022065 | Brecknock Primary School | £19300 |
| 202 | Camden | 2022078 | Brookfield Primary School | £19450 |
| 202 | Camden | 2022095 | Carlton Primary School | £18960 |
| 202 | Camden | 2022184 | Edith Neville Primary School | £17640 |
| 202 | Camden | 2022219 | Fleet Primary School | £17740 |
| 202 | Camden | 2022290 | Hawley Primary School | £16900 |
| 202 | Camden | 2022436 | Netley Primary School and Centre for Autism | £19420 |
| 202 | Camden | 2022438 | New End Primary School | £19450 |
| 202 | Camden | 2022475 | Primrose Hill School | £19560 |
| 202 | Camden | 2022502 | Rhyl Primary School | £19420 |
| 202 | Camden | 2022507 | Richard Cobden Primary School | £19390 |
| 202 | Camden | 2022603 | Torriano Primary School | £19550 |
| 202 | Camden | 2022775 | Gospel Oak Primary School | £19570 |
| 202 | Camden | 2022797 | Fitzjohn's Primary School | £17760 |
| 202 | Camden | 2022841 | Eleanor Palmer Primary School | £17800 |
| 202 | Camden | 2023323 | Christ Church Primary School, Hampstead | £7600 |
| 202 | Camden | 2023327 | Christ Church School | £17720 |
| 202 | Camden | 2023340 | Emmanuel Church of England Primary School | £17930 |
| 202 | Camden | 2023352 | Hampstead Parochial Church of England Primary School | £18030 |
| 202 | Camden | 2023359 | Holy Trinity CofE Primary School, NW3 | £17560 |
| 202 | Camden | 2023361 | Holy Trinity and Saint Silas CofE Primary School, NW1 | £17790 |
| 202 | Camden | 2023370 | Kentish Town Church of England Primary School | £17810 |
| 202 | Camden | 2023391 | Rosary Roman Catholic Primary School | £18510 |
| 202 | Camden | 2023398 | St Alban's Church of England Primary School | £17660 |
| 202 | Camden | 2023400 | St Aloysius Catholic Primary School | £19280 |
| 202 | Camden | 2023429 | St Dominic's Catholic Primary School | £18080 |
| 202 | Camden | 2023441 | St George the Martyr Church of England Primary School | £17750 |
| 202 | Camden | 2023482 | St Josephs Primary School | £17660 |
| 202 | Camden | 2023517 | St Mary's Kilburn Church of England Primary School | £17730 |
| 202 | Camden | 2023521 | St Mary and St Pancras Church of England Primary School | £17790 |
| 202 | Camden | 2023546 | St Michael's Church of England Primary School | £17560 |
| 202 | Camden | 2023560 | St Patrick's Catholic Primary School | £17780 |
| 202 | Camden | 2023568 | St Paul's Church of England Primary School | £17780 |
| 202 | Camden | 2023649 | St Eugene de Mazenod Roman Catholic Primary School | £17800 |
| 202 | Camden | 2023655 | Our Lady Roman Catholic Primary School | £17720 |
| 202 | Camden | 2027008 | Frank Barnes School for Deaf Children | £16220 |
| 202 | Camden | 2027205 | Swiss Cottage School - Development and Research Centre | £16900 |
| 202 | Camden | 2022842 | Christopher Hatton Primary School | £17800 |
| 202 | Camden | 2022843 | Kingsgate Primary School | £20990 |
| 202 | Camden | 2025950 | Children's Hospital School at Gt Ormond Street and UCH | £16860 |
| 202 | Camden | 2027201 | Royal Free Hospital Children's School | £16530 |


Landmark Mayo pub to go under the hammer
The landmark public house premises known as Stack’s Bar is to go for sale by public auction next month.
The property, which is located at the junction of Thomas Street and Upper Charles Street, will be auctioned at 12 noon on December 13 at the Harbour Hotel, New Dock Road, Galway City.
The package, as well as a ground floor licensed premises, has three apartments to the rear.
The selling agents are O’Donnellan & Joyce Auctioneers, Galway.
Stacks is described by the auctioneers as being located in an area which is extremely commercial in character with a number of licensed premises and retail units all in the immediate vicinity.


Local artists unite in a benefit concert for families of Ampatuan massacre victims
Dubbed '#FightFor58: A concert for justice,' the event aims to raise funds to allow the families of the Ampatuan massacre victims to witness the promulgation of the case against the suspects
by Rappler.comSubscribe
Email Address
Newsletters
- Glenda Gloria's Take this Tuesday
- Huddle by Miriam Grace Go
- The Newsbreak Agenda by Chay Hofileña
- Sometimes, all you need is video by Lilibeth Frondoso


|
geopm
2.0.0+dev770g55e83fbc
GEOPM - Global Extensible Open Power Manager
|
#include <Agent.hpp>
Public Member Functions | |
| Agent ()=default | |
| virtual | ~Agent ()=default |
| virtual void | init (int level, const std::vector< int > &fan_in, bool is_level_root)=0 |
| Set the level where this Agent is active and push signals/controls for that level. More... | |
| virtual void | validate_policy (std::vector< double > &policy) const =0 |
| Called by Controller to validate incoming policy values and configure defaults requested in incoming policy. Policy sender can request default value with 'NaN' at the desired offset in the policy vector. Returned policy should not contain 'NaN's and be consumeable by descend and adjust_platform. More... | |
| virtual void | split_policy (const std::vector< double > &in_policy, std::vector< std::vector< double > > &out_policy)=0 |
| Called by Controller to split policy for children at next level down the tree. More... | |
| virtual bool | do_send_policy (void) const =0 |
| Called by Controller to determine if new policy values should be sent down the tree to the Agent's children. More... | |
| virtual void | aggregate_sample (const std::vector< std::vector< double > > &in_sample, std::vector< double > &out_sample)=0 |
| Aggregate samples from children for the next level up the tree. More... | |
| virtual bool | do_send_sample (void) const =0 |
| virtual void | adjust_platform (const std::vector< double > &in_policy)=0 |
| Adjust the platform settings based the policy from above. More... | |
| virtual bool | do_write_batch (void) const =0 |
| Called by the Controller to decide whether to call write_batch() to update platform controls. More... | |
| virtual void | sample_platform (std::vector< double > &out_sample)=0 |
| Read signals from the platform and interpret/aggregate these signals to create a sample which can be sent up the tree. More... | |
| virtual void | wait (void)=0 |
| Called by Controller to wait for sample period to elapse. This controls the cadence of the Controller main loop. More... | |
| virtual std::vector< std::pair< std::string, std::string > > | report_header (void) const =0 |
| Custom fields that will be added to the report header when this agent is used. More... | |
| virtual std::vector< std::pair< std::string, std::string > > | report_host (void) const =0 |
| Custom fields for the host section of the report. More... | |
| virtual std::map< uint64_t, std::vector< std::pair< std::string, std::string > > > | report_region (void) const =0 |
| Custom fields for each region in the report. More... | |
| virtual std::vector< std::string > | trace_names (void) const =0 |
| Column headers to be added to the trace. More... | |
| virtual std::vector< std::function< std::string(double)> > | trace_formats (void) const |
| Returns format string for each column added to the trace. More... | |
| virtual void | trace_values (std::vector< double > &values)=0 |
| Called by Controller to get latest values to be added to the trace. More... | |
| virtual void | enforce_policy (const std::vector< double > &policy) const =0 |
| Enforce the policy one time with PlatformIO::write_control(). Called to enforce static policies in the absence of a Controller. More... | |
Static Public Member Functions | |
| static std::vector< std::string > | agent_names (void) |
| static std::unique_ptr< Agent > | make_unique (const std::string &agent_name) |
| static int | num_policy (const std::map< std::string, std::string > &dictionary) |
| Used to look up the number of values in the policy vector sent down the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest. More... | |
| static int | num_policy (const std::string &agent_name) |
| Used to look up the number of values in the policy vector sent down the tree for a specific Agent. More... | |
| static int | num_sample (const std::map< std::string, std::string > &dictionary) |
| Used to look up the number of values in the sample vector sent up the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest. More... | |
| static int | num_sample (const std::string &agent_name) |
| Used to look up the number of values in the sample vector sent up the tree for a specific Agent. More... | |
| static std::vector< std::string > | policy_names (const std::map< std::string, std::string > &dictionary) |
| Used to look up the names of values in the policy vector sent down the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest. More... | |
| static std::vector< std::string > | policy_names (const std::string &agent_name) |
| Used to look up the names of values in the policy vector sent down the tree for a specific Agent. More... | |
| static std::vector< std::string > | sample_names (const std::map< std::string, std::string > &dictionary) |
| Used to look up the names of values in the sample vector sent up the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest. More... | |
| static std::vector< std::string > | sample_names (const std::string &agent_name) |
| Used to look up the names of values in the sample vector sent up the tree for a specific Agent. More... | |
| static std::map< std::string, std::string > | make_dictionary (const std::vector< std::string > &policy_names, const std::vector< std::string > &sample_names) |
| Used to create a correctly-formatted dictionary for an Agent at the time the Agent is registered with the factory. Concrete Agent classes may provide policy_names() and sample_names() methods to provide the vectors to be passed to this method. More... | |
| static void | aggregate_sample (const std::vector< std::vector< double > > &in_sample, const std::vector< std::function< double(const std::vector< double > &)> > &agg_func, std::vector< double > &out_sample) |
| Generically aggregate a vector of samples given a vector of aggregation functions. This helper method applies a different aggregation function to each sample element while aggregating across child samples. More... | |
Static Public Attributes | |
| static const std::string | M_PLUGIN_PREFIX = "libgeopmagent_" |
|
default |
|
virtualdefault |
|
pure virtual |
Adjust the platform settings based the policy from above.
| [in] | policy | Settings for each control in the policy. |
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
static |
|
static |
Generically aggregate a vector of samples given a vector of aggregation functions. This helper method applies a different aggregation function to each sample element while aggregating across child samples.
| [in] | in_sample | Vector over children of the sample vector received from each child. |
| [in] | agg_func | A vector over agent samples of the aggregation function that is applied. |
| [out] | out_sample | Sample vector resulting from the applying the aggregation across child samples. |
|
pure virtual |
Aggregate samples from children for the next level up the tree.
| [in] | in_sample | Vector of sample vectors, one from each child. |
| [out] | out_sample | Aggregated sample values to be sent up to the parent. |
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Called by Controller to determine if new policy values should be sent down the tree to the Agent's children.
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Called by the Controller to decide whether to call write_batch() to update platform controls.
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Enforce the policy one time with PlatformIO::write_control(). Called to enforce static policies in the absence of a Controller.
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Set the level where this Agent is active and push signals/controls for that level.
| [in] | level | Level of the tree where this agent is active. Note that only agents at level zero execute sample_platform() and adjust_platform(). |
| [in] | fan_in | Vector over level giving the the number of Agents that report to each root Agent operating at the level. |
| [in] | is_level_root | True if the agent plays the role of root of the level. Only root agents for a level execute ascend() and descend(). |
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
static |
Used to create a correctly-formatted dictionary for an Agent at the time the Agent is registered with the factory. Concrete Agent classes may provide policy_names() and sample_names() methods to provide the vectors to be passed to this method.
|
static |
|
static |
Used to look up the number of values in the policy vector sent down the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest.
| [in] | dictionary | Factory dictionary for the agent. |
|
static |
Used to look up the number of values in the policy vector sent down the tree for a specific Agent.
| [in] | agent_name | Name of the agent. |
|
static |
Used to look up the number of values in the sample vector sent up the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest.
| [in] | dictionary | Factory dictionary for the agent. |
|
static |
Used to look up the number of values in the sample vector sent up the tree for a specific Agent.
| [in] | agent_name | Name of the agent. |
|
static |
Used to look up the names of values in the policy vector sent down the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest.
| [in] | dictionary | Factory dictionary for the agent. |
|
static |
Used to look up the names of values in the policy vector sent down the tree for a specific Agent.
| [in] | agent_name | Name of the agent. |
|
pure virtual |
Custom fields that will be added to the report header when this agent is used.
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Custom fields for the host section of the report.
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Custom fields for each region in the report.
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
static |
Used to look up the names of values in the sample vector sent up the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest.
| [in] | dictionary | Factory dictionary for the agent. |
|
static |
Used to look up the names of values in the sample vector sent up the tree for a specific Agent.
| [in] | agent_name | Name of the agent. |
|
pure virtual |
Read signals from the platform and interpret/aggregate these signals to create a sample which can be sent up the tree.
| [out] | sample | Vector of agent specific sample values to be sent up the tree. |
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Called by Controller to split policy for children at next level down the tree.
| [in] | in_policy | Policy values from the parent. |
| [out] | out_policy | Vector of policies to be sent to each child. |
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
virtual |
Returns format string for each column added to the trace.
Reimplemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Column headers to be added to the trace.
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Called by Controller to get latest values to be added to the trace.
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Called by Controller to validate incoming policy values and configure defaults requested in incoming policy. Policy sender can request default value with 'NaN' at the desired offset in the policy vector. Returned policy should not contain 'NaN's and be consumeable by descend and adjust_platform.
| [in,out] | policy | Policy replace NaN's with defaults. If a value of policy is not NaN but the value is not supported by the Agent the method will throw a geopm::Exception with error code GEOPM_ERROR_INVALID. |
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::FrequencyMapAgent, geopm::GPUActivityAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
pure virtual |
Called by Controller to wait for sample period to elapse. This controls the cadence of the Controller main loop.
Implemented in geopm::PowerGovernorAgent, geopm::PowerBalancerAgent, geopm::MonitorAgent, geopm::GPUActivityAgent, geopm::FrequencyMapAgent, geopm::FFNetAgent, and geopm::CPUActivityAgent.
|
static |


PyCon UK 2007
Had a marvellous time at PyCon UK 2007, a conference about the Python programming language. In the event everyone from Resolver bar one of our directors went along. We met loads of great and interesting folks, heard many excellent talks, and gave a few of our own: Michael talked about driving Microsoft's natty new Silverlight technology using IronPython. Giles talked about his concept of the New Age of the Amateur: End-user Computing without Tears, and I gave a little talk about test-driven development for beginners, which can be downloaded here:
- TddBrooksSilverBullet.zip (871kb) (zip of the presentation and accompanying source code)
My few photos are also online.


|
µEvLoop
0.2.0
A fast and lightweight event loop aimed at embedded platforms in C99.
|
The scheduler object. More...
Data Fields | |
| llist_t | timer_list |
| Scheduled timers linked list. More... | |
| syspools_t * | pools |
| Reference to the system's pools. | |
| sysqueues_t * | queues |
| Reference to the system's queues. | |
| volatile uint32_t | timer |
Internal timer. Must be updated via sch_update_timer() | |
The scheduler object.
This object keeps track of time run since the application was launched. It also keeps a queue of events due to be processed sometime in the future.
It feeds and is fed by the system queues. Timers due to be processed are put in the outbound event queue. Timers awaiting scheduling are put in the inbound schedule queue.
| llist_t scheduler_t::timer_list |
Scheduled timers linked list.
This linked list holds events/timers scheduled to be run in the future. Timers are inserted sorted by its due time, so it is always in execution order.


{{_LoanDetailsObj._loanApplicationDetails.ApplicationFormNumber}}
{{_LoanDetailsObj.ClientID}}
{{_LoanDetailsObj.ROIOffered}}
{{_LoanDetailsObj.LoanTermOffered}}
{{_LoanDetailsObj.RateTypeOffered}}
{{_LoanDetailsObj.FrequencyOffered}}
{{_LoanDetailsObj.LoanValueRatio}}
{{_LoanDetailsObj.LoanAmountOffered}}
{{_LoanDetailsObj.EMIStartDay}}
{{_LoanDetailsObj.EMIStartMonth}}
{{_LoanDetailsObj.LoanProcessingFee}}
{{_LoanDetailsObj.AnyLegalCharges}}
{{_LoanDetailsObj.NoOfEMI}}
{{_LoanDetailsObj.Loanprovider}}
{{_LoanDetailsObj.PropertyCost}}
{{_LoanDetailsObj.FinanceDate | date: 'MM/dd/yyyy'}}
{{_LoanDetailsObj._typeOfLoanDetails.LoanType}}
{{_LoanDetailsObj._propertyTypeDetails.PropertyType}}
{{_LoanDetailsObj._typeOfStatusDetails.Status}}


| # | Sensor |
|---|---|
| 1 | Air Compressor Compressor Pressure Switch |
| 3 | Harvester Magnetic Switch Bottom Input |
| 4 | Harvester Magnetic Switch Top Input |
| 5 | Launcher Limit Switch For Launcher Down Input |
| # | Motor |
|---|---|
| 1 | Drive Train Left Motor Output |
| 2 | Drive Train Right Motor Output |
| 4 | Harvester Collection Wheels Output |
| 6 | Launcher Winding Motor Output |
| # | Relay |
|---|---|
| 1 | Air Compressor Compressor Spike |
| # | Sensor |
|---|---|
| 1 | Gyroscope Sensor Input |
| # | Solenoid |
|---|---|
| 1 | Harvester Pneumatic Anglers Forward |
| 2 | Harvester Pneumatic Anglers Reverse |
| 3 | Launcher Pneumatic Piston Double Solenoid Forward |
| 4 | Launcher Pneumatic Piston Double Solenoid Reverse |


| Overview | Module | Use | Devguide | Index |
| Methods' Summary | Attributes' Summary | Methods' Details | Attributes' Details |
| interface XDispatchProviderInterceptor | ||
|
||
|
| Methods' Summary | |
| getSlaveDispatchProvider | access to the slave XDispatchProvider of this interceptor |
| setSlaveDispatchProvider | sets the slave XDispatchProvider to which calls to XDispatchProvider::queryDispatch() can be forwarded under control of this dispatch provider. |
| getMasterDispatchProvider | access to the master XDispatchProvider of this interceptor |
| setMasterDispatchProvider | sets the master XDispatchProvider, which may forward calls to its XDispatchProvider::queryDispatch() to this dispatch provider. |
| Methods' Details | |||||||
getSlaveDispatchProvider
|
|||||||
setSlaveDispatchProvider
|
|||||||
getMasterDispatchProvider
|
|||||||
setMasterDispatchProvider
|
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


[§481X-9] Applicability of premium taxes. Service contract provider fees shall not be subject to premium taxes. Contractual liability insurance policies shall be subject to premium taxes. [L 2000, c 221, pt of §2]


As I progress through migrating this site from ASP.NET 4.6.x to ASP.NET Core, there are some packages that I used in the former that no longer suit my needs in the latter. One of these packages included a class library and HtmlHelper that could be used in conjunction to generate pagination markup and data.
In addition to this package not being supported in ASP.NET Core MVC, it also has a few constructs that did not meet my needs moving forward. That being said, I decided it best I produce my own solution and share it with the community.
Pagination is used in some form in almost every web application to divide returned data and display it on multiple pages. Pagination also includes the logic of preparing and displaying the links to the various pages. https://en.wikipedia.org/wiki/Pagination
Pagination itself is a three step story.
Gathering a "page" of data is a distinct operation in itself. It should be treated independently of any desired destination and because of such, Pioneer Pagination makes no effort nor has a desire to couple step 1 with steps 2 and 3. Instead, it leaves that option up to the user as opposed to assuming what the user wants.
One such example on how to acquire paged data, which I use for this blog, is to implement paging in Entity Framework. More specifically two Entity Framework extension methods, Skip and Take.
public IEnumerable<PostEntity> GetAllPaged(int count, int page = 1) { return _blogContext .Posts .Where(x => x.Published) .OrderByDescending(x => x.PostedOn) .Skip((page - 1) * count) .Take(count) .ToList(); }
A request to this method will ask Entity Framework to get a collection of pages by skipping (Skip) x and taking (Take) y. The count parameter signifies the total number of posts you want to Take and the page parameter represents a number of pages you want to Skip.
In order to generate markup that will visually represent our paginated list, we must produce metadata that represents our desired state. Pioneer Pagination handles this in the form of a service call.
public ActionResult Index(int page = 1) { // Typically obtained from a service/repository var totalNumberInCollection = 100; // Typically obtained from configuration var itemsPerPage = 5; ViewBag.PaginatedMeta = _paginatedMetaService.GetMetaData(totalNumberInCollection, page, itemsPerPage); return View("Blog", post); }
This data is bound to a controllers ViewBag as a means of supplying our Tag Helper the information it needs to work its magic.
Tag Helpers enable server-side code to participate in creating and rendering HTML elements in Razor files. https://docs.asp.net/en/latest/mvc/views/tag-helpers/intro.html
Now that we have a "page" of data to display, we need to use that information in conjunction our metadata to produce a paginated list.
<pioneer-pagination<EMAIL_ADDRESS>route="/blog"></pioneer-pagination>
For the most up-to-date look into how to use Pioneer Pagination, be sure to visit the Pioneer Pagination GitHub repository. If you would like to start using it today, it is available as a NuGet Package for public consumption.
If you have any requests or ideas for improvements, please feel free to share them with me over at GitHub or in the comments located below.


Lorem ipsum.
Consectetur adipisicing elit. Aliquam, commodi.
Hover your mouse over me for a few seconds to see my dynamically bound title!


Element activation works by attaching an event-listener to a specified element.
You can wrap inputs and buttons in the action-elements to activate and add user-data to actions.
The following button has been wrapped with the n-action-activator element. This automatically registers actions to the click-event. Note, since it's the only element, no target-element or event needs to be declared.
Action argument data can come from inputs, by wrapping the inputs inside the activator tag.
An action's data can be entirely derived from a form collection of inputs.
In some cases, the element might not be wrappable. The following examples show how to target elements for activating actions without wrapping.
This example shows an action that is activated by a button somewhere else on the page.
This example shows an action that is activated by a button somewhere else on the page.


Do you use stochastic gradient descent (SGD) or Adam? Regardless of the procedure you use to train your neural network, you can likely achieve significantly better generalization at virtually no additional cost with a simple new technique now natively supported in PyTorch 1.6, Stochastic Weight Averaging (SWA) [1]. Even if you have already trained your model, it’s easy to realize the benefits of SWA by running SWA for a small number of epochs starting with a pre-trained model. Again and again, researchers are discovering that SWA improves the performance of well-tuned models in a wide array of practical applications with little cost or effort!
SWA has a wide range of applications and features:
- SWA significantly improves performance compared to standard training techniques in computer vision (e.g., VGG, ResNets, Wide ResNets and DenseNets on ImageNet and CIFAR benchmarks [1, 2]).
- SWA provides state-of-the-art performance on key benchmarks in semi-supervised learning and domain adaptation [2].
- SWA was shown to improve performance in language modeling (e.g., AWD-LSTM on WikiText-2 [4]) and policy-gradient methods in deep reinforcement learning [3].
- SWAG, an extension of SWA, can approximate Bayesian model averaging in Bayesian deep learning and achieves state-of-the-art uncertainty calibration results in various settings. Moreover, its recent generalization MultiSWAG provides significant additional performance gains and mitigates double-descent [4, 10]. Another approach, Subspace Inference, approximates the Bayesian posterior in a small subspace of the parameter space around the SWA solution [5].
- SWA for low precision training, SWALP, can match the performance of full-precision SGD training, even with all numbers quantized down to 8 bits, including gradient accumulators [6].
- SWA in parallel, SWAP, was shown to greatly speed up the training of neural networks by using large batch sizes and, in particular, set a record by training a neural network to 94% accuracy on CIFAR-10 in 27 seconds [11].
Figure 1. Illustrations of SWA and SGD with a Preactivation ResNet-164 on CIFAR-100 [1]. Left: test error surface for three FGE samples and the corresponding SWA solution (averaging in weight space). Middle and Right: test error and train loss surfaces showing the weights proposed by SGD (at convergence) and SWA, starting from the same initialization of SGD after 125 training epochs. Please see [1] for details on how these figures were constructed.
In short, SWA performs an equal average of the weights traversed by SGD (or any stochastic optimizer) with a modified learning rate schedule (see the left panel of Figure 1.). SWA solutions end up in the center of a wide flat region of loss, while SGD tends to converge to the boundary of the low-loss region, making it susceptible to the shift between train and test error surfaces (see the middle and right panels of Figure 1). We emphasize that SWA can be used with any optimizer, such as Adam, and is not specific to SGD.
Previously, SWA was in PyTorch contrib. In PyTorch 1.6, we provide a new convenient implementation of SWA in torch.optim.swa_utils.
Is this just Averaged SGD?
At a high level, averaging SGD iterates dates back several decades in convex optimization [7, 8], where it is sometimes referred to as Polyak-Ruppert averaging, or averaged SGD. But the details matter. Averaged SGD is often used in conjunction with a decaying learning rate, and an exponential moving average (EMA), typically for convex optimization. In convex optimization, the focus has been on improved rates of convergence. In deep learning, this form of averaged SGD smooths the trajectory of SGD iterates but does not perform very differently.
By contrast, SWA uses an equal average of SGD iterates with a modified cyclical or high constant learning rate and exploits the flatness of training objectives [8] specific to deep learning for improved generalization.
How does Stochastic Weight Averaging Work?
There are two important ingredients that make SWA work. First, SWA uses a modified learning rate schedule so that SGD (or other optimizers such as Adam) continues to bounce around the optimum and explore diverse models instead of simply converging to a single solution. For example, we can use the standard decaying learning rate strategy for the first 75% of training time and then set the learning rate to a reasonably high constant value for the remaining 25% of the time (see Figure 2 below). The second ingredient is to take an average of the weights (typically an equal average) of the networks traversed by SGD. For example, we can maintain a running average of the weights obtained at the end of every epoch within the last 25% of training time (see Figure 2). After training is complete, we then set the weights of the network to the computed SWA averages.
Figure 2. Illustration of the learning rate schedule adopted by SWA. Standard decaying schedule is used for the first 75% of the training and then a high constant value is used for the remaining 25%. The SWA averages are formed during the last 25% of training.
One important detail is the batch normalization. Batch normalization layers compute running statistics of activations during training. Note that the SWA averages of the weights are never used to make predictions during training. So the batch normalization layers do not have the activation statistics computed at the end of training. We can compute these statistics by doing a single forward pass on the train data with the SWA model.
While we focus on SGD for simplicity in the description above, SWA can be combined with any optimizer. You can also use cyclical learning rates instead of a high constant value (see e.g., [2]).
How to use SWA in PyTorch?
In torch.optim.swa_utils
we implement all the SWA ingredients to make it convenient to use SWA with any model. In particular, we implement AveragedModel
class for SWA models, SWALR
learning rate scheduler, and update_bn
utility function to update SWA batch normalization statistics at the end of training.
In the example below, swa_model
is the SWA model that accumulates the averages of the weights. We train the model for a total of 300 epochs, and we switch to the SWA learning rate schedule and start to collect SWA averages of the parameters at epoch 160.
from torch.optim.swa_utils import AveragedModel, SWALR
from torch.optim.lr_scheduler import CosineAnnealingLR
loader, optimizer, model, loss_fn = ...
swa_model = AveragedModel(model)
scheduler = CosineAnnealingLR(optimizer, T_max=100)
swa_start = 5
swa_scheduler = SWALR(optimizer, swa_lr=0.05)
for epoch in range(100):
for input, target in loader:
optimizer.zero_grad()
loss_fn(model(input), target).backward()
optimizer.step()
if epoch > swa_start:
swa_model.update_parameters(model)
swa_scheduler.step()
else:
scheduler.step()
# Update bn statistics for the swa_model at the end
torch.optim.swa_utils.update_bn(loader, swa_model)
# Use swa_model to make predictions on test data
preds = swa_model(test_input)
Next, we explain each component of torch.optim.swa_utils
in detail.
AveragedModel
class serves to compute the weights of the SWA model. You can create an averaged model by running swa_model = AveragedModel(model)
. You can then update the parameters of the averaged model by swa_model.update_parameters(model)
. By default, AveragedModel
computes a running equal average of the parameters that you provide, but you can also use custom averaging functions with the avg_fn
parameter. In the following example, ema_model
computes an exponential moving average.
ema_avg = lambda averaged_model_parameter, model_parameter, num_averaged:\
0.1 * averaged_model_parameter + 0.9 * model_parameter
ema_model = torch.optim.swa_utils.AveragedModel(model, avg_fn=ema_avg)
In practice, we find an equal average with the modified learning rate schedule in Figure 2 provides the best performance.
SWALR
is a learning rate scheduler that anneals the learning rate to a fixed value, and then keeps it constant. For example, the following code creates a scheduler that linearly anneals the learning rate from its initial value to 0.05
in 5
epochs within each parameter group.
swa_scheduler = torch.optim.swa_utils.SWALR(optimizer,
anneal_strategy="linear", anneal_epochs=5, swa_lr=0.05)
We also implement cosine annealing to a fixed value (anneal_strategy="cos"
). In practice, we typically switch to SWALR
at epoch swa_start
(e.g. after 75% of the training epochs), and simultaneously start to compute the running averages of the weights:
scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=100)
swa_start = 75
for epoch in range(100):
# <train epoch>
if i > swa_start:
swa_model.update_parameters(model)
swa_scheduler.step()
else:
scheduler.step()
Finally, update_bn
is a utility function that computes the batchnorm statistics for the SWA model on a given dataloader loader
:
torch.optim.swa_utils.update_bn(loader, swa_model)
update_bn
applies the swa_model
to every element in the dataloader and computes the activation statistics for each batch normalization layer in the model.
Once you computed the SWA averages and updated the batch normalization layers, you can apply swa_model
to make predictions on test data.
Why does it work?
There are large flat regions of the loss surface [9]. In Figure 3 below, we show a visualization of the loss surface in a subspace of the parameter space containing a path connecting two independently trained SGD solutions, such that the loss is similarly low at every point along the path. SGD converges near the boundary of these regions because there isn’t much gradient signal to move inside, as the points in the region all have similarly low values of loss. By increasing the learning rate, SWA spins around this flat region, and then by averaging the iterates, moves towards the center of the flat region.
Figure 3: visualization of mode connectivity for ResNet-20 with no skip connections on CIFAR-10 dataset. The visualization is created in collaboration with Javier Ideami (https://losslandscape.com/). For more details, see this blogpost.
We expect solutions that are centered in the flat region of the loss to generalize better than those near the boundary. Indeed, train and test error surfaces are not perfectly aligned in the weight space. Solutions that are centered in the flat region are not as susceptible to the shifts between train and test error surfaces as those near the boundary. In Figure 4 below, we show the train loss and test error surfaces along the direction connecting the SWA and SGD solutions. As you can see, while the SWA solution has a higher train loss compared to the SGD solution, it is centered in a region of low loss and has a substantially better test error.
Figure 4. Train loss and test error along the line connecting the SWA solution (circle) and SGD solution (square). The SWA solution is centered in a wide region of low train loss, while the SGD solution lies near the boundary. Because of the shift between train loss and test error surfaces, the SWA solution leads to much better generalization.
What are the results achieved with SWA?
We release a GitHub repo with examples using the PyTorch implementation of SWA for training DNNs. For example, these examples can be used to achieve the following results on CIFAR-100:
| VGG-16 | ResNet-164 | WideResNet-28x10 | |
|---|---|---|---|
| SGD | 72.8 ± 0.3 | 78.4 ± 0.3 | 81.0 ± 0.3 |
| SWA | 74.4 ± 0.3 | 79.8 ± 0.4 | 82.5 ± 0.2 |
Semi-Supervised Learning
In a follow-up paper SWA was applied to semi-supervised learning, where it improved the best reported results in multiple settings [2]. For example, with SWA you can get 95% accuracy on CIFAR-10 if you only have the training labels for 4k training data points (the previous best reported result on this problem was 93.7%). This paper also explores averaging multiple times within epochs, which can accelerate convergence and find still flatter solutions in a given time.
Figure 5. Performance of fast-SWA on semi-supervised learning with CIFAR-10. fast-SWA achieves record results in every setting considered.
Reinforcement Learning
In another follow-up paper SWA was shown to improve the performance of policy gradient methods A2C and DDPG on several Atari games and MuJoCo environments [3]. This application is also an instance of where SWA is used with Adam. Recall that SWA is not specific to SGD and can benefit essentially any optimizer.
| Environment Name | A2C | A2C + SWA |
|---|---|---|
| Breakout | 522 ± 34 | 703 ± 60 |
| Qbert | 18777 ± 778 | 21272 ± 655 |
| SpaceInvaders | 7727 ± 1121 | 21676 ± 8897 |
| Seaquest | 1779 ± 4 | 1795 ± 4 |
| BeamRider | 9999 ± 402 | 11321 ± 1065 |
| CrazyClimber | 147030 ± 10239 | 139752 ± 11618 |
Low Precision Training
We can filter through quantization noise by combining weights that have been rounded down with weights that have been rounded up. Moreover, by averaging weights to find a flat region of the loss surface, large perturbations of the weights will not affect the quality of the solution (Figures 9 and 10). Recent work shows that by adapting SWA to the low precision setting, in a method called SWALP, one can match the performance of full-precision SGD even with all training in 8 bits [5]. This is quite a practically important result, given that (1) SGD training in 8 bits performs notably worse than full precision SGD, and (2) low precision training is significantly harder than predictions in low precision after training (the usual setting). For example, a ResNet-164 trained on CIFAR-100 with float (16-bit) SGD achieves 22.2% error, while 8-bit SGD achieves 24.0% error. By contrast, SWALP with 8 bit training achieves 21.8% error.
Figure 9. Quantizing a solution leads to a perturbation of the weights which has a greater effect on the quality of the sharp solution (left) compared to wide solution (right).
Figure 10. The difference between standard low precision training and SWALP.
Another work, SQWA, presents an approach for quantization and fine-tuning of neural networks in low precision [12]. In particular, SQWA achieved state-of-the-art results for DNNs quantized to 2 bits on CIFAR-100 and ImageNet.
Calibration and Uncertainty Estimates
By finding a centred solution in the loss, SWA can also improve calibration and uncertainty representation. Indeed, SWA can be viewed as an approximation to an ensemble, resembling a Bayesian model average, but with a single model [1].
SWA can be viewed as taking the first moment of SGD iterates with a modified learning rate schedule. We can directly generalize SWA by also taking the second moment of iterates to form a Gaussian approximate posterior over the weights, further characterizing the loss geometry with SGD iterates. This approach,SWA-Gaussian (SWAG) is a simple, scalable and convenient approach to uncertainty estimation and calibration in Bayesian deep learning [4]. The SWAG distribution approximates the shape of the true posterior: Figure 6 below shows the SWAG distribution and the posterior log-density for ResNet-20 on CIFAR-10.
Figure 6. SWAG posterior approximation and the loss surface for a ResNet-20 without skip-connections trained on CIFAR-10 in the subspace formed by the two largest eigenvalues of the SWAG covariance matrix. The shape of SWAG distribution is aligned with the posterior: the peaks of the two distributions coincide, and both distributions are wider in one direction than in the orthogonal direction. Visualization created in collaboration with Javier Ideami.
Empirically, SWAG performs on par or better than popular alternatives including MC dropout, KFAC Laplace, and temperature scaling on uncertainty quantification, out-of-distribution detection, calibration and transfer learning in computer vision tasks. Code for SWAG is available here.
Figure 7. MultiSWAG generalizes SWAG and deep ensembles, to perform Bayesian model averaging over multiple basins of attraction, leading to significantly improved performance. By contrast, as shown here, deep ensembles select different modes, while standard variational inference (VI) marginalizes (model averages) within a single basin.
MultiSWAG [9] uses multiple independent SWAG models to form a mixture of Gaussians as an approximate posterior distribution. Different basins of attraction contain highly complementary explanations of the data. Accordingly, marginalizing over these multiple basins provides a significant boost in accuracy and uncertainty representation. MultiSWAG can be viewed as a generalization of deep ensembles, but with performance improvements.
Indeed, we see in Figure 8 that MultiSWAG entirely mitigates double descent – more flexible models have monotonically improving performance – and provides significantly improved generalization over SGD. For example, when the ResNet-18 has layers of width 20, Multi-SWAG achieves under 30% error whereas SGD achieves over 45%, more than a 15% gap!
Figure 8. SGD, SWAG, and Multi-SWAG on CIFAR-100 for a ResNet-18 with varying widths. We see Multi-SWAG in particular mitigates double descent and provides significant accuracy improvements over SGD.
Reference [10] also considers Multi-SWA, which uses multiple independently trained SWA solutions in an ensemble, providing performance improvements over deep ensembles without any additional computational cost. Code for MultiSWA and MultiSWAG is available here.
Another method, Subspace Inference, constructs a low-dimensional subspace around the SWA solution and marginalizes the weights in this subspace to approximate the Bayesian model average [5]. Subspace Inference uses the statistics from the SGD iterates to construct both the SWA solution and the subspace. The method achieves strong performance in terms of prediction accuracy and uncertainty calibration both in classification and regression problems. Code is available here.
Try it Out!
One of the greatest open questions in deep learning is why SGD manages to find good solutions, given that the training objectives are highly multimodal, and there are many settings of parameters that achieve no training loss but poor generalization. By understanding geometric features such as flatness, which relate to generalization, we can begin to resolve these questions and build optimizers that provide even better generalization, and many other useful features, such as uncertainty representation. We have presented SWA, a simple drop-in replacement for standard optimizers such as SGD and Adam, which can in principle, benefit anyone training a deep neural network. SWA has been demonstrated to have a strong performance in several areas, including computer vision, semi-supervised learning, reinforcement learning, uncertainty representation, calibration, Bayesian model averaging, and low precision training.
We encourage you to try out SWA! SWA is now as easy as any standard training in PyTorch. And even if you have already trained your model, you can use SWA to significantly improve performance by running it for a small number of epochs from a pre-trained model.
[1] Averaging Weights Leads to Wider Optima and Better Generalization; Pavel Izmailov, Dmitry Podoprikhin, Timur Garipov, Dmitry Vetrov, Andrew Gordon Wilson; Uncertainty in Artificial Intelligence (UAI), 2018.
[2] There Are Many Consistent Explanations of Unlabeled Data: Why You Should Average; Ben Athiwaratkun, Marc Finzi, Pavel Izmailov, Andrew Gordon Wilson; International Conference on Learning Representations (ICLR), 2019.
[3] Improving Stability in Deep Reinforcement Learning with Weight Averaging; Evgenii Nikishin, Pavel Izmailov, Ben Athiwaratkun, Dmitrii Podoprikhin, Timur Garipov, Pavel Shvechikov, Dmitry Vetrov, Andrew Gordon Wilson; UAI 2018 Workshop: Uncertainty in Deep Learning, 2018.
[4] A Simple Baseline for Bayesian Uncertainty in Deep Learning Wesley Maddox, Timur Garipov, Pavel Izmailov, Andrew Gordon Wilson; Neural Information Processing Systems (NeurIPS), 2019.
[5] Subspace Inference for Bayesian Deep Learning Pavel Izmailov, Wesley Maddox, Polina Kirichenko, Timur Garipov, Dmitry Vetrov, Andrew Gordon Wilson Uncertainty in Artificial Intelligence (UAI), 2019.
[6] SWALP : Stochastic Weight Averaging in Low Precision Training Guandao Yang, Tianyi Zhang, Polina Kirichenko, Junwen Bai, Andrew Gordon Wilson, Christopher De Sa; International Conference on Machine Learning (ICML), 2019.
[7] David Ruppert. Efficient estimations from a slowly convergent Robbins-Monro process; Technical report, Cornell University Operations Research and Industrial Engineering, 1988.
[8] Acceleration of stochastic approximation by averaging. Boris T Polyak and Anatoli B Juditsky; SIAM Journal on Control and Optimization, 30(4):838–855, 1992.
[9] Loss Surfaces, Mode Connectivity, and Fast Ensembling of DNNs Timur Garipov, Pavel Izmailov, Dmitrii Podoprikhin, Dmitry Vetrov, Andrew Gordon Wilson. Neural Information Processing Systems (NeurIPS), 2018.
[10] Bayesian Deep Learning and a Probabilistic Perspective of Generalization Andrew Gordon Wilson, Pavel Izmailov. ArXiv preprint, 2020.
[11] Stochastic Weight Averaging in Parallel: Large-Batch Training That Generalizes Well Gupta, Vipul, Santiago Akle Serrano, and Dennis DeCoste; International Conference on Learning Representations (ICLR). 2019.
[12] SQWA: Stochastic Quantized Weight Averaging for Improving the Generalization Capability of Low-Precision Deep Neural Networks Shin, Sungho, Yoonho Boo, and Wonyong Sung; arXiv preprint 2020.


TOP MARKS
Top 100 Scottish secondary schools ranked from best performing to worst as 2019 league table update
by Ewan MowatTHE best 100 state schools in Scotland have been revealed - with Greater Glasgow dominating the league table.
Performance of pupils across the country were graded and schools ranked based on the percentage of kids passing a certain number of exams.
It is mostly based on those who gain five or more Highers.
That receives a double-weighted score with rankings also affected by the number of pupils who get more than two Advanced Highers or five or more National 5s.
Figures were published in The Sunday Times' Parent Power rankings today.
It saw Jordanhill School in Glasgow hold on to top spot from last year.
The west end secondary was a clear leader with 83 per cent of pupils getting five or more awards at SCQF Level 6, the equivalent of Highers.
Stirlingshire's Dunblane High sits in second - with 76 per cent hitting the five-Higher mark - having climbed from ninth last year.
SEE HOW YOUR CHILD'S SCHOOL RANKS
(5+ Highers, 2+ Adv Highers, 5+ Nat 5s - per cent)
1 Jordanhill School (83, 48, 95)
2 Dunblane High School (76, 27, 92)
3 St Ninian's High School, Giffnock (75, 30, 89)
4 Boroughmuir High School (71, 33, 91)
5 Mearns Castle High School (75, 24, 91)
6 Williamwood High School (73, 24, 92)
7 Bearsden Academy (70, 29, 89)
8 Gryffe High School (70, 15, 94)
9 Douglas Academy (69, 20, 89)
10 Bishopbriggs Academy (66, 25, 89)
11 Banchory Academy (62, 31, 84)
12 Boclair Academy (67, 15, 88)
13 Cults Academy (61, 28, 86)
14 Lenzie Academy (61, 19, 92)
15= Balfron High School (62, 25, 83)
15= Aberdeen Grammar School (61, 27, 83)
17 Strathaven Academy (61, 18, 81)
18 Woodfarm High School (55, 19, 88)
19 North Berwick High School (55, 22, 82)
20= Westhill Academy (56, 19, 80)
20= Mackie Academy (54, 24, 79)
22 Peebles High School (57, 21, 75)
23 Eastwood High School (53, 16, 87)
24 St Andrew's and St Bride's High School (55, 19, 79)
25 Linlithgow Academy (56, 17, 76)
26= Oldmachar Academy (55, 8, 86)
26= Turnbull High School (55, 11, 83)
28 Hyndland Secondary School (53, 18, 79)
29= Kirkintilloch High School (56, 15, 75)
29= Craigmount High School (51, 20, 80)
31= McLaren High School (56, 17, 72)
31= The Royal High School (52, 20, 77)
33= Currie Community High School (52, 21, 75)
33= James Gillespie's High School (48, 28, 76)
35 Dalziel High School (55, 10, 78)
36= Balerno Community High School (53, 15, 75)
36= Plockton High School (47, 23, 79)
38= Clydeview Academy (51, 15, 76)
38= Monifieth High School (51, 10, 81)
40 Earlston High School (48, 20, 76)
41 Kemnay Academy (48, 14, 81)
42 Notre Dame High School (51, 15, 73)
43= Our Lady's High School, Cumbernauld (51, 11, 76)
43= Wallace Hall Academy (44, 19, 82)
45 Aboyne Academy (46, 22, 73)
46 Hermitage Academy (45, 18, 78)
47= St Luke's High School (49, 12, 75)
47= Firrhill High School (48, 17, 72)
47= Largs Academy (46, 15, 78)
47= Madras College (45, 23, 72)
51 Elgin Academy (48, 20, 67)
52 Mearns Academy (47, 16, 72)
53= Inverkeithing High School (44, 18, 75)
53= Arran High School (39, 27, 76)
55 Stewarton Academy (45, 19, 71)
56 Queensferry Community High School (48, 15, 68)
57= Kyle Academy (46, 12, 74)
57= The Community School of Auchterarder (46, 15, 71)
59 Kinross High School (42, 21, 72)
60= Dalbeattie High School (47, 13, 69)
60= Stromness Academy (44, 12, 76)
62= West Calder High School (47, 10, 70)
62= Larbert High School (44, 11, 75)
62= St Mungo's High School (44, 14, 72)
62= Ullapool High School (44, 15, 71)
62= Alford Academy (40, 17, 77)
67= St Margaret's Academy (47, 7, 72)
67= Grove Academy (44, 13, 72)
67= Holyrood Secondary School (43, 11, 76)
67= The James Young High School (43, 16, 71)
71= St Maurice's High School (45, 8, 74)
71= St Ninian's High School, Kirkintilloch (43, 7, 79)
73= Knox Academy (45, 16, 65)
73= Our Lady's High School, Motherwell (44, 8, 75)
73= Grantown Grammar School (39, 17, 76)
76 St Thomas of Aquin's RC High School (40, 19, 71)
77 St Columba's High School, Gourock (43, 13, 70)
78= Anderson High School (41, 12, 74)
78= Dunbar Grammar School (41, 18, 68)
78= Prestwick Academy (41, 7, 79)
81= Wallace High School (45, 13, 64)
81= Broxburn Academy (44, 6, 73)
81= Culloden Academy (44, 10, 69)
81= Holy Cross High School (42, 8, 75)
81= Our Lady and St Patrick's High School (41, 12, 73)
81= Park Mains High School (41, 11, 74)
81= Ellon Academy (39, 15, 74)
88 Crieff High School (41, 15, 69)
89= Milne's High School (41, 14, 69)
89= Breadalbane Academy (36, 19, 74)
91= Millburn Academy (43, 10, 68)
91= St Kentigern's Academy (40, 11, 73)
93= Glasgow Gaelic School (68, 27, -)
93= Lasswade High School (42, 10, 69)
93= Greenfaulds High School (40, 9, 74)
93= Queen Margaret Academy (38, 10, 77)
97= Hamilton Grammar School (42, 12, 66)
97= Biggar High School (40, 11, 71)
97= Marr College (39, 9, 75)
100= Belmont Academy (39, 16, 67)
100= Stirling High School (38, 14, 71)
St Ninian's High in Glasgow's south side suburb of Giffnock making up the top three at 75 per cent.
Edinburgh's only top 10 school is Boroughmuir High which sits at fourth with 71 per cent.
The next two schools, East Renfrewshire's Mearns Castle and Williamwood, both had a greater percentage of pupils hitting the five-Higher mark, 75 and 73, respectively.
But Boroughmuir's Advanced Higher rating of 33 per cent put it above the two Greater Glasgow schools, who both ranked 24.
Gryffe High in Houston, Renfrewshire, climbed nine places to eighth with a Higher ranking of 70 per cent.
Glasgow's suburbs made up the rest of the top 10 with East Dunbartonshire schools Bearsden Academy in 7th (70 per cent), Douglas Academy of Milngavie in 9th (69 per cent) and Bishopbriggs Academy in 10th (66 per cent).
One school unfortunate to miss out on the upper reaches of the table is the Glasgow Gaelic School.
With 68 per cent of pupils hitting the five-Higher mark and 27 per cent getting two or more Advance Highers, it would have made the top 10.
But the bilingual school is placed 93rd as there are no National 5 statistics.
The statistics for individual schools were released by the Scottish government.
The measure recognised that deprived pupils generally perform worse than affluent ones.


{{Waterloo}}
Canada has well established Biosafety Regulations & Guidelines to regulate research practices. These practices can be found at the Public Health Agency of Canada website.
All operations within the University of Waterloo, the host institution, are regulated by the University of Waterloo's Safety Office. The regulations set out by the Canadian Biosafety Regulations & Guidelines affects the practices of the University. The University of Waterloo Safety Office, including the University of Waterloo Lab Safety Committee, has certified our host laboratory for the intended research. We follow the Biosafety Programs & Procedures set out by the Safety Office.
The team operated out of a host laboratory to ensure team members are supervised and well supported throughout the project. Our team performs all laboratory work in a host laboratory under the supervision of the Masters and PhD students as well as the host Faculty Member, Dr. Trevor Charles. The permits obtained by the parent laboratory cover the project carried out in the laboratory.
Our team members have completed the following training modules and procedures to prepare for working in the lab:
In order to avoid using a pathogenic chassis, the majority of our work was done using E. coli (strain level I). Although our project design was such that we would not require contact with level II pathogens, we did receive biosafety training on their handling as a precaution.
Exposure of the plants to Cauliflower Mosaic Virus occurred at Agriculture and Agri-Food Canada, and the members involved with this process received on-site instruction. There were protective requirements to prevent the virus from being released into domestic agriculture in place at this facility. Viruses recognize specific membrane receptor proteins, and as such, Cauliflower Mosaic Virus is extremely unlikely to cause a direct immune response in humans. That being said, an allergic reaction is possible from excessive inhalation. Therefore, the protocol was conducive to preventing such an improbable event from occurring.


{% extends "layouts/base.html" %} {% block title %} Tables {% endblock %} {% block stylesheets %}{% endblock stylesheets %} {% block content %}
| Author | Function | Status | Employed | |
|---|---|---|---|---|
John<EMAIL_ADDRESS>|
Manager Organization |
Online | 23/04/18 | Edit |
Alexa<EMAIL_ADDRESS>|
Programator Developer |
Offline | 11/01/19 | Edit |
Laurent<EMAIL_ADDRESS>|
Executive Projects |
Online | 19/09/17 | Edit |
Michael<EMAIL_ADDRESS>|
Programator Developer |
Online | 24/12/08 | Edit |
Richard<EMAIL_ADDRESS>|
Manager Executive |
Offline | 04/10/21 | Edit |
Miriam<EMAIL_ADDRESS>|
Programator Developer |
Offline | 14/09/20 | Edit |
| Project | Budget | Status | Completion | |
|---|---|---|---|---|
Asana |
$2,500 |
working |
60%
|
|
Github |
$5,000 |
done |
100%
|
|
Atlassian |
$3,400 |
canceled |
30%
|
|
Bootstrap |
$14,000 |
working |
80%
|
|
Slack |
$1,000 |
canceled |
0%
|
|
Devto |
$2,300 |
done |
100%
|


...this is beginning of my new journey... by Michal Dengusiak
This is my first html script. Let me intrduce myself and my family I just finished first section of HTML course at SoloLearn I am pelased that learnt quite a lot so far.
I love opensource innitatives and therefore I am working with LadybugTools. Link
Currently together with my amazing Team working on Spider project
| gbXML Viewer Aragog Link | RAD Viewer Link |


Utility class for sampling weighted random points on the surface of a mesh.
Weighted sampling is useful for effects like heavier foliage growth in certain areas of terrain, or concentrated particle emissions from specific parts of a mesh. Vertex weights may be written programmatically, or painted by hand as vertex colors in 3D tools like Blender.
[name] is an add-on, and must be imported explicitly. See [link:#manual/introduction/Installation Installation / Addons].
import { MeshSurfaceSampler } from 'three/addons/math/MeshSurfaceSampler.js';
// Create a sampler for a Mesh surface.
const sampler = new MeshSurfaceSampler( surfaceMesh )
.setWeightAttribute( 'color' )
.build();
const mesh = new THREE.InstancedMesh( sampleGeometry, sampleMaterial, 100 );
const position = new THREE.Vector3();
const matrix = new THREE.Matrix4();
// Sample randomly from the surface, creating an instance of the sample
// geometry at each sample point.
for ( let i = 0; i < 100; i ++ ) {
sampler.sample( position );
matrix.makeTranslation( position.x, position.y, position.z );
mesh.setMatrixAt( i, matrix );
}
scene.add( mesh );
[example:webgl_instancing_scatter]
[page:Mesh mesh] — Surface mesh from which to sample.
Creates a new [name]. If the input geometry is indexed, a non-indexed copy is made. After construction, the sampler is not able to return samples until [page:MeshSurfaceSampler.build build] is called.
Specifies a vertex attribute to be used as a weight when sampling from the surface. Faces with higher weights are more likely to be sampled, and those with weights of zero will not be sampled at all. For vector attributes, only .x is used in sampling.
If no weight attribute is selected, sampling is randomly distributed by area.
Processes the input geometry and prepares to return samples. Any configuration of the geometry or sampler must occur before this method is called. Time complexity is O(n) for a surface with n faces.
Selects a random point on the surface of the input geometry, returning the position and optionally the normal vector, color and UV Coordinate at that point. Time complexity is O(log n) for a surface with n faces.
[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/math/MeshSurfaceSampler.js examples/jsm/math/MeshSurfaceSampler.js]


Connect4-Console
Connect 4 game to be played in browser console
Open console and start playing
How To Play
Just type in the column name and press enter in console to play