Hi again,
The simplest way to do so is to change a bit your dataset so it becomes a bit (or boolean) vector. For instance, from the instance "Job=laborer, Education=High school, Salary=200-490", you produce the following vector : [1 0 0 0 1 0 0 0 0 1 0 0]
This vector can also be seen as : {J0=True, J1=False, J2=False, J3=False, E0=True, E1=False, ...}
In this way, you can directly add J0, J1, and so on, as boolean terminals.
This should work. However, will it work
fine is of course an entirely different question ;-)
Intuitively, I would say that this approach will not be as efficient as others since the differenciation is the same between the terminals representing the same features than between the terminals reprensenting different ones.
For instance, you may end up with a condition like :
IF J0 AND J1
which will obviously be always false, since J0 and J1 are actually representing the same attribute...
Nevertheless, even if there would be other ways to implement this classification problem, overall I think this would be a good starting point.
If you would like to learn more about GP classification, I suggest you this survey :
https://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5340522 (restricted access only, unfortunately), especially the guidelines section.
Have a good day,
Marc-André Gardner