Skip to content

PiotrZakrzewski/real-estate-sim

Repository files navigation

Toy Model of Rental Market in Julia's Agents.jl

Table of Contents

Introduction

This project uses Agents.jl and implements a simple simulation featuring multiple types of agents (Renters and Rental Properties), where each type independently performs actions aimed at either maximizing their housing satisfaction (for Renters, this means inhabiting a desired rental property) or maximizing rental income (for Rental agents)

The main goals of this project:

  • Showcase for Julia's Agents.jl framework, I want to learn about it and see what I can use it for.
  • Provide a first building block for more useful real estate simulations I would like to build in the future.

At this point this simulation does not aspire to be in any way realistic, it is just a technical proof of concept.

Installation

Install Julia (v1.10 preferably), follow instructions from the official webpage, make sure Julia is in your PATH. Install the dependancies by running the following in this directory:

julia       # to enter the REPL

Inside Julia's REPL

]           # enter into Pkg mode
activate    # activate local project
instantiate # install the dependancies

Verify by running tests

julia --project=. sim_test.jl

Usage

You can start the GLMakie based GUI with the provided convenience script

./start_gui.sh

Change the parameters using sliders and press run, the first time you press it there will be significant delay before the results are rendered, the subsequent runs will be faster. Press save PNG tp save the current output, it will be saved as rental_market_simulation.png in the current working directory.

Agent Behaviour

There are two NoSpaceAgent types of agents in this simulation:

  • Renter, wants to live in the best quality Rental they can afford
  • Rental, wants to maximize revenue from being rented out

Rentrer's Decision Tree

The Rental's behaviour mostly revolves around the decision to increase/decrease the rent. After 12 months of being occupied it always increases the rent by the max legally allowed (5% by default), using values resembling what is common in the Dutch rental market. If it is vacated it sets its new rent to the market value: an average of rentals of comparable quality. The rent is decreased by 5% every month of being vacant beginning with the second one.

Contributions

Your feedback and contributions are welcome! If you have suggestions for improvement or wish to contribute to the development of this simulation, please feel free to open an issue or submit a pull request.