System Requirements

  • Java Installed version 1.5 or above.
  • Disk Space: 30Kb.
  • RAM: approx. 256MB.

How can I make my client go fastest? Is it slow because it's written in Java instead of C?

The Server Virtual Machine introduced in Java 1.4 is able to dynamically work out which parts of the code are crucial to the speed of an application, ie. those parts it spends most of its time executing. Then it recompiles these bits into optimized native code for the machine its running on which is no slower than C, answering the second question.

The server VM is installed as standard in 64-bit Java distributions.

Is there a forum for the community realated to this project?

Yes there is at http://www.free-dc.org/forumdisplay.php?56-Distributed-Hardware-Evolution-*Official*-Project-Forum.

I have a few PCs I want to install an island on, but can't be bothered to follow the instructions for each of them

For windows, the installer can be run in silent mode as follows:

This will install islands using each PCs hostname as its island name. The team parameter is optional. If you wanted to prefix your island names with a custom string you can add the parameter ISLANDPREFIX=PREFIX so now island names will be {PREFIX}{HOSTNAME}.

For Linux/Unix/Mac OS it's not too hard to devise some sort of script that copies the right files and adds entries in startup scripts.

I'm behind a firewall, what can I do?

If you can open ports in the firewall

You must open ports 1098, 1099, 2010 and 2011.

If you have a SOCKS proxy

You can connect through a SOCKS4 or SOCKS5 proxy:

If you're using a script to launch your island edit the middle line so it looks something like: java -DsocksProxyHost=YOUR.SOCKS.PROXY -DsocksProxyPort=YOURSOCKSPORT -Djava.security.policy=java.policy . You only have to specify the port if its not the default 1080.

If your island is installed as a Windows service edit wrapper.conf and add the following lines anywhere:

For this to work you may need to relax your java.policy file requirements by changing the two lines containing dhep.ga to * like this:
permission java.net.SocketPermission "*:1024-65535", "connect,resolve";
permission java.net.SocketPermission "*:80", "connect";

How can I set up and join a team?

Group many islands into a team and see how it compares to others in the statistics. Set up and join a team in one simple step:

If you're using a script to launch your island just add your team name after your email, so that the middle line of your script looks something like: java -Djava.security.policy=java.policy -Djava.rmi.server.useCodebaseOnly=false -jar ITClient.jar rmi.dhep.ga dubhnahUidhe YOUR_NAME -i 15 -c 30 YOUR@EMAIL YOUR_TEAM.

If you're running your island as a Windows service then edit wrapperX.conf (multiple files where X will go from 1 to the number of cores on your box) and add a line after the one with your email like this:

Team names must have no spaces (use _) and are case sensitive, so "Boca" is not the same as "BOCA".

I can't see the "Better than Human" Hall of Fame circuit diagrams

Please be aware that Chrome and Firefox have removed Java plug-in support so you will need to use Safari or Internet Explorer to run the circuit visualiser and simulator. Because the applet is unsigned you will also need to add the following URLs in the Java Control Panel Security Exception Site List: http://www.dhep.ga, http://dhep.ga and http://users.sussex.ac.uk. You can do this by opening the Java Control Panel (within System Settings on a Mac), opening the Security tab, and then clicking "Edit Site List..." You will need to restart your browser for changes to take effect.

If you cannot find the Java Control Panel, try installing the latest version of Java.

How secure is the client?

The JVM is not allowed by the java.policy file to do anything except connect to the server, ie. it cannot access the local file system, cannot connect to other IP addresses, etc.. This is as secure as anything gets.

Can't seem to connect

I've installed my island as a Windows service, can I see what's going on?

You can check the progress of your island at the statistics page, you may have to go into the Full Rankings to see your own stats. However if you want to check up on your neighbouring islands, have a more detailed account of the current evolving circuit and a diagram of the best current circuit, as shown below, follow these instructions:

If you've installed your client as a service then you must first uninstall it:

Now follow these instructions.

Can I host an island even if I have an intermittent internet connection - such as a laptop or modem?

Yes. You will need to be connected when you start up the client. From then on you can connect and disconnect as often as you like. Your island will exchange individuals whenever it finds a connection to the server. If you don't connect very often, it would behave as if it had a lower migration rate. Such islands would host ecological niches with solutions very different to those of the 'mainland'.

Results Ownership

All evolved circuits are resleased open source under the GPL and open for anyone to use them. The best ones will be published in the "Better than Human" Hall of Fame and in future papers. Others will be handed out upon request.

Multiple Processor/Core Machines

By default DHE will use all available cores on your PC. If you wish to reduce this on Linux/Mac you can modify the startup script accordingly. On Windows you'll need to uninstall the client and then reinstall with the parameter THREADRATIO=0.75 if you wanted to use three quarters of your CPUs, =0.5 to use half and so on. The full command to run is DHESetup.exe /v"THREADRATIO=0.75". Note if you have Windows setup in a local with a different decimal separator you must use that: eg. THREADRATIO=0,75

Service won't start/Java not installed/I get strange JVM errors

You need to install Java. You can download it from here. Also make sure your java.policy file has not been renamed to java.policy.txt by Windows.

What's all this?

You'll get one of these windows every time the server sends a new task to your client, ie. every time the goal of your population changes. The GUI is not essential for your client to run, your island will keep evolved and you can check your progress at the stats page.

On the left panel you can see your neighbouring islands, what generation their population is at, their average fitness and the fitnesses of their best individual. The top-right panel has a textual description of the circuit we're trying to evolve, the Genetic Algorithm we're using and what kind of simulator is being used. The middle-bottom panel shows the generation, average fitness and fitnesses of the best circuit of your island's population. The encoded genotype of the best individual can also be found in the middle panel, and its circuit diagram is shown in the bottom-right panel. Circuit inputs are labelled ``I_x'' and outputs ``Q_x''. For sequential circuits the clock input is labelled ``C'' and for self-checking circuits the error output lines are labelled ``Z_x''. Logic gates are represented as squares taking inputs from their left and their having their output on their right. Their boolean function is shown inside them. For eg. if it says a'b then this means that the gate is an and gate and the first input is inverted.

The GUI only refreshes upon being resized in any way - a crude way to save precious CPU cycles! If you'd like to see what your island is doing at full speed you can continuously resize the window by dragging from a corner.

How often does the client talk to the server?

By default, the client will tell the server what it's been doing every 30 minutes. This is called the interaction time and can be configured:

  • If you're using the service then edit the file wrapper.conf and find the line containing wrapper.app.parameter.7=15. Change the 15 to whatever interaction time you would like in minutes.
  • If you're running the client with a script then change the number after the -i option from 15 to whatever time in minutes you would like for the interaction time.

It must be mentioned that clients with a lower interaction time have a slight advantage in the "Who's got the knack" statistics since they are quicker to present new results to the server.

Why is the installer unsigned?

Code signing allows Windows to prove the authenticity of the originator of an executable. This is specially relevant when the executable might be found in many different sources. This requires purchasing a yearly licensing certificate which is beyond the budget of our project at the moment. Given our Windows installer can be found at a single source (www.dhep.ga/files/DHESetup.exe) then its authenticity is guaranteed in this way. Do not download it from any other site.

A similar logic follows for our circuit visualiser applet.

More questions

Ask M.Garvie@sussex.ac.uk.