powered by NetLogo
view/download model file: consumersMKT.nlogo
Consumers Profile Monitor is an simple adaptation from Evolution Employee, designed for The Organisational Responsibility Model (Passos, Chamovitz and Theodoulidis), which was built based on the Aging Chains model proposed by John Sterman in the book Business Dynamics: Systems Thinking and Modeling for a Complex World.
Original model had been constructed to help managers to monitor status of 3 types of employees: Trainees, Common Employees and Masters, during employee life cycle.
Staff evolution model mapped the evolution of professionals’ careers, taking into account PROMOTION and OUTFLOW along employee life cycle, from hiring up to retirement.
Consumers Profile Monitor considers 3 TYPES OF CONSUMERS: BEGINNERS, COMMON AND MASTERS .ere is a DELAY that makes the employee takes certain time to pass from beginner to more experienced positions. There is also ANOTHER DELAY for the employee to pass from the last employee stage, master, to finish his career at that company. The closure can be prematurely finished, along the intermediate stages.
The model was adapted from the original to allow SHORT-TERM OR LONG-TERM LEAVES, and the main consequence is the consequent delay for their evolution/promotions, causing the employee to remain longer at each stage.
Agent Based Modelling allows modelling each agent individually. For this model there is a PROBABILITY for each different agent leaving the company, as well as a different TIME for the agent to STAY TEMPORARY OUT of the company.
The model then allows the manager to perform simulations changing parameters until he gets to a number of hires that allows, through the replacement of staff, to keep company with a suitable crew to keeping running it’s services.
Suppose there is a place where a product need to be tested in a specific population from a limited and closed region. For this model, no new clients are considered, since there is a specific period to test the product (for example 35 weeks).
This product can have 3 distinct types of consumers. As they get older, they can change their behaviour. One example could be an anti-aging cosmetic.
AGENTS (consumers) can assume different STATUS:
Beginners (B) is true when the agent is a beginner
Common Consumers (C) is true after beginners upgrade
Masters (M) is true after Employee upgrade
When the test starts, no new consumers enter the system. However, customers can stop to consume (they are OUT OF MARKET) for a short or long time, due to a trip, a disease, or other cause.
When an AGENT is OUT OF THE MARKET, status assume values as follows:
Beginners_OutOfWork (T) is true if beginner is is out
Beginners_OutOfWork (C) if true if common consumer is out
Beginners-OutOfWork (M) is true if master is out
The test starts with all consumers being beginners and no one out of company.
Along the time, the 3 groups of agents (B, M, C) upgrade their status.
fraction-1 - determiines a fraction from the quantity of beginners that will be upgraded
delay-promotion-1 - defines how long (weeks) does it takes to be upgraded from B to C
fraction-2 - determines a fraction from the quantity of common employees that will be upgraded
delay-promotion-2 defines how long (weeks) does it takes to be promoted from C to M
fraction-T - ramdomically gives the number of beginners that were away that year
delay-T - ramdomically gives the number of beginners that came back to the market after being away
fraction-C - ramdomically gives the number of common consumers that were away that year
delay-C - ramdomically gives the number of common consumers that came back to the market after being away
fraction-M - ramdomically gives the number of masters that were away that year
delay-M - ramdomically gives the number of masters that came back to the company after being away
delay-retirement - defines the number of masters that left definitely the market.
Whilst AGING,
part of each group will be UPGRADED -
how many: (Consumer / delay-promotion ) * fraction
(“1” controls promotion and delay from B to C and 2 controls promotion from C to M )
the other part of each group that is not away and REMANIN CONSUMING, IN MARKET -
how many: ( Employee / delay-promotio ) * ( 1 - fraction )
part of each group will LEAVE TEMPORARY the market (i.e. on license, illness) -
how many: ( Employee * fraction )
part of each group will RETURN TO THE MARKET -
how many: ( Beginner_OutOfWork / delay )
select the number of new consumers (beginners) are entering the market for the test.
Than try to change fraction_1 consider a test after a period and part of them will not be promoted, only X %.
Run the model and observe the graphic.
Do the same with fraction_2
Run the model again and observe the graphic.
Consider, for start:
These parameters reflect the opportunity that the company offers for public workers for building a career for life in the company. Nowadays the profile of the youth follows a different behavior, they does not think of staying in the same organization for all his life.
This parameter reflects consumers’ fidelity stability. Some consumers stop to buy products and return, after a time.
Fraction T, C and M indicate the percentage of consumers that stay temporary out of the market.
These parameters reflect the state of health of the population (consumers), if a region quite unhealthy this value can be high. Consider a coal mine, for example.
Delay T, C and M indicate the time of consumers being away.
These parameters reflect two things:
1) high if the health status of the population is very poor, an important point may be the HDI of the region.
2) low if it is an university region, due to Masters, PhDs, Post-docs or Sabbatical year in some cases.
Modify the main parameters and compare the graphics, and the final results.
This model was extended from Production and Business Management to the Market field, to monitor consumers behaviour.
This section could give the names of models in the NetLogo Models Library or elsewhere which are of related interest.
Thanks for Uri Wilensky
References:
NetLogo website. http://ccl.northwestern.edu/netlogo/,
PASSOS, G.F. CHAMOVITZ, I. Modelo De Responsabilidade Organizacional, Aplicado Em Empresa Pública De Tecnologia Da Informação E Fundamentado Em Dinâmica De Sistemas. In: IX Congresso Nacional de Excelência em Gestão – CNEG 2013, 2013, Rio de Janeiro – RJ.
PASSOS, G.F. CHAMOVITZ, I., THEODOULIDIS, B. Organizational Responsibility Model: Dealing with demand for services higher than installed capacity. Article accepted for presentation at the IEEE SMC 2013 Conference (SMC: Systems Science), October, 2013.
STERMAN, J. Business dynamics: systems thinking and modeling for a complex world.Boston, MA: Irwin McGraw-Hill, 2000
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.
;; vari�veis globais globals [ Employee_Trainee Employee Employee_Master Total-Employees Trainee_OutOfWork OutOfWork Employees_OutOfWork Masters_OutOfWork ] turtles-own [ Employee_Trainee? ;; se verdadeiro, a pessoa eh Employee Trainee Employee? ;; se verdadeiro, a pessoa eh Employee Employee_Master? ;; se verdadeiro, a pessoa eh Master Employee Trainee_OutOfWork? ;; se verdadeiro, a pessoa esta como Employee Trainee Afastado Employees_OutOfWork? ;; se verdadeiro, a pessoa esta como Employee Afastado Masters_OutOfWork? ;; se verdadeiro, a pessoa esta como Mestere Employee Afastado ;; anos-na-empresa ;; anos da pessoa na empresa ] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; prepara o programa para ser executado ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to setup ;; (for this model to work with NetLogo's new plotting features, ;; __clear-all-and-reset-ticks should be replaced with clear-all at ;; the beginning of your setup procedure and reset-ticks at the end ;; of the procedure.) __clear-all-and-reset-ticks ;; limpa todas vari�veis e a interface set-default-shape turtles "person" ;; prepara a tartaruga para a forma person (pessoas) crt num_initial_consumers [ ;; cria as pessoas de acordo com o n�mero de pessoas set Employee_Trainee? true ;; atribui verdadeiro ao estado Employee Trainee da pessoa set Employee? false ;; atribui falso ao estado Employee da pessoa set Employee_Master? false ;; atribui falso ao estado Master Employee da pessoa set Trainee_OutOfWork? false ;; atribui falso ao estado Trainee_OutOfWork da pessoa set Employees_OutOfWork? false ;; atribui falso ao estado Employees_OutOfWork da pessoa set Masters_OutOfWork? false ;; atribui falso ao estado Masters_OutOfWork da pessoa set color yellow ;; atribui cor amarela � pessoa no estado Employee Trainee set size 1.5 ;; atribui 1.5 ao tamanho da pessoa, mais f�cil de ver setxy random-xcor random-ycor ;; posiciona aleatoriamente as pessoas no patch ] atualiza-variaveis-globais ;; executa a procedure que atualiza variaveis globais reset-ticks end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; executa o programa, procedure principal ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to go envelhece ;; executa a procedure que envelhece a pessoa move ;; executa a procedure que move a pessoa atualiza-variaveis-globais ;; executa a procedure que atualiza variaveis globais tick if ticks = (delay_retirement + delay_promotion_1 + delay_promotion_2) [ stop ] end to atualiza-variaveis-globais ;; procedure que atualiza variaveis globais set Employee_Trainee count turtles with [Employee_Trainee?] set Employee count turtles with [Employee?] set Employee_Master count turtles with [Employee_Master?] set Trainee_OutOfWork count turtles with [Trainee_OutOfWork?] set Employees_OutOfWork count turtles with [Employees_OutOfWork?] set Masters_OutOfWork count turtles with [Masters_OutOfWork?] set OutOfWork ( Trainee_OutOfWork + Employees_OutOfWork + Masters_OutOfWork ) set Total-Employees ( Employee_Trainee + Employee + Employee_Master + OutOfWork ) update-plot ;; atualiza o gr�fico end to envelhece ;; procedure que envelhe as pessoas ask n-of ( ( Employee_Trainee / delay_promotion_1 ) * fraction_1 ) turtles with [Employee_Trainee?] [ promove-Employee ] ask n-of ( ( Employee_Trainee / delay_promotion_1 ) * ( 1 - fraction_1 ) ) turtles with [Employee_Trainee?] [ demite-Trainee ] ask n-of random ( Employee_Trainee * fraction_T ) turtles with [Employee_Trainee?] [ afasta-Trainee ] ask n-of random ( Trainee_OutOfWork / delay_T ) turtles with [Trainee_OutOfWork?] [ retorna-Trainee ] ask n-of ( ( Employee / delay_promotion_2 ) * fraction_2 ) turtles with [Employee?] [ promove-Master ] ask n-of ( ( Employee / delay_promotion_2 ) * ( 1 - fraction_2 ) ) turtles with [Employee?] [ demite-Employee ] ask n-of random ( Employee * fraction_C ) turtles with [Employee?] [ afasta-Employee ] ask n-of random ( Employees_OutOfWork / delay_C ) turtles with [Employees_OutOfWork?] [ retorna-Employee ] ask n-of ( Employee_Master / delay_retirement ) turtles with [Employee_Master?] [ promove-retirement ] ask n-of random ( Employee_Master * fraction_M ) turtles with [Employee_Master?] [ afasta-Master ] ask n-of random ( Masters_OutOfWork / delay_M ) turtles with [Masters_OutOfWork?] [ retorna-Master ] end to promove-Employee set Employee_Trainee? false ;; atribui falso ao estado Employee Trainee da pessoa set Employee? true ;; atribui verdadeiro ao estado Employee da pessoa set color blue ;; atribui cor azul � pessoa no estado Employee end to promove-Master set Employee? false ;; atribui falso ao estado Employee da pessoa set Employee_Master? true ;; atribui verdadeiro ao estado Master Employee da pessoa set color green ;; atribui cor azul � pessoa no estado Employee end to demite-Trainee set Employee_Trainee? false ;; atribui falso ao estado Employee Trainee da pessoa die end to demite-Employee set Employee? false ;; atribui falso ao estado Employee Trainee da pessoa die end to promove-retirement set Employee_Master? false ;; atribui falso ao estado Master Employee da pessoa die end to afasta-Trainee set Employee_Trainee? false ;; atribui falso ao estado Employee Trainee da pessoa set Trainee_OutOfWork? true ;; atribui verdadeiro ao estado Trainee Afastado da pessoa set color red ;; atribui cor vermelha � pessoa afastada end to retorna-Trainee set Trainee_OutOfWork? false ;; atribui falso ao estado Trainee Afastado da pessoa set Employee_Trainee? true ;; atribui verdadeiro ao estado Employee Trainee da pessoa set color yellow ;; atribui cor amarela � pessoa no estado Employee Trainee end to afasta-Employee set Employee? false ;; atribui falso ao estado Employee da pessoa set Employees_OutOfWork? true ;; atribui verdadeiro ao estado Employee Afastado da pessoa set color red ;; tribui cor vermelha � pessoa afastada end to retorna-Employee set Employees_OutOfWork? false ;; atribui falso ao estado Employee Afastado da pessoa set Employee? true ;; atribui verdadeiro ao estado Employee da pessoa set color blue ;; atribui cor azul � pessoa no estado Employee end to afasta-Master set Employee_Master? false ;; atribui falso ao estado Master Employee da pessoa set Masters_OutOfWork? true ;; atribui verdadeiro ao estado Master Afastado da pessoa set color red ;; tribui cor vermelha � pessoa afastada end to retorna-Master set Masters_OutOfWork? false ;; atribui falso ao estado Master Afastado da pessoa set Employee_Master? true ;; atribui verdadeiro ao estado Master Employee da pessoa set color green ;; atribui cor verde � pessoa no estado Master Employee end to move ;; move todas as pessoas ask turtles [ rt random 100 lt random 100 fd 1 ] end to update-plot ;; atualiza o gr�fico set-current-plot "population" ;; seta o gr�fico population como corrente set-current-plot-pen "Beginner" ;; atualiza a vari�vel pessoas Employee_Trainee plot Employee_Trainee ;; plota o n�mero de pessoas Employee_Trainee no gr�fico set-current-plot-pen "Consumer" ;; atualiza a vari�vel pessoas Employee plot Employee ;; plota o n�mero de pessoas Employee no gr�fico set-current-plot-pen "Master" ;; atualiza a vari�vel infectadas Employee_Master plot Employee_Master ;; plota o n�mero de pessoas Employee_Master no gr�fico set-current-plot-pen "Away" ;; atualiza a vari�vel pessoas Afastadas plot OutOfWork ;; plota o n�mero de pessoas OutOfWork no gr�fico set-current-plot-pen "Total" ;; atualiza a vari�vel total de pessoas plot Total-Employees ;; plota o n�mero total de pessoas end