We now have all elements of the simulation - parties, voters, ideological position, and so forth - but we do not have any actual simulation yet. We need the parties to strategically move. 1a. Create a Strategy class with a method update_position() that does nothing, basically acting as a Sticker. 1b. Create classes StickerStrategy, AggregatorStrategy, and PredatorStrategy that all inherit from Strategy. Make sure their update_position() methods align with the strategy as described in the Laver paper. 1c. Start each party with a random strategy and run the simulation for a few steps, looking at the vote counts after each election round. Currently we have a number of settings in the simulation, including number of voters, the jump size when a party moves, the number and strategies of parties, the name of the log file, and so forth. These are all somewhere coded in our simulation code. It would be much more user-friendly, and better for replication purposes, if we have a separate file with all setup parameters, a configuration file. To create a helpful configuration file it is easiest when it is text-based, so that any text editor can be used to easily open and edit the file, while it still has a very clear structure, so that our computer program can also easily interpret the contents. There are a number of options for this, but we'll be using JSON (https://en.wikipedia.org/wiki/JSON). 2a. Create a separate Configuration class where program settings can be recorded. 2b. Develop the Configuration class so that it saves the configuration as a JSON file. See below what the JSON file should look like. 2c. Have the simulation set up the parties based on the configuration. 2d. Update the run() methods in the Simulation class to have the simulation run the number of iterations as in the configuration, reporting vote results for each election. As a bonus, worry about the one remaining strategy, that is slightly harder to implement. 3. Implement the HunterStrategy. Example JSON configuration file: { "log": "simulation-001-log.txt", "voters": 1000, "parties: [ {"name": "FF", "x": 0.7, "y": 0.7, "strategy": "hunter"}, {"name": "FG", "x": 0.8, "y": 0.6, "strategy": "aggregator"}, {"name": "Lab", "x": 0.4, "y": 0.3}, "strategy": "sticker"}, {"name": "SF", "x": 0.2, "y": 0.4}, "strategy": "predator"} ], "jump-size": 0.05, "iterations": 10 }