Before you download
- The software runs on Windows.
- Before installing the software, you must install Java JRE.
If you do not have Java installed, you can
download it from java.sun.com.
Download and install
- Download file "mead.zip" and unzip it to any directory.
- Using windows explorer, double-click on file "mead.jar"
- Open a sample problem: select "Problem" | "Open" and select the file "demo.def" from the problems sub-directory.
- Run sample problem: select the "Execution" tab, and click the "Run" button.
The program will scan 25,221,389 algorithms, and find 105 solutions, one of them is Peterson's algorithm.
- You can also
download the source code.
Running the program
The program accepts problem definition files. A problem definition file can be loaded, and when executed, the program scans
all possible algorithms according to the problem definition constraints, checks each candidate algorithm, and if it is a valid
solution, prints it.
There are 4 main sections (tabs) on the user-interface:
- Problem: Shows the problem definition
- Execution: Shows execution status, and manage execution control (start, stop, pause)
- Solutions: Shows all solutions found so far
- Log: Shows log messages
Problem definition file
A problem definition file is a text file with all the settings for a specific problem.
In each line a single settings variable can be defined. The following table lists all problem definition parameters:
| Parameter Name |
Type |
Value |
| Processes |
Number |
Number of processes |
| MemorySize |
Number |
Number of variables. each variable is an unsigned integer |
| MaximalValue |
Number |
The maximal value of each variable. The minimal value is always zero. |
| EntryCommands |
Number |
Number of source commands (lines) in the entry code |
| EntryCommands |
Number |
Number of source commands (lines) in the exit code |
| AllowMultiWriters |
true or false |
If false, each process can write only to array variables where the process-identifier is the index.
For example, the assignment a[0]=1 required multi-writers, but a[me]=1 is single-writer.
|
| AllowConditionAnd |
true or false |
If true, allows generating a condition with 2 sections combined by an "and" condition (for example "if a=1 and b=0") |
| AllowConditionOr |
true or false |
If true, allows generating a condition with 2 sections combined by an "or" condition (for example "if a=1 or b=0") |
| AllowConditionXor |
true or false |
If true, allows generating a condition with 2 sections combined by an "exclusive or" condition (for example "if a=1 xor b=0") |
| FirstCommandIsAssignment |
true or false |
If true, allows only assignments as the first command of the program |
| FirstCommandIsAssignmentToA[me] |
true or false |
If true, allows only assignments as the first command of the program, and the target of that assignment is to the variable "a[me]" |
| LogGeneratedComponents |
true or false |
If true, writes generated variabls and commands to the log file. Can be used to see the generated program elements. |
Background, published-paper, questions and more
|