Advertisement

Grouping actors based on competence and interest

Started by April 07, 2008 09:43 AM
56 comments, last by Kylotan 16 years, 6 months ago
Try greedy in order of competence.

The most competent person finds the most efficient task, based on "reward/effort", and works on it. (that's a fraction).

This might require an estimate of the strength and behavior of the rest of the pack, but it might not.

You then continue until the members of that task reject new joiners (ie, the new members lower the reward/effort ratio sufficiently).

There are possible singularities (you can't muster enough strength to even beat one, or doing an easier one with a bunch of high-power people will give you better returns than having to load up on lots of help including people who are bad at it...)

Is the reward chance linear? (Ie, is your chance of success equal to (total competence of actors on the task) / (difficulty of task))
AngleWyrm - mainly I'm just concerned with each group being satisfied with itself, which isn't the case if you have several apprentices leeching off the experts. Maximising the quality of the groups and the number of groups is desirable but the most important thing is that an observer can look at the groups that are formed and consider them viable and reasonable.

Timkin - I may try your idea tonight. The only problem I anticipate with it is that the lower-skilled actors could perhaps dissuade a higher-skilled actor from wanting to work on a given task. I can imagine a cycle occurring where the masters move from task to task to try and find one with few participants, and the apprentices follow along in the next round, trying to get a share of this now-viable task.

NotAYakk - the chance of success always rises with every additional actor, but proportional to that actor's contribution. The difficulty of the task has already been factored in when calculating their contribution. I think the method you describe is pretty much the one I mentioned above, which is still looking fairly reasonable (at least in theory).
Advertisement
This idea is very interesting.

Reading your first post, I think you should define your tasks better. Some tasks may not need the best actors (MBA's don't mop floors) while other tasks only need the best (trash collectors don't do brain surgery). That should help the actors pick the tasks best suited for their competence levels.

You will have problems with the reward system that divides up rewards evenly. Depending on how you write your actors, you may end up with a bunch of rent seekers. The best, most competent actors may also pick a low competence task, or no task at all, knowing they will only get as much as the worst actor; again, this depends on how you code it.

A reward system that divides up the reward by ability would eleminate those problems (the plumber will not get the same reward as the brain surgeon). This goes hand in hand with the better defined taskes to pick from, as the best will compete with the best, and the worst with the worst. From that, you can find out what to reward each depending on supply. It would be good to also add a way for the worst to get better, along with being able to change tasks (like training in a different field would require new training, basicly going from best to worst again). The actors may decide to move from a high competence task to a low one based on expected reward. Example: If all the actors became doctors, then the reward for being a doctor would be low (supply/demand). If the reward for some actors drops below what they value, switching to a different task may give more reward in the end when that actor becomes skilled at that task. This simulation would most likely always be in a constant state of change and always near a good (dare I say perfect) equilibrium.

It sounds more complecated than it really is. I say, init those values to random numbers and let emergent behavior take over. :)

EDIT: I'm kinda taking this from the point of view of examining human action. I know you want group reward (I'm saying it wrong, but I know what you mean), but how many people do you know do their jobs based on what's best for the people they work for or the group they work with? Sure, there are some, but most that I know work to get something in return, and that's it (or at least that is the only thing that can be taken as a given through observation).

-Chris
Quote: Original post by easyBob0101
Reading your first post, I think you should define your tasks better. Some tasks may not need the best actors (MBA's don't mop floors) while other tasks only need the best (trash collectors don't do brain surgery). That should help the actors pick the tasks best suited for their competence levels.


I disagree - the tasks are already well defined. At this point in the process, actor competence for a given task can be measured as a number between 0 and 1, and the reward can be quantified as a positive value. MBAs may not generally mop floors, but if someone offered $1M for one to mop one floor, I would hope that their keen business sense would see them taking the job more often than not. And that's the situation I have here, since the reward value is essentially arbitrary. At the other end of the spectrum, trash collectors would have zero competence for the brain surgery task and wouldn't be considered at all.

Quote: The best, most competent actors may also pick no task to do knowing they will only get as much as the worst actor; again, this depends on how you code it.


There won't be any envy or jealousy mechanics! The actors can judge how much reward they are likely to get and choose on that basis. They don't really need to consider how much anybody else would get.

Quote: This goes hand in hand with the better defined taskes to pick from, as the best will compete with the best, and the worst with the worst. From that, you can find out what to reward each depending on supply.


Sadly all of this is describing a system different to the way my game works. The rewards assigned to a task are arbitrary; that is a constraint. It is then for the actors to decide how worthwhile each task is, relative to the others. Dividing up the reward according to contribution is not in itself a difficult problem, but deciding who will be in the group in the first place when you can't adequately judge your benefit from being a participant until you know who else is in it first, is a problem.
Quote: Original post by Kylotan
I disagree - the tasks are already well defined. At this point in the process, actor competence for a given task can be measured as a number between 0 and 1, and the reward can be quantified as a positive value. MBAs may not generally mop floors, but if someone offered $1M for one to mop one floor, I would hope that their keen business sense would see them taking the job more often than not. And that's the situation I have here, since the reward value is essentially arbitrary. At the other end of the spectrum, trash collectors would have zero competence for the brain surgery task and wouldn't be considered at all.


Ok. :) Maybe you could explain why the reward system is arbitrary (who whould offer 1million$ to an MBA for mopping a floor?)? That may clear up some of my misunderstandings.

Quote: There won't be any envy or jealousy mechanics! The actors can judge how much reward they are likely to get and choose on that basis. They don't really need to consider how much anybody else would get.


No envy or jealousy needed. :) This is based on what the expected return to the actor is; not based on what others get (what actor would do a lot, for very little?).

Quote: Sadly all of this is describing a system different to the way my game works. The rewards assigned to a task are arbitrary; that is a constraint. It is then for the actors to decide how worthwhile each task is, relative to the others. Dividing up the reward according to contribution is not in itself a difficult problem, but deciding who will be in the group in the first place when you can't adequately judge your benefit from being a participant until you know who else is in it first, is a problem.


Which is why you need to have some competition between equally competent actors. One thought would be: Two equally competent actors are going for the same task, which one will get selected? Maybe if one decided to take less reward from the whole will get it. As more actors are added to the task, the actors already working on the task can/should reasses their decision: are they going to get their expected value, or, are they going to get something they value from this task more than any other task they could be doing?

I guess I'm just seeing a system that will fail (not trying to be mean or anything). Maybe I'm still not getting how you game works.

Could you explain it in more detail so I can stay within the rules you are setting? You know, what's the goal? The point of the tasks? etc.

-Chris
Quote: Original post by easyBob0101
Ok. :) Maybe you could explain why the reward system is arbitrary (who whould offer 1million$ to an MBA for mopping a floor?)?


The human players get to choose how to assign the resources that make up the rewards.

Quote: No envy or jealousy needed. :) This is based on what the expected return to the actor is; not based on what others get (what actor would do a lot, for very little?).


Ok, again I think this is a misunderstanding. "The best, most competent actors may also pick a low competence task, or no task at all, knowing they will only get as much as the worst actor" isn't an issue - what the worst actor gets is irrelevant. Only the overall reward and the number of participants is relevant, plus their combined competence. There is no problem at all with a top-class actor choosing a menial task if the reward is good. That is what I expect to see.

Quote: Which is why you need to have some competition between equally competent actors. [...] As more actors are added to the task, the actors already working on the task can/should reasses their decision: are they going to get their expected value, or, are they going to get something they value from this task more than any other task they could be doing?


That this needs doing is obvious though. The problem is how.

(I edited this post several times, sorry for any confusion.)
Advertisement
Quote: Original post by Kylotan
That this needs doing is obvious though. The problem is how.


Right. You need a simple value system, much like how you have competence. The value would be a minimum of sorts; the actor couldn't go below that minimum when bidding for the task. This value number would also be used to help decide which task an actor will choose to pick as well.

Just typing out loud now :)

Let's not worry about competence right now, and just look at how a value system would work.

All the available actors would rank each task at hand based on the value they expect to get from it. They would then pick their highest ranked task, as they currently expect to get the most value back from doing it.

If more than one actor picked the same task, they would start to bid eachother down. But, they couldn't go below what they ranked, in expected value, the next best task to do.

Let's say:

Actor # 1:
Task#, Expected Value
1, 10
2, 8
3, 5
4, 1

Actor # 2:
Task#, Expected Value
1, 10
2, 7
3, 5
4, 1

From this example of rankings, actor #2 would get the job, as actor number one would pick task #2 when actor #2 bid the value down to 7. Adding competence back in helps to eleminate actors also, so you can think of the value system as a way to make sure you don't get stuck with two actors of the same competence going for the same task. Picking a value would have to be random of course, maybe base it off of competence too; it's hard to put value in terms of numbers that aren't based on a price system (which is why I said reward is important).

Just a thought. This would make an interesting game as you could end up with a bunch of "researchers" available when you need some manual labor done...That would require the player to manage his pool of actors better, and not just dump as many as he can into mining, or something like that.

-Chris
Quote: Original post by easyBob0101
All the available actors would rank each task at hand based on the value they expect to get from it. They would then pick their highest ranked task, as they currently expect to get the most value back from doing it.

If more than one actor picked the same task, they would start to bid eachother down.


This misses the fact that each task requires a group of actors.

Quote: Original post by Kylotan
Quote: Original post by easyBob0101
All the available actors would rank each task at hand based on the value they expect to get from it. They would then pick their highest ranked task, as they currently expect to get the most value back from doing it.

If more than one actor picked the same task, they would start to bid eachother down.


This misses the fact that each task requires a group of actors.


Nope :). Each turn you add more actors by doing the same thing, while the ones already working on a task could reevaluate the tasks as well, possibly changing tasks if their expected value from the current task drops below their expected value of the next best task.

You said you needed a way to pick who is in the group first (or that is what I picked up on). This is one way to do it, based on competence first, then value, based on what the actor currently knows about the situation (one actor doing the whole task by him/her self could expect a large reward/value; as more actors are added to the task, the expected reward/value would drop, hence, reevaluating).

-Chris
The real problem is finding which permutation of actors joins each group. Since multiple actors would join a given group, why would they bid against each other when there is room for both?

This topic is closed to new replies.

Advertisement