Computational Model Library

Optimising Emergence (1.0.0)

Project description
“This work presents an Agent Based Model of a greenhouses horticultural sector developed using a CAS approach. In the model, agents represent greenhouses competing to raise crops and remain profitable through their choice of various technologies to control the internal climate conditions of greenhouses. The technologies become available for purchase over time under different experimental conditions to mimic how technologies could be optimized, either in isolation, in conjunction with the other technologies of a single greenhouse, or directly in response to the performance of all the technologies in all the greenhouses of the community. The total improvement in performance, and the rate of improvement justify a closer look at how technological development is approached, including matters of patents, intellectual property, and open source development.”

  1. Introduction
    1.1 Problem statement

The Dutch greenhouse horticulture sector has a world leading position in innovative greenhouse technologies and high yield crops. However, continuously innovation is of great importance to remain competitive over producers from low-wage countries. The profitability is also under pressure by increasing fuel prices, increased sustainability targets and pressure on marketprices of crops by competing supermarket concerns.

However, due to the continuous innovation, greenhouse systems are becoming more and more complex systems. Innovation creates more possible combinations to attain the optimal condition. Closed greenhouse systems make it possible to not only control the temperature, light intensity and humidity, but also the CO2 level more accurately. Technologies which combine different functions can be used more often, like heating, electricity generation and CO2 injection is combined in cogenerators. Not only the possibilities to attain the optimal condition increases, but technologies which influence multiple conditions also interact with each other and mutually influence each others performance. A cogenerator does not only influence the electricity supply and temperature, but also the CO2 level. A lightsystem and a heater will also effect the humidity, by influencing evaporation. It is plausible that an airconditioner which injects CO2 gases in the greenhouse will also effect the air pressure and the humidity. With this perspective on greenhouses, the assumption that the performance is the result of the sum of each main technology influence cannot be made anymore. Rather it is more likely that the internal condition and the crop production are emergent properties of the system.

Epistatic effects within greenhouse systems
Research in the field of (micro)biology shows the existence of epistatic effects, where the overall effect cannot be explained from the different components of the system but exists within the interaction between the components. Because different technologies interact together to create an overall condition, epistatic effects might also occur within a greenhouse system.The resulting undesired deviation of the performance from the designed performance, should be minimized as much as possible.
Development strategies

The perspective on the performance as emergent property will have consequences for the effectiveness of development strategies of Technology developers. Currently, technologies are mainly developed in isolation. Developers are competitive, protect their intellectual properties from other developers and pursue their own specific goals. Cooperative development is therefore contested and unusual. Cooperated design will also lead to slower and more eexpensive development, because developers have to cope with coordination issues, integration of different designs and contractual agreements. However, if the internal condition emerges from the interaction between techologies, the actual performance of the components will differ from the designed performance. In this case, developers have to develop in cooperation and test the side effects of their technologies, in order to reduce negative epistatic effects and improve the overall performance of the greenhouse.

1.2 Lack of insight
The specific causes of the formulated problem; undesired deviations of performance from the designed performance, are unclear and uncertain. It is unknown or the hypothetical occurence of epistatic effects in greenhouses can be disproven or not. The effect of the developmentstyles, which style will result in the highest performance and why this will be, is unknown.

1.3 Goal of the research
The goal of the model is gain insight in the possible impact of epistatic effects on the performance of greenhouse owners and the effects different development styles have on the performance of greenhouses.

The research question is: Is there a difference in performance between developmentstyles and which developmentstyle leads to the best performance?

Subquestions that can be distracted from the research question, in order to answer it are:
Which development styles can be distinguished and to what extent do they differ?
What is the influence of development styles on the diffusion of technologies?
What is the effect of different circumstances on the preference of a developmentstyle?
What is the effect of the development styles on the long run, do they influence how fast the improvement of the relative production stabilizes?

1.4 Behavioral pattern of interest
The internal climate of the greenhouse and the actual production are the macroscopic regularities of interest, their behavioral pattern emerges from the interaction between technologies. The actual production is the behavioral pattern of specific interest, with this the performance indicators ‘Relative Production’ and ‘Mean Profit’ can be calculated.

Current hypothesis: The performance of a greenhouse can be explained from the different components of the system, the technologies. The performance follows from the sum of the technology influences. Technologies are developed best competitively and in isolation.

Hypothesis: Research in other sectors show that single, competitive development does not always lead to the best performance. Cooperative development of the components will lead to a better overall performance because epistatic effects can be taken into account during the design. With cooperative development, the actual performance will differ less from the designed performance, the relative production will be higher.

1.5 Desired behavioral pattern
An actual performance that deviates less from the designed performance is desired. The desired pattern is a more optimal internal climate, that will lead to a higher relative production and a higher profit.

1.6 Actors
Whose problem?
The actors that have interests in the research are the Greenhouse owners, Technology developing companies and governmental parties that have stakes in the “Westland horticultural region”. As governmental organization, especially the Ministry of Economic affairs is an actor with interests, because it subsidizes the region to stimulate innovation. TNO might also be an involved actor, because it is a research institute that researches the technological development in the horticultural sector and advises the Ministry.

Especially the Greenhouse owners will be confronted most with the described problem in 1.1. The purchase of a technology that will have a lower performance than designed, will lead to lower profit and might lead to sunk costs. Greenhouse owners are finally responsible for the composition of the greenhouse and developers will probably blame Greenhouse owners if the performance is lower than expected. With the application of different developmentstyles, Greenhouse owners will be interested in whether the additional expenses on a co-developed technology will be paid back by an increased performance. However, the increased performance can only be known from usage of the technologies, because the emergent patterns cannot be fully predicted. A greenhouse owner therefore will base his decision to purchase a technology mainly on own experience and on opinions of other greenhouse owners.

Developers also have interests in the research. A recommended development strategy have to be adapted by the companies which develop and market the technologies.

Our role
Our role is to develop a model of the defined problem and to answer the research question with insights that follow from the modelling proces and the experimentation. Our perspective on the problem and our background, will inevitable influence the process, the chosen assumptions and followed, the final results. Awareness is therefore important and frequent reflection on our translation of the perspective of the problem owner, is required.

  1. System identification
    In this chapter all the necessary concepts that will be used in the model, will be specified, with the focus on necessary, as modelling can be seen as a means to an end and not a goal in itself. In an ABM model agents interact together based on a set of internal rules and external interventions from the environment. Therefore there has been chosen to divide this chapter in three sections: agents, interactions and environment. There is chosen to represent the identified and specified system with a mindmap, that can be found in the appendix. With the use of a mindmap, the system is presented in a clear and intuitive way, which makes it easier to associate properties with their objects or agents and agents with their actions, states and rules.

2.1 Agents
Agents are things that have control over their own internal state and behavior, they are able to react on environmental changes, have clear boundaries and act autonomously, in order to achieve their goals. For this model, there is only one type of agents, the Greenhouse owners.

Greenhouse owners
Greenhouse owners attempt to upgrade their technologies in order to increase their control on the internal climate of the greenhouse. The closer the optimal conditions are approached, the closer the actual yield will approach the optimal yield, the higher the profit will be, which the Greenhouse owner wants to maximize.

Properties
GreenhouseCroptype
Each greenhouse will either cultivate Veggies or Flowers. For both croptypes, there is an ideal climate under which this croptype will produce the highest fraction of their “Potential yield”. Therefore the croptypes exists of the following properties:
Ideal Temperature in [°C]
Ideal CO2 concentration in [ppm]
Ideal Humidity in [%]
Ideal Light Intensity in [lux]
Potential yield number
Market price [€/crop unit]
Purchase price [€/crop unit]

GreenhouseTechnologyList
Each greenhouse consists of four different technologies, each from a different Technology category. The technologies interact together to reach the internal climate where the crop production is optimal. There is assumed that each technology not only influences its own climate variable:

TechnologyA = Heater: Influences primary the temperature, and has a negative effect on the humidity and a positive effect on the CO2 concentration. The engine of the heater will produce CO2, but more water will evaporate, which will have an effect on the humidity.
TechnologyB = CO2 technology: Influences primary the CO2 concentration, and has a negative effect on the humidity and a positive effect on the temperature. Just as the heater, the CO2 technology will produce heat, which will have an effect on the amount of water which will evaporate.
TechnologyC = Humidifier: Influences primary the humidity, and has a negative effect on the light intensity and a positive effect on the temperature. The engine of the pump will produce some heat, and the higher the water percentage in the air, the stronger light will be broken and diffused.
TechnologyD = Lights : Influences primary the light intensity, and has a small negative effect on the humidity and a positive effect on the temperature. The lights will produce heat, and this heat will also increase the evaporation of water.

For every technology there are five different products. Each Product has a:
Influence number on some specific items of the internal climate:
Temperature
CO2 concentration
Humidity
Light Intensity
Energy use
Cost price
Lifespan
Product number

OpinionLibrary
Every greenhouse owner forms an opinion about the products which are available on the market. This opinions depends on his own experience, and the experience with that product of his neighbours multiplied by a Stubbornness Factor.

Bankaccount
Profits are added to the bankbalance and expenses on technologies and energy use are extracted from it. If the bank balance is negative, the greenhouse owner goes bankrupt and will be replaced.

Actions
1. Calculate Production
Calculate the sum of all the influence numbers for the four particular climate properties. The maximum of this total influence is 1. If the vectors of all four influence numbers are equal to 1, the Ideal climate = Internal climate.
Calculate relative climate range = 1 - ( ( |External - Ideal| / Ideal ) - sum of influences of particular climate property * ( |External - Ideal| / Ideal ) )
Calculate mean of all climate influences
Production = Potential yield x mean of all climate influences

  1. Calculate Total Energy use
    Calculate sum of energy use of all technologies

  2. Update Bankaccount
    Set marginal revenue: (Market price - Purchase price)
    Set Total revenue: marginal revenue x actual production
    Set Energy costs: Total energy use x fuel price
    Set bank account: bank account + total revenue - Total energy costs
    If budget is smaller than zero, Greenhouse owners goes bankrupt and resets his properties to the initial values, to represent a start-up
    Calculate depreciation of technologies: Costs / Lifetime
    Set Profit: Marginal revenue x Actual production - Energy costs - Depreciation of technologies

  3. Revise Opinions
    For the products currently using, Set Opinion = (Current Opinion + Actual Production / Potential yield) / 2

  4. Share Opinions
    Ask all link-neighbours with the same croptype adapt their opinions based on the opinion of myself
    For link-neighbour with the same croptype and particular opinion for product X is equal to 0, Set Opinion = Stubbornness Factor * Opinion of myself
    For link-neighbour with the same croptype and particular opinion for product X is unequal to 0, Set Opinion = (Opinion + Stubbornness Factor * Opinion of myself) / (1 + Stubbornness Factor)

  5. Purchase Technologies
    Check for every product whether the lifespan is equal to zero, if so:
    Replace this product by the product fow which the greenhouse owner has the highest opinion
    If the bank account is smaller than the costprice of this product, select all the products which he can afford
    If this list is empty (this means that there is no affordable technology available) the greenhouse owners is bankrupted and will be replaced by a new one
    If this list isn’t empty, select a random product and replace the overaged product with this one.

  6. Adjust Lifetime Technologies
    Set lifespan of all owned products - 1
    2.2 Interactions (with the environment)
    The greenhouse owners interact with the environment when they calculate their profit, and when they purchase new products. In order to do this the greenhouse owners have to know the:
    Current external climate
    Ideal climate of their crop type
    Potential yield of their crop type
    Crop type market and purchase prices
    Fuel price
    Products for sale
    Opinion of Neighbors on technologies
    Available Technologies from all the Technology markets

2.3 Environment
Periodically technology markets improve products according to a style which can be changed by the modeller. There are as much as markets as technology categories, four. Periodically, the markets replace products by improved versions which than become available for greenhouse owners to buy.
Properties
Technology category, either A, B, C or D.
Products: Each market has a fixed number of products (5) which are replaced by newer versions when updated. The products can be seen as different brands.

Actions
Every tick, one of the technology markets will improve one of their five products in the following order:
Select a product from the technology category, based on one of the following criteria:
Technology with highest main function
Technology from best performing Greenhouse
Create three copies of this product, and for all three: improve the main function and randomly change the secondary functions
Select one of the created copies, based on one of the following criteria:
Copy with highest main function
Copy with highest sum of all influences
Replace the ‘old’ product with the improved version

As mentioned before, there are three different ways in how a technology market can improve a certain product: Protected development, Limited cooperation, and Open source cooperation. For every step order of the steps above will be the same. Differences between these styles can be found in step 1 and 3, for which two options are possible.

Protected development: Step 1.1 and 3.1. With Protected development, technologies are competitively developed in isolation. This development style fits best the perspective that greenhouses are simplistic systems, where the performance follows from the sum of the parts, the existence of epistatic effects is ignored. The main function is only taken into account is the goal of the improvement, therefore steps 1.1 and 3.1 hold for this style. As side effect secundary functions are also influenced and randomly changed.

Limited cooperation: Step 1.1 and 3.2. With Limited cooperation, developers still aim to improve the main function (step 1.1), but are aware of the side effects and know all the influences, by cooperation. Therefore, they select the copy with the highest sum of all influences (3b).
Open-source cooperation: Step 1.2 and 3.1. Due to open source information sharing, developers are able to know the actual performance of greenhouse owners and aim to improve their best actual performing technology. Therefore selection method 1.2 is used. Finally, the highest main function is chosen.

Successive improvement of technologies
An important design choice in this section is the existence of the ImproveSameTechCounter? . In selection step 1.1 the product with the highest main function will be selected over and over again, the improvement will be path dependent. In reality, technologies will not always remain dominant and preference can change over time. To include this and encounter the dominance effect, the ImproveSameTechCounter? keeps track of the number of a times a certain product will be improved in a row. When this number is equal to the ImproveSameTechCounter? a random product will be chosen. When the same product will be chosen, the next round again a random product will be chosen as long as another product will be selected. The value prevents that always the same technology will be improved and will introduce some randomness to the improvement.

As conclusion, in order to improve the products there must exist a:
ImproveSameTechnologyCounter?
Development Style: Chooser to select a different development style
Main Influence Range: It expresses the range in which the main function of a product can be improved. A random-float number between zero and this value will be add to the current number.
Sec Influence Range: A random-float number between - this value and + this value will be add to the current number.
CostPriceCooperativemultiplicator? : The rate in which the costprice of a product is improved with limited cooperation. Assumed is that cooperative development is more expensive than Protected development.

  1. Behavior identification
    In chapter 2, the structure of the system is explained, in this chapter the behavior of the entities within the system and the environment will be identified. The behavior will follow from the actions, defined in chapter 2. Everything that needs to happen, every tick is given and the order of the interactions is also determined. The ‘setup’ and the ‘go’ procedures are defined.
    Setup

The initial structure of the model is created by the environment.
Each Technologymarket is created (A, B, C, D)
Every Techmarket creates its own set of technologies. For every technology, the following Properties are determined
Tech_Temp: Influence on temperature
Tech_CO2: Influence on CO2 concentration
Tech_Hum: Influence on Humidity
Tech_Light: Influence on Light Intensity
Energy use
Cost Price
Lifespan
Productnumber: Distinguishes the product from other products of the same market
Technology Market number
Network structure: The structure of the Netlogo model that is most suitable to model the problem is a network structure. Greenhouse owners will represent nodes, their relations are links. The structure is based on the already existing networkmodel ‘Preferential Attachement’.
Give Greenhouse owners their initial properties:
Greenhouse Technology list: A list of the four initial technologies the Greenhouse gets
Croptype
Opinionlibrary: An empty list of 5 values, the number of different products per Technology market.
Bankaccount: The initial value is determined by the environment

Tick
The procedures that are executed every tick are described. There is described or an action is executed by the environment or by which agent. The procedures in italic are executed by the environment.
Reset Relative Production
Calculate Production.
Bankaccount = Bankaccount - Buyingprice Croptype x Potential yield
Sum Techinfluences = sum of all influence number of the same Climate variable
Production = mean Σ (1-((Ext. climate - Ideal climate)/Ideal climate - Sum TechInfluences? * (Ext. climate - Ideal climate)/Ideal climate ))
Calculate Total Energy use
= Energy use TechA? + Energy use TechB? + Energy use TechC? + Energy use TechD?
Update bankaccount
Marketprice x Actual production - (Total Energy costs x Fuel Price)
Revise Opinion
Own Opinion = Actual Production / Potential yield
Improve Technologies
Each Technologymarket will improve a technology, based on the selected development style
Share Opinions
Opinion = mean (Own Opinion + Neighborsopinion x stubborness factor)
Purchase new Technologies
If Lifespan = 0, set TechnologytoPurchase?
Adjust lifetime technology
= Lifespan - 1
Visualize
Update network visualization to current states.
Reset Counter of Number of Greenhouseowners per croptype

  1. Model formalisation
    In this chapter, the inventory of the model is described in detail. In the Appendix, a mindmap of the system is included. The mindmap described in detail all relevant concepts, interactions, states and properties of the system. Finally, the main modelling assumptions are explained.
    Settings
    Time frame
    A single year is modelled as one tick, the time horizon of the model will be 150 ticks. A time horizon of 150 year is very long, but explainable because of the exploratory nature of the model. The behavior of the system is uncertain and it is unknown when the behavior of the system will converge to a stable attractor. It is plausible that the Actual production will approach the Potential Production, since the influence numbers are improved every tick with a limit to 1. However, when this will occur is uncertain. During the experimentation, there will be also experimented with extreme long runs, of 1000 ticks.

4.1 Modelling Assumptions
1. Technology developers
Technology developers will be part of the environment because they develop technologies independently from greenhouse owners. The technology market does not limit itself to the “Westland” region, developers therefore can be assumed to develop technologies independently from the actions of greenhouse owners in the “Westland” region. greenhouse owners are influenced by actions of developers, developers determine the properties of the available technologies on the market. Developers are not represented as single developers, but as Technology markets. Each Technology market has five different technologies that alternately are improved. In reality, a technology market will be dominated by a limited number of technology series, which are frequently improved.
Technology developers will randomly improve the main function of technologies within boundaries and randomly change the secundary functions within boundaries. The costprice will be also improved but the lifetime and the energy use will remain constant.

  1. Croptype
    Greenhouse owners cannot change their crop type, croptype distributions can only change if Greenhouse owners go bankrupt. In reality, growers also rarely shift to another crop type.

  2. Purchase of technologies
    Technologies can only be bought when the lifespan equals zero. Bankrupt Greenhouses are r eplaced by new greenhouses, who starts over with a basic technology and crop variety.
    Technologies are only bought if their costs fall within the budget.

  3. Information sharing between greenhouseowners
    Greenhouse owners only share their opinion with their direct neighbors, with which they are direct connected. Links in the network represent business relations and Greenhouse owners will only share confidential information about how the technologies are performing with
    Technologies are bought based on Opinion. A technology that is never been used before by the Greenhouse owner himself or his neighbors will have an Opinion equal 0. In this way, the owner only will buy a technology that he ‘knows’, from his neighbors or by experience.
    Greenhouseowners only share information with neighbors with the same Croptype. (so an isolated greenhouseowner with another croptype than his neighbor will never share opinions, because the performance of a technology is differs per Croptype.)
    The Opinion is the average of all the neighbors opinions x stubborness factor and the Own opinion.
    The Own opinion is based on the relative production, which is the ratio of the actual and the potential crop yield.

  4. External crop properties
    The output of the small horticulture, greenhouse sector will be small, compared to the demand of the whole European crop market, which can be seen as the selling market for the products. Therefore, the market price can be assumed to be external, because changes in output of the greenhouse sector will have an infinite small effect on the whole market price.
    The retailer purchase price for crop seeds, can also assumed to be external, internal changes in seed demand will not have a significant effect on changes in price.

  5. Software implementation
    Process
    The code is created on an irative way, the final model is the result of seventeen different versions. Also the length of the code is extremely shortened during the proces, by the use of combined lists and arrays and by iteration of equal procedures. During the implementation, assumptions and modelling decisions were frequently consulted with the client.

Usage of arrays
The model contains a lot of variables for which it is very useful to use lists. Lists can be easily nested which is necessary to model Techmarkets, which consists of different technology products, which have different properties. Instead of lists, their is chosen to mainly use arrays, for practical reasons and to gain computational speed. Almost all lists in the model remain the same length over time, items in the lists need to be replaced, while in arrays, single items can be changed. Technologies have a fixed set of properties that need to be updated over time, by using an array, only the particular item is replaced. In case of lists, the whole list would be deleted and recreated, what would demand more computational time. Also the libraries Greenhouseowners have of the Opinions and of the Technologies they can purchase can be modelled as arrays. Improved technologies replace older versions so the length of the Technologylist and number of possible Opinions does not change. The Opinion of an unknown technology will be equal to zero.

Dummy values
There is chosen to use dummy values instead of historical data. Time is limited and the research should focus especially on the essential parts of the proces, that are needed in order to achieve the goal of the research. It will be possible to gain insights in the relative impact different development styles have on the performance, without real values. The results should be interpreted carefully, there can be stated something about the possible relative impact and direction of the different styles and changed circumstances. Dummy values will include more uncertainty in the model, a broad range of experiments and a long time horizon should be therefore used in the experimentation.

  1. Model Verfication
    In this chapter we try to answer the question whether the developed model behaves according to our expectations. In other words; Is the code consistent with what we intended to program? In order to answer this question the model will be verified in four different steps:

    Recording and tracking agent behaviour
    Single-agent verification in which the behaviour of each type of agent is verified.
    Minimal model interaction verification in which the interaction between a minimal set of agents is tested.
    Multi-agent verification in which the emergent behaviour of multiple agents is verified.

6.1 Recording and tracking agent behaviour
Below a picture is showed to explain some interactions within the model. The picture is a result of running the model for 150 ticks, and turning on two different debuggers “WhatKindOfCroptype?” and “WhatKindOfTechnologyA?”.

Recording and tracking agent behaviour
From the picture can be concluded that in the long run, greenhouse owners with the same crop type (colour) will have the same technology (number of the dice). Isolated greenhouse owners will never know what the best technologies are at a certain moment. The fact that there are connected greenhouse owners with the same crop type, but a different technology can be explained by the fact that greenhouse owners are replaced when they are bankrupted and the influence of the stubborness factor. Also the fact that if greenhouse owners that are surrounded by isolated neighbors with both different technologies, are likely to t stick to their own technology, expect it will perform relatively really bad.

6.2 Single agent testing
With single agent testing the behaviour of a single agent will be verified. This can be done through two different tests:

1. Theoretical prediction tests and sanity checks: does the agent behave as expected under normal conditions?
2. Break-the-Agent tests: where are the edges of normal behaviour?

6.2.1 Theoretical prediction tests and sanity checks
In this step relevant input and output variables are monitored to verify whether the procedures work as they have to. In the model roughly two different processes can be identified, the agent behaviour and the market interventions. For both processes the most difficult procedures are analysed by comparing a theoretical expectation and actual outcome.

Agent behaviour
The different procedures which a greenhouse owner should execute are categorised in four steps.

Step 1: CalculateProduction? , CalculateTotalEnergyUse? , UpdateBankaccount? , ReviseOpinions? .
CalculateProduction? : The most important output variable of this procedure is the ActualProduction? .

Check if formula is correctly coded.

Adaption: Influence numbers are set equal to 0.1
Expectation: The sum of all the influences per category will be equal to 0.4 With the default settings the ActualProduction? for Veggies should be equal to mean (0.815 0.56 0.992 0.829) * 800 = 639
Outcome: Confirmed

ActualProduction? greenhouseowner 0: 639.1912087912087

The ActualProduction? can't be higher than the PotentialYieldNumber? .

Adaption: The main influence numbers of the different technologies are set to a value of 200%
Expectation: The ActualProduction? must be equal to the PotentialYieldNumber? , because the total influence number is set to 100%, when the sum is higher than 100%.
Outcome: Confirmed

PotentialYieldNumber? : 800
ActualProduction? greenhouseowner 0: 800
ActualProduction? greenhouseowner 1: 800

ReviseOpinions? : The most important output variable of this procedure is the OpinionLibrary? .

Greenhouse owners can only revise opinions about technologies which they own

Adaption: Influence numbers are set equal to 0.1. Product numbers are set to 0.
Expectation: The OpinionLibrary? should only contain values for array key 0, equal to 639 / 800 = 0.799
Outcome: Confirmed

OpinionLibrary? of greenhouse owner 0 after execution of the ReviseOpinions? procedure:
(greenhouseowner 0): [
{{array: 0.7989890109890109 0 0 0 0}}
{{array: 0.7989890109890109 0 0 0 0}}
{{array: 0.7989890109890109 0 0 0 0}}
{{array: 0.7989890109890109 0 0 0 0}}]

Step 2: ShareOpinions? –> this test will be done in chapter 6.3, the interaction testing

Step 3: PurchaseNewTechnologies?
Check if PurchaseNewTechnologies? is correctly coded

Adaption: Nothing specific adapted, the test is done only for TechA? for Greenhouseowner 0
Expectation: When the lifetime is equal to 0, the first array of the GreenhouseTechnologyList? must be replaced. The product number (key 7) must be equal to the position in the OpinionLibrary? with the highest number
Outcome: Confirmed

Product A of greenhouseowner 0 with the lifetime equal to 0 (seventh key) and product number equal to 1 (eighth key):
{{array: 0.8859769597166757 0.030695654451075027 -0.06735260885457517 0 472 1500 0 1 0 0}}

OpionLibrary? of greenhouseowner 0 for TechnologyA? :
{{array: 0.8945587543159123 0.8449038974154748 0.6371053377195756 0.8503773208096667 0}}

New Product A for greenhouseowner 0 with the product number now equal to 0 (eighth key):
{{array: 0.7785922703654722 0.14365848806918236 -0.06934508926272888 0 3029 1500 3 0 0 0}}

Step 4: AdjustLifetimeTechnologies?
Market interventions
The markets can intervene according to the procedure below, with different combinatons for ‘Selecting a product’ and ‘Select one of this copies’. For every order of steps a verification test is given.

Select a product (highest main function or from best performing greenhouse)
Create three copies of this product, and for all three: improve the main function and randomly change the secondary functions
Select one of this copies (highest main function or highest sum of influences)
Replace the 'old' product with the improved version
  1. Select a product
    1.1 Highest main function
    The technology list of A before executing the procedure looks like:
    [{{array: 0.5340458020963166 0.14120226073460915 -0.04599226147492852 0 4673 1500 5 0 0 0}}
    {{array: 0.6310517588032101 0.10157705960455926 -0.029306110142734362 0 1884 1500 5 1 0 0}}
    {{array: 0.5699860328378595 0.1838562355427823 -0.05980104138597717 0 1343 1500 5 2 0 0}}
    {{array: 0.5430446901236957 0.17924104262909288 -0.024446672532369956 0 1239 1500 4 3 0 0}}
    {{array: 0.6551197878348236 0.050923333026784534 -0.09214590100735681 0 4449 1500 5 4 0 0}}]

The selected highest main function is:
0.6551197878348236

The copy of the selected list looks like:
{{array: 0.6551197878348236 0.050923333026784534 -0.09214590100735681 0 0 1500 0 0 0 0}}
1.2 From best performing greenhouse

Greenhouse owner 0:
Actual production: 778.3864382631616
Technology list A: {{array: 0.5098492447610761 0.0830126748982135 -0.03972073263547398 0 2768 1500 3 2 0 0}}

Greenhouse owner 1:
Actual production: 809.38403311605
Technology list A: {{array: 0.5381977106002168 0.12480663381086912 -0.04925586936299839 0 2394 1500 3 4 0 0}}

Greenhouse owner 2:
Actual production: 824.1465756146392
Technology list A: {{array: 0.6475018122311296 0.1673227479716183 -0.05533766604319708 0 3945 1500 4 3 0 0}}

The selected highest ActualProduction? : 824.1465756146392

The copy of the selected list looks like: {{array: 0.6475018122311296 0.1673227479716183 -0.05533766604319708 0 0 1500 0 0 0 0}}

2 + 3.1 Create three copies selected product, improve the main function and randomly change the secondary functions, and select the copy with the highest main function

The copy of the selected list looks like:
{{array: 0.6551197878348236 0.050923333026784534 -0.09214590100735681 0 0 1500 0 0 0 0}}

Improved version of copy 0 looks like:
{{array: 0.6697605082088247 0.04189081150313648 -0.09307195938850374 0 0 1634 0 0 0 0}}

Improved version of copy 1 looks like:
{{array: 0.6561480922125057 0.05256559887941739 -0.0976523610180624 0 0 1557 0 0 0 0}}

Improved version of copy 2 looks like:
{{array: 0.704030799422396 0.045951016638735936 -0.07774201574138778 0 0 1618 0 0 0 0}}

The new list of TechA? looks like:
[{{array: 0.5340458020963166 0.14120226073460915 -0.04599226147492852 0 4673 1500 5 0 0 0}}
{{array: 0.6310517588032101 0.10157705960455926 -0.029306110142734362 0 1884 1500 5 1 0 0}}
{{array: 0.5699860328378595 0.1838562355427823 -0.05980104138597717 0 1343 1500 5 2 0 0}}
{{array: 0.5430446901236957 0.17924104262909288 -0.024446672532369956 0 1239 1500 4 3 0 0}}
{{array: 0.704030799422396 0.045951016638735936 -0.07774201574138778 0 4449 1618 5 4 0 0}}]

    • 3.2 Create three copies selected product, improve the main function and randomly change the secondary functions, and select the copy with the highest sum of all the functions

The copy of the selected list looks like: {{array: 0.6665227631752425 0.059440329566932265 -0.03170812717096731 0 0 1500 0 0 0 0}}

Improved version of copy 0 looks like: {{array: 0.6665452041018092 0.06400717082815414 -0.01741244440519166 0 0 1615 0 0 0 0}}
sum of influences: 0.7125

Improved version of copy 1 looks like: {{array: 0.6781223144667212 0.044782242773724924 -0.02039234468840222 0 0 1571 0 0 0 0}}
sum of influences: 0.7025

Improved version of copy 2 looks like: {{array: 0.6802868449564885 0.07323026281721288 -0.048596339221062185 0 0 1501 0 0 0 0}}
sum of influences: 0.7049

The new list of TechA? looks like:
[{{array: 0.5539412975381827 0.1190543333612957 -0.010956183541477954 0 2369 1500 5 0 0 0}}
{{array: 0.6661395437061919 0.03088794861090083 -0.011274311086803171 0 1917 1500 3 1 0 0}}
{{array: 0.6665452041018092 0.06400717082815414 -0.01741244440519166 0 2620 1615 5 2 0 0}}
{{array: 0.5046561508770647 0.008628316442813344 -0.07702802821488837 0 4449 1500 5 3 0 0}}
{{array: 0.5913531148258798 0.14079249532179788 -0.01625125522519566 0 3937 1500 4 4 0 0}}]
6.2.2 Break-the-Agent tests

Now two tests will be executed where agents will be faced with extreme inputs.

Test 1: Testing influence of neighburs opinion

Adaption: StubbornnessFactor? is set to 0, and FuelPrice? to 0 (to counter the fact that a greenhouse can go bankrupt)
Expectation: Neighbours will still share information, but it will nothing change to their own opinion.
Outcome: Confirmed

Situation at the start Situation after 150 ticks

Test 2: Testing affecting improvement rate

Adaption: StubbornnessFactor? is again set to 0, and FuelPrice? to 0 (to counter the fact that a greenhouse can go bankrupt). Now also the InfuenceRangeMain? and InfuenceRangeSec? are set to 0.
Expectation: In this situation, greenhouse owners will only buy the same technology when the lifetime is equal to 0. Still these technologies will be improved, but every time a number equal to 0 will be add to the existing values. Therefore the TotalProduction? for tick 0 must be equal to the TotalProduction? for tick 150.
Outcome: Confirmed

show TotalProduction? for tick 0:
observer: 60663.888500735324

show TotalProduction? for tick 150:
observer: 60663.88850073532

6.3 Minimal model interaction verification

In this verification test the behaviour of a minimal set of agents will be verified. The only time when agents in this model interact is in the ShareOpinions? procedure. In order to verify this procedure the test below is executed:

ShareOpinions? : The most important output variable of this procedure is the OpinionLibrary? .

Check if sharing opinions is correctly coded

Adaption: Number of greenhouse owners is set to 2. Influence numbers are set equal to 0.1. Product numbers are set to 0. StubbornnessFactor? is set equal to 0.8.
Expectation: After the process both OpinionLibraries? should contain the same values equal to (0.799+0.8*0.799)/1.8 = 0.799 After some time, when one of the greenhouse owners has purchased a new technology, the values can change.
Outcome: Confirmed

OpionLibraries? for both greenhouse owner 0 and 1 after execution of the ShareOpinions? procedure:
(greenhouseowner 0): [{{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}}]
(greenhouseowner 1): [{{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}}]

Second check if sharing opinions is correctly coded

Adaption: Number of greenhouse owners is set to 100. StubbornnessFactor? is set equal to 0. To ensure that greenhouse owners can get bankrupt, the fuel price is set on 0.
Expectation: When greenhouse owners don’t weight the opinion of their neighbours in their decision when they want to buy a certain product, the number of products should be equally divided until the end.

Outcome: confirmed

NoSharingOfInfo.png

6.4 Multi-agent verification

In this step the entire model is runned, with all the agents present. There will be tested if coherent patterns can be recognised. In order to verify this two different tests will be executed:

After 50 ticks:
- the TotalProduction? should be higher than in the initial situation
- neighbours with the same crop type should have the same technologies

test 1: To show that the TotalProduction? increases a scatter plot of the Relative Production of all the greenhouse owners together is plot. A trend line is add to the graph to show that this relative production increases over time.

Relative Production after 50 ticks

test 2: To show that neighbours with the same crop type should have the same technologies after 50 ticks, the same picture as for the Recording and tracking agent behaviour can be used.

Release Notes

Associated Publications

Optimising Emergence 1.0.0

Project description
“This work presents an Agent Based Model of a greenhouses horticultural sector developed using a CAS approach. In the model, agents represent greenhouses competing to raise crops and remain profitable through their choice of various technologies to control the internal climate conditions of greenhouses. The technologies become available for purchase over time under different experimental conditions to mimic how technologies could be optimized, either in isolation, in conjunction with the other technologies of a single greenhouse, or directly in response to the performance of all the technologies in all the greenhouses of the community. The total improvement in performance, and the rate of improvement justify a closer look at how technological development is approached, including matters of patents, intellectual property, and open source development.”

  1. Introduction
    1.1 Problem statement

The Dutch greenhouse horticulture sector has a world leading position in innovative greenhouse technologies and high yield crops. However, continuously innovation is of great importance to remain competitive over producers from low-wage countries. The profitability is also under pressure by increasing fuel prices, increased sustainability targets and pressure on marketprices of crops by competing supermarket concerns.

However, due to the continuous innovation, greenhouse systems are becoming more and more complex systems. Innovation creates more possible combinations to attain the optimal condition. Closed greenhouse systems make it possible to not only control the temperature, light intensity and humidity, but also the CO2 level more accurately. Technologies which combine different functions can be used more often, like heating, electricity generation and CO2 injection is combined in cogenerators. Not only the possibilities to attain the optimal condition increases, but technologies which influence multiple conditions also interact with each other and mutually influence each others performance. A cogenerator does not only influence the electricity supply and temperature, but also the CO2 level. A lightsystem and a heater will also effect the humidity, by influencing evaporation. It is plausible that an airconditioner which injects CO2 gases in the greenhouse will also effect the air pressure and the humidity. With this perspective on greenhouses, the assumption that the performance is the result of the sum of each main technology influence cannot be made anymore. Rather it is more likely that the internal condition and the crop production are emergent properties of the system.

Epistatic effects within greenhouse systems
Research in the field of (micro)biology shows the existence of epistatic effects, where the overall effect cannot be explained from the different components of the system but exists within the interaction between the components. Because different technologies interact together to create an overall condition, epistatic effects might also occur within a greenhouse system.The resulting undesired deviation of the performance from the designed performance, should be minimized as much as possible.
Development strategies

The perspective on the performance as emergent property will have consequences for the effectiveness of development strategies of Technology developers. Currently, technologies are mainly developed in isolation. Developers are competitive, protect their intellectual properties from other developers and pursue their own specific goals. Cooperative development is therefore contested and unusual. Cooperated design will also lead to slower and more eexpensive development, because developers have to cope with coordination issues, integration of different designs and contractual agreements. However, if the internal condition emerges from the interaction between techologies, the actual performance of the components will differ from the designed performance. In this case, developers have to develop in cooperation and test the side effects of their technologies, in order to reduce negative epistatic effects and improve the overall performance of the greenhouse.

1.2 Lack of insight
The specific causes of the formulated problem; undesired deviations of performance from the designed performance, are unclear and uncertain. It is unknown or the hypothetical occurence of epistatic effects in greenhouses can be disproven or not. The effect of the developmentstyles, which style will result in the highest performance and why this will be, is unknown.

1.3 Goal of the research
The goal of the model is gain insight in the possible impact of epistatic effects on the performance of greenhouse owners and the effects different development styles have on the performance of greenhouses.

The research question is: Is there a difference in performance between developmentstyles and which developmentstyle leads to the best performance?

Subquestions that can be distracted from the research question, in order to answer it are:
Which development styles can be distinguished and to what extent do they differ?
What is the influence of development styles on the diffusion of technologies?
What is the effect of different circumstances on the preference of a developmentstyle?
What is the effect of the development styles on the long run, do they influence how fast the improvement of the relative production stabilizes?

1.4 Behavioral pattern of interest
The internal climate of the greenhouse and the actual production are the macroscopic regularities of interest, their behavioral pattern emerges from the interaction between technologies. The actual production is the behavioral pattern of specific interest, with this the performance indicators ‘Relative Production’ and ‘Mean Profit’ can be calculated.

Current hypothesis: The performance of a greenhouse can be explained from the different components of the system, the technologies. The performance follows from the sum of the technology influences. Technologies are developed best competitively and in isolation.

Hypothesis: Research in other sectors show that single, competitive development does not always lead to the best performance. Cooperative development of the components will lead to a better overall performance because epistatic effects can be taken into account during the design. With cooperative development, the actual performance will differ less from the designed performance, the relative production will be higher.

1.5 Desired behavioral pattern
An actual performance that deviates less from the designed performance is desired. The desired pattern is a more optimal internal climate, that will lead to a higher relative production and a higher profit.

1.6 Actors
Whose problem?
The actors that have interests in the research are the Greenhouse owners, Technology developing companies and governmental parties that have stakes in the “Westland horticultural region”. As governmental organization, especially the Ministry of Economic affairs is an actor with interests, because it subsidizes the region to stimulate innovation. TNO might also be an involved actor, because it is a research institute that researches the technological development in the horticultural sector and advises the Ministry.

Especially the Greenhouse owners will be confronted most with the described problem in 1.1. The purchase of a technology that will have a lower performance than designed, will lead to lower profit and might lead to sunk costs. Greenhouse owners are finally responsible for the composition of the greenhouse and developers will probably blame Greenhouse owners if the performance is lower than expected. With the application of different developmentstyles, Greenhouse owners will be interested in whether the additional expenses on a co-developed technology will be paid back by an increased performance. However, the increased performance can only be known from usage of the technologies, because the emergent patterns cannot be fully predicted. A greenhouse owner therefore will base his decision to purchase a technology mainly on own experience and on opinions of other greenhouse owners.

Developers also have interests in the research. A recommended development strategy have to be adapted by the companies which develop and market the technologies.

Our role
Our role is to develop a model of the defined problem and to answer the research question with insights that follow from the modelling proces and the experimentation. Our perspective on the problem and our background, will inevitable influence the process, the chosen assumptions and followed, the final results. Awareness is therefore important and frequent reflection on our translation of the perspective of the problem owner, is required.

  1. System identification
    In this chapter all the necessary concepts that will be used in the model, will be specified, with the focus on necessary, as modelling can be seen as a means to an end and not a goal in itself. In an ABM model agents interact together based on a set of internal rules and external interventions from the environment. Therefore there has been chosen to divide this chapter in three sections: agents, interactions and environment. There is chosen to represent the identified and specified system with a mindmap, that can be found in the appendix. With the use of a mindmap, the system is presented in a clear and intuitive way, which makes it easier to associate properties with their objects or agents and agents with their actions, states and rules.

2.1 Agents
Agents are things that have control over their own internal state and behavior, they are able to react on environmental changes, have clear boundaries and act autonomously, in order to achieve their goals. For this model, there is only one type of agents, the Greenhouse owners.

Greenhouse owners
Greenhouse owners attempt to upgrade their technologies in order to increase their control on the internal climate of the greenhouse. The closer the optimal conditions are approached, the closer the actual yield will approach the optimal yield, the higher the profit will be, which the Greenhouse owner wants to maximize.

Properties
GreenhouseCroptype
Each greenhouse will either cultivate Veggies or Flowers. For both croptypes, there is an ideal climate under which this croptype will produce the highest fraction of their “Potential yield”. Therefore the croptypes exists of the following properties:
Ideal Temperature in [°C]
Ideal CO2 concentration in [ppm]
Ideal Humidity in [%]
Ideal Light Intensity in [lux]
Potential yield number
Market price [€/crop unit]
Purchase price [€/crop unit]

GreenhouseTechnologyList
Each greenhouse consists of four different technologies, each from a different Technology category. The technologies interact together to reach the internal climate where the crop production is optimal. There is assumed that each technology not only influences its own climate variable:

TechnologyA = Heater: Influences primary the temperature, and has a negative effect on the humidity and a positive effect on the CO2 concentration. The engine of the heater will produce CO2, but more water will evaporate, which will have an effect on the humidity.
TechnologyB = CO2 technology: Influences primary the CO2 concentration, and has a negative effect on the humidity and a positive effect on the temperature. Just as the heater, the CO2 technology will produce heat, which will have an effect on the amount of water which will evaporate.
TechnologyC = Humidifier: Influences primary the humidity, and has a negative effect on the light intensity and a positive effect on the temperature. The engine of the pump will produce some heat, and the higher the water percentage in the air, the stronger light will be broken and diffused.
TechnologyD = Lights : Influences primary the light intensity, and has a small negative effect on the humidity and a positive effect on the temperature. The lights will produce heat, and this heat will also increase the evaporation of water.

For every technology there are five different products. Each Product has a:
Influence number on some specific items of the internal climate:
Temperature
CO2 concentration
Humidity
Light Intensity
Energy use
Cost price
Lifespan
Product number

OpinionLibrary
Every greenhouse owner forms an opinion about the products which are available on the market. This opinions depends on his own experience, and the experience with that product of his neighbours multiplied by a Stubbornness Factor.

Bankaccount
Profits are added to the bankbalance and expenses on technologies and energy use are extracted from it. If the bank balance is negative, the greenhouse owner goes bankrupt and will be replaced.

Actions
1. Calculate Production
Calculate the sum of all the influence numbers for the four particular climate properties. The maximum of this total influence is 1. If the vectors of all four influence numbers are equal to 1, the Ideal climate = Internal climate.
Calculate relative climate range = 1 - ( ( |External - Ideal| / Ideal ) - sum of influences of particular climate property * ( |External - Ideal| / Ideal ) )
Calculate mean of all climate influences
Production = Potential yield x mean of all climate influences

  1. Calculate Total Energy use
    Calculate sum of energy use of all technologies

  2. Update Bankaccount
    Set marginal revenue: (Market price - Purchase price)
    Set Total revenue: marginal revenue x actual production
    Set Energy costs: Total energy use x fuel price
    Set bank account: bank account + total revenue - Total energy costs
    If budget is smaller than zero, Greenhouse owners goes bankrupt and resets his properties to the initial values, to represent a start-up
    Calculate depreciation of technologies: Costs / Lifetime
    Set Profit: Marginal revenue x Actual production - Energy costs - Depreciation of technologies

  3. Revise Opinions
    For the products currently using, Set Opinion = (Current Opinion + Actual Production / Potential yield) / 2

  4. Share Opinions
    Ask all link-neighbours with the same croptype adapt their opinions based on the opinion of myself
    For link-neighbour with the same croptype and particular opinion for product X is equal to 0, Set Opinion = Stubbornness Factor * Opinion of myself
    For link-neighbour with the same croptype and particular opinion for product X is unequal to 0, Set Opinion = (Opinion + Stubbornness Factor * Opinion of myself) / (1 + Stubbornness Factor)

  5. Purchase Technologies
    Check for every product whether the lifespan is equal to zero, if so:
    Replace this product by the product fow which the greenhouse owner has the highest opinion
    If the bank account is smaller than the costprice of this product, select all the products which he can afford
    If this list is empty (this means that there is no affordable technology available) the greenhouse owners is bankrupted and will be replaced by a new one
    If this list isn’t empty, select a random product and replace the overaged product with this one.

  6. Adjust Lifetime Technologies
    Set lifespan of all owned products - 1
    2.2 Interactions (with the environment)
    The greenhouse owners interact with the environment when they calculate their profit, and when they purchase new products. In order to do this the greenhouse owners have to know the:
    Current external climate
    Ideal climate of their crop type
    Potential yield of their crop type
    Crop type market and purchase prices
    Fuel price
    Products for sale
    Opinion of Neighbors on technologies
    Available Technologies from all the Technology markets

2.3 Environment
Periodically technology markets improve products according to a style which can be changed by the modeller. There are as much as markets as technology categories, four. Periodically, the markets replace products by improved versions which than become available for greenhouse owners to buy.
Properties
Technology category, either A, B, C or D.
Products: Each market has a fixed number of products (5) which are replaced by newer versions when updated. The products can be seen as different brands.

Actions
Every tick, one of the technology markets will improve one of their five products in the following order:
Select a product from the technology category, based on one of the following criteria:
Technology with highest main function
Technology from best performing Greenhouse
Create three copies of this product, and for all three: improve the main function and randomly change the secondary functions
Select one of the created copies, based on one of the following criteria:
Copy with highest main function
Copy with highest sum of all influences
Replace the ‘old’ product with the improved version

As mentioned before, there are three different ways in how a technology market can improve a certain product: Protected development, Limited cooperation, and Open source cooperation. For every step order of the steps above will be the same. Differences between these styles can be found in step 1 and 3, for which two options are possible.

Protected development: Step 1.1 and 3.1. With Protected development, technologies are competitively developed in isolation. This development style fits best the perspective that greenhouses are simplistic systems, where the performance follows from the sum of the parts, the existence of epistatic effects is ignored. The main function is only taken into account is the goal of the improvement, therefore steps 1.1 and 3.1 hold for this style. As side effect secundary functions are also influenced and randomly changed.

Limited cooperation: Step 1.1 and 3.2. With Limited cooperation, developers still aim to improve the main function (step 1.1), but are aware of the side effects and know all the influences, by cooperation. Therefore, they select the copy with the highest sum of all influences (3b).
Open-source cooperation: Step 1.2 and 3.1. Due to open source information sharing, developers are able to know the actual performance of greenhouse owners and aim to improve their best actual performing technology. Therefore selection method 1.2 is used. Finally, the highest main function is chosen.

Successive improvement of technologies
An important design choice in this section is the existence of the ImproveSameTechCounter? . In selection step 1.1 the product with the highest main function will be selected over and over again, the improvement will be path dependent. In reality, technologies will not always remain dominant and preference can change over time. To include this and encounter the dominance effect, the ImproveSameTechCounter? keeps track of the number of a times a certain product will be improved in a row. When this number is equal to the ImproveSameTechCounter? a random product will be chosen. When the same product will be chosen, the next round again a random product will be chosen as long as another product will be selected. The value prevents that always the same technology will be improved and will introduce some randomness to the improvement.

As conclusion, in order to improve the products there must exist a:
ImproveSameTechnologyCounter?
Development Style: Chooser to select a different development style
Main Influence Range: It expresses the range in which the main function of a product can be improved. A random-float number between zero and this value will be add to the current number.
Sec Influence Range: A random-float number between - this value and + this value will be add to the current number.
CostPriceCooperativemultiplicator? : The rate in which the costprice of a product is improved with limited cooperation. Assumed is that cooperative development is more expensive than Protected development.

  1. Behavior identification
    In chapter 2, the structure of the system is explained, in this chapter the behavior of the entities within the system and the environment will be identified. The behavior will follow from the actions, defined in chapter 2. Everything that needs to happen, every tick is given and the order of the interactions is also determined. The ‘setup’ and the ‘go’ procedures are defined.
    Setup

The initial structure of the model is created by the environment.
Each Technologymarket is created (A, B, C, D)
Every Techmarket creates its own set of technologies. For every technology, the following Properties are determined
Tech_Temp: Influence on temperature
Tech_CO2: Influence on CO2 concentration
Tech_Hum: Influence on Humidity
Tech_Light: Influence on Light Intensity
Energy use
Cost Price
Lifespan
Productnumber: Distinguishes the product from other products of the same market
Technology Market number
Network structure: The structure of the Netlogo model that is most suitable to model the problem is a network structure. Greenhouse owners will represent nodes, their relations are links. The structure is based on the already existing networkmodel ‘Preferential Attachement’.
Give Greenhouse owners their initial properties:
Greenhouse Technology list: A list of the four initial technologies the Greenhouse gets
Croptype
Opinionlibrary: An empty list of 5 values, the number of different products per Technology market.
Bankaccount: The initial value is determined by the environment

Tick
The procedures that are executed every tick are described. There is described or an action is executed by the environment or by which agent. The procedures in italic are executed by the environment.
Reset Relative Production
Calculate Production.
Bankaccount = Bankaccount - Buyingprice Croptype x Potential yield
Sum Techinfluences = sum of all influence number of the same Climate variable
Production = mean Σ (1-((Ext. climate - Ideal climate)/Ideal climate - Sum TechInfluences? * (Ext. climate - Ideal climate)/Ideal climate ))
Calculate Total Energy use
= Energy use TechA? + Energy use TechB? + Energy use TechC? + Energy use TechD?
Update bankaccount
Marketprice x Actual production - (Total Energy costs x Fuel Price)
Revise Opinion
Own Opinion = Actual Production / Potential yield
Improve Technologies
Each Technologymarket will improve a technology, based on the selected development style
Share Opinions
Opinion = mean (Own Opinion + Neighborsopinion x stubborness factor)
Purchase new Technologies
If Lifespan = 0, set TechnologytoPurchase?
Adjust lifetime technology
= Lifespan - 1
Visualize
Update network visualization to current states.
Reset Counter of Number of Greenhouseowners per croptype

  1. Model formalisation
    In this chapter, the inventory of the model is described in detail. In the Appendix, a mindmap of the system is included. The mindmap described in detail all relevant concepts, interactions, states and properties of the system. Finally, the main modelling assumptions are explained.
    Settings
    Time frame
    A single year is modelled as one tick, the time horizon of the model will be 150 ticks. A time horizon of 150 year is very long, but explainable because of the exploratory nature of the model. The behavior of the system is uncertain and it is unknown when the behavior of the system will converge to a stable attractor. It is plausible that the Actual production will approach the Potential Production, since the influence numbers are improved every tick with a limit to 1. However, when this will occur is uncertain. During the experimentation, there will be also experimented with extreme long runs, of 1000 ticks.

4.1 Modelling Assumptions
1. Technology developers
Technology developers will be part of the environment because they develop technologies independently from greenhouse owners. The technology market does not limit itself to the “Westland” region, developers therefore can be assumed to develop technologies independently from the actions of greenhouse owners in the “Westland” region. greenhouse owners are influenced by actions of developers, developers determine the properties of the available technologies on the market. Developers are not represented as single developers, but as Technology markets. Each Technology market has five different technologies that alternately are improved. In reality, a technology market will be dominated by a limited number of technology series, which are frequently improved.
Technology developers will randomly improve the main function of technologies within boundaries and randomly change the secundary functions within boundaries. The costprice will be also improved but the lifetime and the energy use will remain constant.

  1. Croptype
    Greenhouse owners cannot change their crop type, croptype distributions can only change if Greenhouse owners go bankrupt. In reality, growers also rarely shift to another crop type.

  2. Purchase of technologies
    Technologies can only be bought when the lifespan equals zero. Bankrupt Greenhouses are r eplaced by new greenhouses, who starts over with a basic technology and crop variety.
    Technologies are only bought if their costs fall within the budget.

  3. Information sharing between greenhouseowners
    Greenhouse owners only share their opinion with their direct neighbors, with which they are direct connected. Links in the network represent business relations and Greenhouse owners will only share confidential information about how the technologies are performing with
    Technologies are bought based on Opinion. A technology that is never been used before by the Greenhouse owner himself or his neighbors will have an Opinion equal 0. In this way, the owner only will buy a technology that he ‘knows’, from his neighbors or by experience.
    Greenhouseowners only share information with neighbors with the same Croptype. (so an isolated greenhouseowner with another croptype than his neighbor will never share opinions, because the performance of a technology is differs per Croptype.)
    The Opinion is the average of all the neighbors opinions x stubborness factor and the Own opinion.
    The Own opinion is based on the relative production, which is the ratio of the actual and the potential crop yield.

  4. External crop properties
    The output of the small horticulture, greenhouse sector will be small, compared to the demand of the whole European crop market, which can be seen as the selling market for the products. Therefore, the market price can be assumed to be external, because changes in output of the greenhouse sector will have an infinite small effect on the whole market price.
    The retailer purchase price for crop seeds, can also assumed to be external, internal changes in seed demand will not have a significant effect on changes in price.

  5. Software implementation
    Process
    The code is created on an irative way, the final model is the result of seventeen different versions. Also the length of the code is extremely shortened during the proces, by the use of combined lists and arrays and by iteration of equal procedures. During the implementation, assumptions and modelling decisions were frequently consulted with the client.

Usage of arrays
The model contains a lot of variables for which it is very useful to use lists. Lists can be easily nested which is necessary to model Techmarkets, which consists of different technology products, which have different properties. Instead of lists, their is chosen to mainly use arrays, for practical reasons and to gain computational speed. Almost all lists in the model remain the same length over time, items in the lists need to be replaced, while in arrays, single items can be changed. Technologies have a fixed set of properties that need to be updated over time, by using an array, only the particular item is replaced. In case of lists, the whole list would be deleted and recreated, what would demand more computational time. Also the libraries Greenhouseowners have of the Opinions and of the Technologies they can purchase can be modelled as arrays. Improved technologies replace older versions so the length of the Technologylist and number of possible Opinions does not change. The Opinion of an unknown technology will be equal to zero.

Dummy values
There is chosen to use dummy values instead of historical data. Time is limited and the research should focus especially on the essential parts of the proces, that are needed in order to achieve the goal of the research. It will be possible to gain insights in the relative impact different development styles have on the performance, without real values. The results should be interpreted carefully, there can be stated something about the possible relative impact and direction of the different styles and changed circumstances. Dummy values will include more uncertainty in the model, a broad range of experiments and a long time horizon should be therefore used in the experimentation.

  1. Model Verfication
    In this chapter we try to answer the question whether the developed model behaves according to our expectations. In other words; Is the code consistent with what we intended to program? In order to answer this question the model will be verified in four different steps:

    Recording and tracking agent behaviour
    Single-agent verification in which the behaviour of each type of agent is verified.
    Minimal model interaction verification in which the interaction between a minimal set of agents is tested.
    Multi-agent verification in which the emergent behaviour of multiple agents is verified.

6.1 Recording and tracking agent behaviour
Below a picture is showed to explain some interactions within the model. The picture is a result of running the model for 150 ticks, and turning on two different debuggers “WhatKindOfCroptype?” and “WhatKindOfTechnologyA?”.

Recording and tracking agent behaviour
From the picture can be concluded that in the long run, greenhouse owners with the same crop type (colour) will have the same technology (number of the dice). Isolated greenhouse owners will never know what the best technologies are at a certain moment. The fact that there are connected greenhouse owners with the same crop type, but a different technology can be explained by the fact that greenhouse owners are replaced when they are bankrupted and the influence of the stubborness factor. Also the fact that if greenhouse owners that are surrounded by isolated neighbors with both different technologies, are likely to t stick to their own technology, expect it will perform relatively really bad.

6.2 Single agent testing
With single agent testing the behaviour of a single agent will be verified. This can be done through two different tests:

1. Theoretical prediction tests and sanity checks: does the agent behave as expected under normal conditions?
2. Break-the-Agent tests: where are the edges of normal behaviour?

6.2.1 Theoretical prediction tests and sanity checks
In this step relevant input and output variables are monitored to verify whether the procedures work as they have to. In the model roughly two different processes can be identified, the agent behaviour and the market interventions. For both processes the most difficult procedures are analysed by comparing a theoretical expectation and actual outcome.

Agent behaviour
The different procedures which a greenhouse owner should execute are categorised in four steps.

Step 1: CalculateProduction? , CalculateTotalEnergyUse? , UpdateBankaccount? , ReviseOpinions? .
CalculateProduction? : The most important output variable of this procedure is the ActualProduction? .

Check if formula is correctly coded.

Adaption: Influence numbers are set equal to 0.1
Expectation: The sum of all the influences per category will be equal to 0.4 With the default settings the ActualProduction? for Veggies should be equal to mean (0.815 0.56 0.992 0.829) * 800 = 639
Outcome: Confirmed

ActualProduction? greenhouseowner 0: 639.1912087912087

The ActualProduction? can't be higher than the PotentialYieldNumber? .

Adaption: The main influence numbers of the different technologies are set to a value of 200%
Expectation: The ActualProduction? must be equal to the PotentialYieldNumber? , because the total influence number is set to 100%, when the sum is higher than 100%.
Outcome: Confirmed

PotentialYieldNumber? : 800
ActualProduction? greenhouseowner 0: 800
ActualProduction? greenhouseowner 1: 800

ReviseOpinions? : The most important output variable of this procedure is the OpinionLibrary? .

Greenhouse owners can only revise opinions about technologies which they own

Adaption: Influence numbers are set equal to 0.1. Product numbers are set to 0.
Expectation: The OpinionLibrary? should only contain values for array key 0, equal to 639 / 800 = 0.799
Outcome: Confirmed

OpinionLibrary? of greenhouse owner 0 after execution of the ReviseOpinions? procedure:
(greenhouseowner 0): [
{{array: 0.7989890109890109 0 0 0 0}}
{{array: 0.7989890109890109 0 0 0 0}}
{{array: 0.7989890109890109 0 0 0 0}}
{{array: 0.7989890109890109 0 0 0 0}}]

Step 2: ShareOpinions? –> this test will be done in chapter 6.3, the interaction testing

Step 3: PurchaseNewTechnologies?
Check if PurchaseNewTechnologies? is correctly coded

Adaption: Nothing specific adapted, the test is done only for TechA? for Greenhouseowner 0
Expectation: When the lifetime is equal to 0, the first array of the GreenhouseTechnologyList? must be replaced. The product number (key 7) must be equal to the position in the OpinionLibrary? with the highest number
Outcome: Confirmed

Product A of greenhouseowner 0 with the lifetime equal to 0 (seventh key) and product number equal to 1 (eighth key):
{{array: 0.8859769597166757 0.030695654451075027 -0.06735260885457517 0 472 1500 0 1 0 0}}

OpionLibrary? of greenhouseowner 0 for TechnologyA? :
{{array: 0.8945587543159123 0.8449038974154748 0.6371053377195756 0.8503773208096667 0}}

New Product A for greenhouseowner 0 with the product number now equal to 0 (eighth key):
{{array: 0.7785922703654722 0.14365848806918236 -0.06934508926272888 0 3029 1500 3 0 0 0}}

Step 4: AdjustLifetimeTechnologies?
Market interventions
The markets can intervene according to the procedure below, with different combinatons for ‘Selecting a product’ and ‘Select one of this copies’. For every order of steps a verification test is given.

Select a product (highest main function or from best performing greenhouse)
Create three copies of this product, and for all three: improve the main function and randomly change the secondary functions
Select one of this copies (highest main function or highest sum of influences)
Replace the 'old' product with the improved version
  1. Select a product
    1.1 Highest main function
    The technology list of A before executing the procedure looks like:
    [{{array: 0.5340458020963166 0.14120226073460915 -0.04599226147492852 0 4673 1500 5 0 0 0}}
    {{array: 0.6310517588032101 0.10157705960455926 -0.029306110142734362 0 1884 1500 5 1 0 0}}
    {{array: 0.5699860328378595 0.1838562355427823 -0.05980104138597717 0 1343 1500 5 2 0 0}}
    {{array: 0.5430446901236957 0.17924104262909288 -0.024446672532369956 0 1239 1500 4 3 0 0}}
    {{array: 0.6551197878348236 0.050923333026784534 -0.09214590100735681 0 4449 1500 5 4 0 0}}]

The selected highest main function is:
0.6551197878348236

The copy of the selected list looks like:
{{array: 0.6551197878348236 0.050923333026784534 -0.09214590100735681 0 0 1500 0 0 0 0}}
1.2 From best performing greenhouse

Greenhouse owner 0:
Actual production: 778.3864382631616
Technology list A: {{array: 0.5098492447610761 0.0830126748982135 -0.03972073263547398 0 2768 1500 3 2 0 0}}

Greenhouse owner 1:
Actual production: 809.38403311605
Technology list A: {{array: 0.5381977106002168 0.12480663381086912 -0.04925586936299839 0 2394 1500 3 4 0 0}}

Greenhouse owner 2:
Actual production: 824.1465756146392
Technology list A: {{array: 0.6475018122311296 0.1673227479716183 -0.05533766604319708 0 3945 1500 4 3 0 0}}

The selected highest ActualProduction? : 824.1465756146392

The copy of the selected list looks like: {{array: 0.6475018122311296 0.1673227479716183 -0.05533766604319708 0 0 1500 0 0 0 0}}

2 + 3.1 Create three copies selected product, improve the main function and randomly change the secondary functions, and select the copy with the highest main function

The copy of the selected list looks like:
{{array: 0.6551197878348236 0.050923333026784534 -0.09214590100735681 0 0 1500 0 0 0 0}}

Improved version of copy 0 looks like:
{{array: 0.6697605082088247 0.04189081150313648 -0.09307195938850374 0 0 1634 0 0 0 0}}

Improved version of copy 1 looks like:
{{array: 0.6561480922125057 0.05256559887941739 -0.0976523610180624 0 0 1557 0 0 0 0}}

Improved version of copy 2 looks like:
{{array: 0.704030799422396 0.045951016638735936 -0.07774201574138778 0 0 1618 0 0 0 0}}

The new list of TechA? looks like:
[{{array: 0.5340458020963166 0.14120226073460915 -0.04599226147492852 0 4673 1500 5 0 0 0}}
{{array: 0.6310517588032101 0.10157705960455926 -0.029306110142734362 0 1884 1500 5 1 0 0}}
{{array: 0.5699860328378595 0.1838562355427823 -0.05980104138597717 0 1343 1500 5 2 0 0}}
{{array: 0.5430446901236957 0.17924104262909288 -0.024446672532369956 0 1239 1500 4 3 0 0}}
{{array: 0.704030799422396 0.045951016638735936 -0.07774201574138778 0 4449 1618 5 4 0 0}}]

    • 3.2 Create three copies selected product, improve the main function and randomly change the secondary functions, and select the copy with the highest sum of all the functions

The copy of the selected list looks like: {{array: 0.6665227631752425 0.059440329566932265 -0.03170812717096731 0 0 1500 0 0 0 0}}

Improved version of copy 0 looks like: {{array: 0.6665452041018092 0.06400717082815414 -0.01741244440519166 0 0 1615 0 0 0 0}}
sum of influences: 0.7125

Improved version of copy 1 looks like: {{array: 0.6781223144667212 0.044782242773724924 -0.02039234468840222 0 0 1571 0 0 0 0}}
sum of influences: 0.7025

Improved version of copy 2 looks like: {{array: 0.6802868449564885 0.07323026281721288 -0.048596339221062185 0 0 1501 0 0 0 0}}
sum of influences: 0.7049

The new list of TechA? looks like:
[{{array: 0.5539412975381827 0.1190543333612957 -0.010956183541477954 0 2369 1500 5 0 0 0}}
{{array: 0.6661395437061919 0.03088794861090083 -0.011274311086803171 0 1917 1500 3 1 0 0}}
{{array: 0.6665452041018092 0.06400717082815414 -0.01741244440519166 0 2620 1615 5 2 0 0}}
{{array: 0.5046561508770647 0.008628316442813344 -0.07702802821488837 0 4449 1500 5 3 0 0}}
{{array: 0.5913531148258798 0.14079249532179788 -0.01625125522519566 0 3937 1500 4 4 0 0}}]
6.2.2 Break-the-Agent tests

Now two tests will be executed where agents will be faced with extreme inputs.

Test 1: Testing influence of neighburs opinion

Adaption: StubbornnessFactor? is set to 0, and FuelPrice? to 0 (to counter the fact that a greenhouse can go bankrupt)
Expectation: Neighbours will still share information, but it will nothing change to their own opinion.
Outcome: Confirmed

Situation at the start Situation after 150 ticks

Test 2: Testing affecting improvement rate

Adaption: StubbornnessFactor? is again set to 0, and FuelPrice? to 0 (to counter the fact that a greenhouse can go bankrupt). Now also the InfuenceRangeMain? and InfuenceRangeSec? are set to 0.
Expectation: In this situation, greenhouse owners will only buy the same technology when the lifetime is equal to 0. Still these technologies will be improved, but every time a number equal to 0 will be add to the existing values. Therefore the TotalProduction? for tick 0 must be equal to the TotalProduction? for tick 150.
Outcome: Confirmed

show TotalProduction? for tick 0:
observer: 60663.888500735324

show TotalProduction? for tick 150:
observer: 60663.88850073532

6.3 Minimal model interaction verification

In this verification test the behaviour of a minimal set of agents will be verified. The only time when agents in this model interact is in the ShareOpinions? procedure. In order to verify this procedure the test below is executed:

ShareOpinions? : The most important output variable of this procedure is the OpinionLibrary? .

Check if sharing opinions is correctly coded

Adaption: Number of greenhouse owners is set to 2. Influence numbers are set equal to 0.1. Product numbers are set to 0. StubbornnessFactor? is set equal to 0.8.
Expectation: After the process both OpinionLibraries? should contain the same values equal to (0.799+0.8*0.799)/1.8 = 0.799 After some time, when one of the greenhouse owners has purchased a new technology, the values can change.
Outcome: Confirmed

OpionLibraries? for both greenhouse owner 0 and 1 after execution of the ShareOpinions? procedure:
(greenhouseowner 0): [{{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}}]
(greenhouseowner 1): [{{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}} {{array: 0.7989890109890109 0 0 0 0}}]

Second check if sharing opinions is correctly coded

Adaption: Number of greenhouse owners is set to 100. StubbornnessFactor? is set equal to 0. To ensure that greenhouse owners can get bankrupt, the fuel price is set on 0.
Expectation: When greenhouse owners don’t weight the opinion of their neighbours in their decision when they want to buy a certain product, the number of products should be equally divided until the end.

Outcome: confirmed

NoSharingOfInfo.png

6.4 Multi-agent verification

In this step the entire model is runned, with all the agents present. There will be tested if coherent patterns can be recognised. In order to verify this two different tests will be executed:

After 50 ticks:
- the TotalProduction? should be higher than in the initial situation
- neighbours with the same crop type should have the same technologies

test 1: To show that the TotalProduction? increases a scatter plot of the Relative Production of all the greenhouse owners together is plot. A trend line is add to the graph to show that this relative production increases over time.

Relative Production after 50 ticks

test 2: To show that neighbours with the same crop type should have the same technologies after 50 ticks, the same picture as for the Recording and tracking agent behaviour can be used.

Version Submitter First published Last modified Status
1.0.0 Julia Kasmire Fri Jun 7 14:28:32 2013 Tue Feb 20 07:25:02 2018 Published

Discussion

This website uses cookies and Google Analytics to help us track user engagement and improve our site. If you'd like to know more information about what data we collect and why, please see our data privacy policy. If you continue to use this site, you consent to our use of cookies.
Accept