Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 ... 179 180 [181] 182 183 ... 192

Author Topic: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)  (Read 845984 times)

thistleknot

  • Bay Watcher
  • Escaped Normalized Spreadsheet Berserker
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2700 on: January 11, 2013, 09:10:55 pm »

I was looking at the code for how skill rates are included.

here it is
Code: [Select]
            if(m_df->show_skill_rates()){
                skill_rate_value = s->skill_rate() / 500; //skill rate is capped at 500%, default is 100%
                aspect_value += skill_rate_value;
                aspect_value /= 2.0f; //equally weigh skill rate gain and the actually skill rating, may need adjustment
            }

So if I'm reading this correctly
it's skill rate / 500 (vanilla would be 100 / 500)
Vanilla skill_rate_value = .2
then the aspect_value (which is the skill exp / 29k) = aspect_value + skill_rate_value (so far, for vanilla, (skill exp / 29k) + .2)
then divide this by 2?

how does that make sense?

Maklak

  • Bay Watcher
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2701 on: January 11, 2013, 11:17:54 pm »

I did some research on the subject http://www.bay12forums.com/smf/index.php?topic=121573.msg3944723#msg3944723 and my conclusions are that:
* Speed (based on agility, strength and encumberance) and not attributes directly influence how fast a task at a workshop is performed.
* Much to my surprise, attributes seem to influence quality, but I didn't make enough beds to be certain.

Quote
if you have the role stuff off of the labour columns the weights don't affect anything. it's purely sorting on the rating and the skill rate. the problem is that it's combining those two elements, which you disagree with. I'll run some tests to compare with your suggested method and consider changing it, since I think it was you who asked for it in the first place.
I agree with combining skill and skill rate, I just disagree with combining them incorrectly.
Yes, I asked for skill rates, but I won't be the only one benefiting from them. For example Masterwork Mod has castes and learning rates too.

Quote
hey i've got no problem gutting the default roles if people think they're downright awful. you're the first one to complain so vehemently, and i'm willing to look past the blatant insults to listen to what you've got to say.
Hey, I was restraining myself, damnit. Well, I guess some of what I said may have been seen as insults. Anyway, at my best I can provide lots of useful feedback and at my worst I get into arguments.

Quote
if you're saying the wiki is full of shit, well i guess i'd like a few other people to back that up. again it sounds like you're have a major issue with the default roles right? have you overridden most of them, or you're just upset because you feel it misleads new users?
Well, I said that some info on the wiki is useless, but overall I think the wiki is good, it just doesn't have all the data and formulas, even those it used to have for 40d. Vague statements that "Archery affects ranged combat", when the research says it barely influences enemies' dodge chance or "These attributes are related to this skill" just don't tell me much when I need numbers and formulas for calculations. Don't tell me, this wasn't frustrating when you were implementing the hints for best roles.

As to roles, well I used to rely on them, because "hey, a guy with 80% marksdwarf has to better than one with 20%, right?" For unmodded game it didn't really matter much. Besides I assumed that whoever implemented this feature based it on some solid information and not guesswork. Even when DT sorted things mixing high and low skills, I still believed that it was because attributes changed the amount of XP per job (they don't). I only discovered how flawed this system was when I got a mod with skill rates and the recommendations became too misleading to bear. My guess is that most people either ignore the recommendations or assume they're right and don't question them. Besides, providing hints based on some heuristics is OK, but sorting by them should be an option with sorting by XP as default.

Quote
Quote
Include a sortable grid view with stats. (The one we have works for sorting, but not displaying stats.)

what stats aren't capable of sorting? do you mean attributes?
Yes, I meant attributes. They are sorted correctly, they are just displayed with a few discrete values tied to descriptions in the character sheet and it can and should be improved. I already gave you an idea to just put numbers from 0 to 00. Another possibility is to find the minimum and maximum for current population and scale that from -20 to +20. The only downsides are that this will be weird for a small number of dwarves (could be remedied by say, having minimum be no greater than 700 and maximum no less than 1200) and that as the military progresses, the civilians will seem to regress.

Quote
you don't need to know the weights, the weights are whatever a user decides. the system doesn't care. you love your skills, go ahead, weigh them as 10x that of everything else. maybe you want to override that on a specific role, or leave skills out of the next role. what's so wrong with that? what's wrong with the design that a user should be able to decide what to value more for a particular job?
There are default weights. My guess is that few users will be capable of improving them. I also don't think an aggregating function based on weighted arithmetic mean is much good here. However, after all this discussion, I'm inclined to agree that this system can be usable for some things, tweaked or even "disabled". Oh, and since I'm a user, this is a contradiction: "you don't need to know the weights, the weights are whatever a user decides".

Quote
speaking of wrong assumptions, in the role calculations, the raw level and experience are never used. it's capped at legendary +5, since for a job in DF higher than 20 doesn't matter. they are tied to the current level of skill, they're just valued equally (which i think i clearly mentioned may need adjustment).
If the XP level for a Legendary +5 is listed as "29000+" or "MAX" and all those dwarves are treated as equals, I'm fine with it. However for two nearly identical dwarves, one of whom is 90% to next level and the other 10% to next level, the more advanced one should be higher. This is why I think sorting by (capped) XP rather than skill level would be a good idea. 

Quote
Quote
Give warning to any tooltips with the roles that the values there are arbitrary and should not be relied upon.
really now, if you can't compose yourself enough to have a decent discussion i'll be hard pressed to keep taking you seriously.
So now you're insulting me back. I am serious, at least add this info about roles to the manual. Speaking of which, a manual for DT would be a good idea. It is easy to just use DT for labour management, but it has some more esoteric stuff. For example I've read somewhere that it is possible to make lists of skills and assign those lists to dwarves, which would be faster than clicking each square separately for each wave of migrants.

Quote
Quote
I think I see why we disagree. When selecting a Dwarf for a job, I think you ask "Which one of you will work the best at Legendary +5?" For me the question is "Which one of you will get to Legendary +5 the fastest and wasting the least materials?"
I think this is key. you don't want attributes, traits or preferences in your roles at all. so is the system totally flawed in it's concept, or are you just unable to figure out how to make it work for you?
I had to think a bit on this one. The system has been working against me so far and I still say it is flawed in it's concept. There are some ways to aggregate functions: first normalise them, then use arithmetic, geometric or max / min methods. There is also a method with distance from an "I'm happy with this" spot. All of them have their own problems, if only in choosing weights that make sense.

Quote
Of course, attributes, traits, and preferences have significant roles as well, and so must also be weighted (Especially as the majority of DF games played have no differing skill rates). As such, perhaps an option to weigh/not weigh skill rates would serve as a compromise?
They are either different and matter or uniform and don't matter. It is automatic; making an option for this would be pointless, except maybe to avoid dwarves with low skills being above those with higher skills, but poor learning rates.

Quote
That's why skill ratings (before being combined into a role rating) take into account the caste's skill rate learning.  I believe it's something like skill rating * % of skill increase rating.  Example, if a wood savant (not sure if wood savants learn carpentry faster) has a 130% increase in skill learning, than the skill % * 130% would be the new skill rating before being combined with attributes and traits and preferences % before being combined into an overall percent.
This is wrong, because for very low skill the skill rate wouldn't matter, while an unskilled wood savant is obviously a better choice for a carpenter than a Novice, since he will get to Legendary +5 faster. You want to take ((29000 - current_XP) / skill_rate), since that's all the skill rates affect in the end. Now, for this not to screw up your current system and assuming you want to normalise to <0,1> at 100 skill rate, where 1 is more desired than 0, you'd have to take (1 - ans/290.0). So this should work:
Code: [Select]
int XP = (current_XP > 29000) ? 29000 : current_XP;
int rate = (skill_rate < 1)? 1: skill_rate;   // 0 or 1 doesn't really matter.
double jobs_left = (29000 - XP) / rate;  // Ignore division by 60.
double normalised_XP = 1.0 - jobs_left/290.0;    // This can be as low as -28999, but you don't want to train a skill with 1% learning rate anyway.
    // For things like 0 skill and 30% learning rate this will be -2.3333, which is quite sane, but you might still want to "cap the bottom".
    // For good learning rates, like 200%, this formula "pretends" that half the XP has already been generated.
Well, some edge cases, like a Legendary+5 at 1% learning rate and fast skill rust aren't considered, but for most things this should be fine.

Quote
Creativity (in my experience, repeatedly, but I have not kept hard numbers   leads to much higher quality works in Masons/Carpenters/Craftsdwarf's/Weaponsmiths etc., and Analytic Ability to higher quality meals and mechanisms.  At least for moderately skilled dwarfs.  Perhaps this effect disappears at Legendary+5?
My own research inconclusively indicates that you are correct. I assumed the info for 40d about quality was still valid, because newer versions of it don't have a nice spreadsheet.

Quote
the nice thing about applying the skill rates with a weight is it's easy to allow the user to set a weight themselves.
You might as well say that the nice thing in trying to emulate multiplication with weighted addition is that the user can adjust the weights himself. It just doesn't work that way. What you might do with your current system is to include weights for raw skill and the value that my formula spits out. That way it is easy to disable one of them, but for 100% learning rates they are synonymous anyway. Once you have access to the learning rates, using them for calculations and adding things to options are a low hanging friut.

Quote
there's been a lot of effort (myself and others) put into the branch, but the direction is always community driven. regardless of the amount of tact when providing feedback, i still appreciate it and try to make whatever changes are necessary.
Thank you. I am more rude than I need to be, but it stems from me wanting DT to work better, for me at least.

Quote
no it's not doing that, and that's one of the major problems he's got. i used an equally weighted average between the skill experience and the skill rate, because i figured i wouldn't want a low level with high skill rate jumping up over a higher skill level with lower rate. this may not have been the best decision, which is fine! that's the reason there's patch notes and i asked for feedback, so it can be adjusted, because i don't get to play to know, i'm always coding.
I've actually considered the problem of unskilled peasant jumping ahead of someone experienced, when the skill rates are different enough. On one hand, the dwarf who is skilled now can already produce better items faster, on the other a high skill rate will let someone else catch up and exceed his skill relatively quickly. My conclusion is to allow "jumping ahead" for these reasons: 
* Whoever wins the race to Legendary +5 should get the job anyway.
* I can easily see out-of order skill levels in the grid. I cannot see out-of order skill rates, except by looking at lots of tooltips.
* Meaningless in vanilla and people with mods and castes will likely want to use them to their fullest anyway.
* As of now, the grid sorts by a compound value rather than skills, so this is already happening.

Quote
Malak, I think you need to pull your head in a bit mate, as we say here in Australia.  Coming in to a thread demanding that the volunteer developer change his code to what you want, questioning why nobody has noticed this obvious bug before (and therefore implying everyone else in the thread is an idiot), and generally using confrontational, aggressive and overbearing language is no way to win friends and influence people.
I know I'm antagonising people and that this is a recurring pattern, no matter the social group. To date, I haven't found a solution to this problem. If I just wrote what I wanted to say, waited for two days, edited it and posted it then, this discussion might have looked differently, but what's done is done. There isn't even much room for "damage control".

Quote
current xp/29k * skill rate.
Incorrect and I explained it above as well as gave the formula for determining who maxes out the skill the fastest. One way of looking at it is that XP rates generate "virtual XP".

Quote
it's also important to note that what's used in the roles doesn't have to be used for the sorting. they're calculated separately.
I don't mind hints about roles in tooltips much, even those I disagree with. It is just that everything is sorted by them, but as someone already explained, the workaround is to set weights to 0 to everything except skills.

Quote
currently if the levels/xp are equal the higher rate will end up with a bonus and thus a higher rating.
Well, I still have tooltips to hunt down a candidate for a job, but sadly they don't display XP rates for skills at 0. Even then, I have the bigger tooltips to guess the caste by description and check it in the big file in the RAWs if I have doubts, it is just time-consuming and inconvenient.

Quote
So if I'm reading this correctly [...] how does that make sense?
It doesn't, that's part of the point I'm trying to make.
Logged
Quote from: Omnicega
Since you seem to criticize most things harsher than concentrated acid, I'll take that as a compliment.
On mining Organics
Military guide for FoE mod.
Research: Crossbow with axe and shield.
Dropbox referral

thistleknot

  • Bay Watcher
  • Escaped Normalized Spreadsheet Berserker
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2702 on: January 11, 2013, 11:52:14 pm »

I'm sure splinterz will love your formula!
Quote
This is wrong, because for very low skill the skill rate wouldn't matter, while an unskilled wood savant is obviously a better choice for a carpenter than a Novice, since he will get to Legendary +5 faster. You want to take ((29000 - current_XP) / skill_rate), since that's all the skill rates affect in the end. Now, for this not to screw up your current system and assuming you want to normalise to <0,1> at 100 skill rate, where 1 is more desired than 0, you'd have to take (1 - ans/290.0). So this should work:
Code: [Select]

int XP = (current_XP > 29000) ? 29000 : current_XP;
int rate = (skill_rate < 1)? 1: skill_rate;   // 0 or 1 doesn't really matter.
double jobs_left = (29000 - XP) / rate;  // Ignore division by 60.
double normalised_XP = 1.0 - jobs_left/290.0;    // This can be as low as -28999, but you don't want to train a skill with 1% learning rate anyway.
    // For things like 0 skill and 30% learning rate this will be -2.3333, which is quite sane, but you might still want to "cap the bottom".
    // For good learning rates, like 200%, this formula "pretends" that half the XP has already been generated.

btw, normalizing from 0 to 100, with 50 representing average is always the desired result.  We have it done for attributes and traits... trying to quantify skills and adding in skill rates was hard, but your crazy ass formula worked (maybe we can do something similar for preferences as well....)  I don't see how one can get negative numbers (unless some castes have below 100 learning rates).

btw, we're working on introducing more attribute bins for modded games, so the attribute %'s scale to all castes (no more -20 to +20 squares drawn to each caste, but now a % from lowest possible to highest possible based by combining all castes into a super binary distribution).  Each bin is factored by that castes frequency in the population, then a master bin layout is created (bin as in binary frequency distribution).

I'm going to code your little quip in right now, I can upload it for you if you'd like.

btw, I think who is currently best at a job is more important.  If I want to create high quality items now, then I want to see who's best now.  Naturally, learning rates should be considered, but... I think that as they are considered, they will eventually supplement and surpass my slower learning rate dwarf's.

Update:

Well, I modded in your suggestion, here's what the code looks like
Spoiler (click to show/hide)

I'm not exactly sure what it's doing, or how it does it, I know it scales from 0 to 100, and giving preference to those with higher learning rates... it also seems to take learning rates below 100% and sets them to 100% (I'm not sure that's necessary).

Update:
Well here's your version.

Thanks for that code snippet.

I see now what happens with low skilled dwarf's that have below 100% skill learning rate...  They get a negative # that means # * 100%, which could have a detrimental affect on role calculations since it's not 0 to 1 (but to be honest, it doesn't really matter, because in the end, there's a cdf function that's done on everything, although... my labor optimizer, uses the raw values before it's ran through a cdf...).
What could be done, is scale anything below 0 to .01 to .1, -99 would be .01, -2.33 would be .9767.  The frequency of such dwarf's is probably minimal that this wouldn't mess up your formula.

here's the code built.

personally, I still prefer a current highest, as I want to know who's currently best, as the current best dwarf will change over time, I update my dwarf's accordingly (thanks to the labor optimizer, mass reassigning labors is a snap).

http://www.mediafire.com/?672ff04vcbmww7d
« Last Edit: January 12, 2013, 01:18:59 am by thistleknot »
Logged

Maklak

  • Bay Watcher
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2703 on: January 12, 2013, 06:14:45 am »

Damnit, the browser just hanged and ate what I wrote  >:(

It is good that we are finally having a conversation. I'm supposed to be good at math, at least with optimisation, multi-criteria optimisation, heuristics, operations research and similar fields. My formulas are rather obvious if you think in terms of distance from the sweet spot (legendary +5), with "distance" being the number of jobs it will take to get there. Sadly, you still don't get what it does and how it works, so I'll try to explain. Using formulas without understanding them and obfuscating that with code, then fixing that in the wrong places is a big problem.

Quote
btw, normalizing from 0 to 100, with 50 representing average is always the desired result.
Well, you could simply multiply this by a 100, but it won't be enough if you want to get rid of negative values so much.
-  double normalised_XP = 1.0 - jobs_left/290.0;
+  double normalised_XP = 100.0 - jobs_left/2.9;

50 doesn't represent "the mean", but rather being halfway there.
Therefore a Dwarf with 29000/2 XP and 100% learning rate is halfway there.
So is a Dwarf with 29000/4 XP and 150% learning rates.
So is a Dwarf with 0 XP and 200% learning rates.
So is a Dwarf with 29000 *.75 XP and 50% learning rates. Come to think of it, this one is actually preferable to the rest, since he can make quality items now and will continue to be better until the others catch up, so aggregating this with pure skill level / capped XP is a good idea.
Is this clearer now?

Quote
I don't see how one can get negative numbers (unless some castes have below 100 learning rates).
Of course I can have learning rates below 100%. Just look at Masterwork Mod castes. https://lh4.googleusercontent.com/-PwhM3DFdPo8/UOJQ16NWd-I/AAAAAAAALkI/7vXBQLy85GQ/s1020/Caste%2520Guide.jpg Half of them have "Slow learner, 50% skills" for most skills. Part of the point of having "savant" castes is that they are good at something, but not much good at anything else. There is similar balance in the FoE mod I play, otherwise I'd have "Dwarves, only better". The negative normalised_XP represents "penalty XP". An unskilled Dwarf with 50% learning rates gets -1 (or -100 if you normalise to a 100), because -1 is twice as far from 1 as 0 is rom 1. By capping skill rates at minimum 100% you ignore that information, which is incorrect.

Quote
btw, we're working on introducing more attribute bins for modded games, so the attribute %'s scale to all castes (no more -20 to +20 squares drawn to each caste, but now a % from lowest possible to highest possible based by combining all castes into a super binary distribution).  Each bin is factored by that castes frequency in the population, then a master bin layout is created (bin as in binary frequency distribution).
I don't really understand any of that and neither wikipedia nor wolfram alpha has any info on "binary frequency distribution". It feels like an overly complex solution to a simpler problem. I would prefer to see real values, but if you want to go for maximum and minimum for all castes and scale the results to <-20, +20>, just remember to also find the minimum and maximum for current citizens. Some may rust below the racial minimum and soldiers are likely to exceed the normal racial maximum, at least for some attributes. I don't care about the frequency of castes, just that I can look and see who is the strongest among my population at a glance, without sorting by strength.
After thinking about it for a while, I think I understand. Rather than scaling linearly between maximum and minimum for an attribute, you compute the probability distribution for an attribute based on values for and frequencies of castes, then slice the cumulative distribution function into 41 or whatever equal pieces (from 0 to 1). If that's what you're doing, it IMO is an overkill, but may have some nice properties. I suppose you can just display minimum or maximum for those dwarves who are outside of your intervals. The easiest way to do this is by "brute force". Just have an array of 5000 doubles and for each caste add a few thousands of: probability_of_attribute_value * probability_of_caste. It will be easy to find your intervals from there.

Quote
btw, I think who is currently best at a job is more important.  If I want to create high quality items now, then I want to see who's best now.  Naturally, learning rates should be considered, but... I think that as they are considered, they will eventually supplement and surpass my slower learning rate dwarf's.
This is fully doable with your normalised, weighted arithmetic mean. Just have the weight for unmodified skill be an order of magnitude higher than for what my formula spits out. But, like I said, you'll easily notice out-of order skills in grid view (0 above 5 or whatever) and your factoring in attributes already does this sort of thing anyway. You won't notice a wood savant so easily when looking for a new carpenter. (Well, you would in masterwork, but in FoE citizens have no natural skills from their castes, just different learning rates.)

I've read the code and the biggest issue is that you cap learning rates at a minimum of 100%. Since I'm proposing a "fix", if you want to even give my ugly bastard the curtsy of calling it a fix, I won't get into more details here.

Quote
I'm not exactly sure what it's doing, or how it does it, I know it scales from 0 to 100, and giving preference to those with higher learning rates... it also seems to take learning rates below 100% and sets them to 100% (I'm not sure that's necessary).
That's a big problem. Those are simple and obvious formulas and I didn't even expect, I'd have to write them down myself, much less explain them is such detail. :( Once again, the negative values are essential and it really is a linear scale best understood in terms of distance to 1 (or a 100). Negative values are just further away and you don't want to assign dwarves with big skill penalties to labours anyway.

Quote
What could be done, is scale anything below 0 to .01 to .1, -99 would be .01, -2.33 would be .9767.  The frequency of such dwarf's is probably minimal that this wouldn't mess up your formula.
Facepalm. -99 (when scaled to 1) for 0 skill means 1% learning rate (My previous code snippet had an error in the comment). -2.33 for 0 skill means 30% learning rates. Both are trivial to calculate in memory. What you're saying here is that assuming you scale to <0,100> both 1% learning rate and no skill and 30% rate and no skill are about as good as a dabbling Dwarf with 100% learning rate, which is obviously not the case.

My formula with negative values has elegance, but fine. If you want to pervert it and force it to fit into <0, 100> with 50 being an "average" value, I can still do that better than your proposal. It will of course still be bogus, in addition to being disgusting and not as simple as what I proposed in the first place, but it can be aggregated with the rest of your criteria without crippling them for low learning rates. (And since I'm insulting my own work here, no one should object much). (That was a joke.)

Code: [Select]
int XP = (current_XP > 29000) ? 29000 : current_XP;
int rate = (skill_rate < 1)? 1: skill_rate;   // 0 or 1 doesn't really matter.
double jobs_left = (29000.0 - XP) / rate;  // Ignore division by 60.
double normalised_XP = 50.0 * (1.0 - jobs_left/290.0);    // Scaled to <-4950...50>
if (normalised_XP >= 0)
  normalised_XP += 50.0;    // Values <50..100> reserved for those suitable for a task.
else
  normalised_XP = -50.0 / (normalised_XP - 1.0);   // Best I can do is a multiplicative inverse, really better suited for geometric means.
    // It should be barely acceptable for learning rates no lower than 30%.
With this, 50 is no longer "halfway there", it is what you get for 100% rates and 0 skills. The closer you are to legendary +5, the closer this is to a 100, and the lower the learning rate, the closer you are to 0. Well, not the first and not the last hax in multicriterial optimisation.
Logged
Quote from: Omnicega
Since you seem to criticize most things harsher than concentrated acid, I'll take that as a compliment.
On mining Organics
Military guide for FoE mod.
Research: Crossbow with axe and shield.
Dropbox referral

thistleknot

  • Bay Watcher
  • Escaped Normalized Spreadsheet Berserker
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2704 on: January 12, 2013, 09:38:59 am »

im not against negstive numbers. maybe a -100 to 100. negative is any value below 100% learnig rate. i can prolly use ur last formula to set 0 xp 100% learning rate to 0

the more and more i think about it. the more i dislike skill % being modified by skill rate.

skill % is already modified by skill rate by attaining skill faster.  to me it would b better to have a group by option for it, ot own category (such as attributes, skills, traits, preferences, skill rate), or an option to modify existing skill by skill rate (but not enabled by default)

Update:
what could be done to make it it's own category

is to read all rate modifiers for castes, multiply this rate modifier by the castes frequency

then do something like set the lowest value to 0, highest to 100

Something similar is being done for attributes

and a mean of 50 is not important for skills, it was more-so for traits/attributes

here's the code for attribute bins
Spoiler (click to show/hide)

traits
Spoiler (click to show/hide)

the traits and attributes use known knowledge to find their mean of 50.  I did the research on the traits myself using 16,000 dwarf's, which provided me with about 46k data points to draw the statistics from.

The attributes were verified once it was found dfhack was exporting names of attributes in the wrong order, I started a big fight on the wiki saying stuff was inaccurate...  the attributes follow a simple 1/6 breakdown per bin category (remember what I was saying about frequency bins, at least that's what I told a frequency bin was).

we hope to incorporate better traits for castes by incorporating the castes min/max values that vanilla traits don't have.  The formula is pretty basic, it's
Spoiler (click to show/hide)
what this does is convert any non symmetrical trait to a symmetrical one (works for vanilla means of 45 and 55) to have it match the distribution of a normal trait, then the number is plugged into the trait bin that I pasted above in this post.  The numbers were verified to match using "skewed" traits, i.e. mean of 45 or 55, once "normalized", the distribution matched a normal distribution.

we hope to multiply these values by the castes frequency, so we can see where a dwarf fits within the whole fortress mode race.

trait bins
« Last Edit: January 12, 2013, 10:26:42 am by thistleknot »
Logged

Rowanas

  • Bay Watcher
  • I must be going senile.
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2705 on: January 12, 2013, 10:40:35 am »

I'm getting pretty much to the end of my tether trying to make Dwarf TheRapist read my dwarves. I own a mac, so all of those helpful "34.11 included" versions like the splinterz branch, won't work for me. After searching a while, I found someone asking the same thing, and I've done both. Either way, DT connects to my game, but when I try to read my dwarves, it tells me that my game isn't running, or that I've unloaded the fort. I brought the fort out of my sidebar, just in case that was screwing it up, but it gives me the same message every time and it's driving me nuts. It's like DT is aware that I'm playing, but can't see the actual game. Any help?
Logged
I agree with Urist. Steampunk is like Darth Vader winning Holland's Next Top Model. It would be awesome but not something I'd like in this game.
Unfortunately dying involves the amputation of the entire body from the dwarf.

MaxZero

  • Bay Watcher
  • Doot doodoo de doo
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2706 on: January 12, 2013, 11:04:55 am »

I'm getting pretty much to the end of my tether trying to make Dwarf TheRapist read my dwarves. I own a mac, so all of those helpful "34.11 included" versions like the splinterz branch, won't work for me. After searching a while, I found someone asking the same thing, and I've done both. Either way, DT connects to my game, but when I try to read my dwarves, it tells me that my game isn't running, or that I've unloaded the fort. I brought the fort out of my sidebar, just in case that was screwing it up, but it gives me the same message every time and it's driving me nuts. It's like DT is aware that I'm playing, but can't see the actual game. Any help?

This topic is a bit too technical for easy reading so I haven't bothered to read back to the posts from June to see if the situation is any different from when I was first trying to get it to work. If it is, please dont moan.


To get Therapist to work properly with 34.11 on the mac, you will need to manually insert the required memory layout into the program's 'package contents'. To get there, right cilck on the Dwarf Therapist application, click show package contents and navigate to Contents>MacOS>etc>Memory_Layouts>osx

Within that you will see that there haven't been any added to the program since .07
Amending the download would save a lot of people a lot of hassle

I dont know where to find the .11 memory layout online but you can make it yourself by opening textedit and pasting the following into a document

Code: [Select]
[info]
checksum=0x8f421f9c
version_name=v0.34.11
complete=false

[addresses]
translation_vector=0x01636a88
language_vector=0x01636a70
creature_vector=0x015f56ec
dwarf_race_index=0x015dcf80
squad_vector=0x01633600
current_year=0x01fb1f21

[offsets]
word_table=0x001C

[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024

[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0158
current_job=0x0288
turn_count=0x0540
states=0x0
souls=0x05fc
labors=0x0618
happiness=0x06a8
squad_ref_id=0x070c

[soul_details]
skills=0x01D4
traits=0x01EC

[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040

[squad_offsets]
id=0x0000
name=0x0004
members=0x0044

[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000

[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000

[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000

[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000

Save it as the following:

v0.34.11.ini

and then put it into the folder navigated to above.
This makes Dwarf Therapist useable, but it still has a tendency to be temperamental.




(This must have been typed out several times in this thread now)
Logged

thistleknot

  • Bay Watcher
  • Escaped Normalized Spreadsheet Berserker
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2707 on: January 12, 2013, 11:27:57 am »

Maklak:

I finally get what your formula is doing
double jobs_left = (29000 - XP) / rate;  // Ignore division by 60.

means treat each job * rate as the # of exp gained.

Interesting concept.

Rowanas

  • Bay Watcher
  • I must be going senile.
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2708 on: January 12, 2013, 11:33:35 am »

I'm getting pretty much to the end of my tether trying to make Dwarf TheRapist read my dwarves. I own a mac, so all of those helpful "34.11 included" versions like the splinterz branch, won't work for me. After searching a while, I found someone asking the same thing, and I've done both. Either way, DT connects to my game, but when I try to read my dwarves, it tells me that my game isn't running, or that I've unloaded the fort. I brought the fort out of my sidebar, just in case that was screwing it up, but it gives me the same message every time and it's driving me nuts. It's like DT is aware that I'm playing, but can't see the actual game. Any help?

This topic is a bit too technical for easy reading so I haven't bothered to read back to the posts from June to see if the situation is any different from when I was first trying to get it to work. If it is, please dont moan.


To get Therapist to work properly with 34.11 on the mac, you will need to manually insert the required memory layout into the program's 'package contents'. To get there, right cilck on the Dwarf Therapist application, click show package contents and navigate to Contents>MacOS>etc>Memory_Layouts>osx

Within that you will see that there haven't been any added to the program since .07
Amending the download would save a lot of people a lot of hassle

I dont know where to find the .11 memory layout online but you can make it yourself by opening textedit and pasting the following into a document

Code: [Select]
[info]
checksum=0x8f421f9c
version_name=v0.34.11
complete=false

[addresses]
translation_vector=0x01636a88
language_vector=0x01636a70
creature_vector=0x015f56ec
dwarf_race_index=0x015dcf80
squad_vector=0x01633600
current_year=0x01fb1f21

[offsets]
word_table=0x001C

[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024

[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0158
current_job=0x0288
turn_count=0x0540
states=0x0
souls=0x05fc
labors=0x0618
happiness=0x06a8
squad_ref_id=0x070c

[soul_details]
skills=0x01D4
traits=0x01EC

[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040

[squad_offsets]
id=0x0000
name=0x0004
members=0x0044

[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000

[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000

[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000

[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000

Save it as the following:

v0.34.11.ini

and then put it into the folder navigated to above.
This makes Dwarf Therapist useable, but it still has a tendency to be temperamental.




(This must have been typed out several times in this thread now)

I'll try that. I did search back to page 162, but when you've got so many pages to read over, it's easier just to ask again :D
Logged
I agree with Urist. Steampunk is like Darth Vader winning Holland's Next Top Model. It would be awesome but not something I'd like in this game.
Unfortunately dying involves the amputation of the entire body from the dwarf.

walberg

  • Bay Watcher
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2709 on: January 12, 2013, 11:50:57 am »

Here's another hopefully simple suggestion (should be much easier to fix than the current optimization/sorting formulas discussion). The optimizer has an "exclude active military" option. How hard would it be to change that to (or add an additional) "exclude squad members" option to avoid having soldiers that just happen to not have active orders at the moment getting included for optimization? That wouldn't be ideal for those who tend to form civilian squads for the sake of uniforms, etc., but for those like me who tend to only use squads for military use, having to clean up a few soldiers every time you optimize takes a bit of extra time. The ability to just exclude them if they're in a squad would be nice to have.
Logged

thistleknot

  • Bay Watcher
  • Escaped Normalized Spreadsheet Berserker
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2710 on: January 12, 2013, 01:14:17 pm »

Here's another hopefully simple suggestion (should be much easier to fix than the current optimization/sorting formulas discussion). The optimizer has an "exclude active military" option. How hard would it be to change that to (or add an additional) "exclude squad members" option to avoid having soldiers that just happen to not have active orders at the moment getting included for optimization? That wouldn't be ideal for those who tend to form civilian squads for the sake of uniforms, etc., but for those like me who tend to only use squads for military use, having to clean up a few soldiers every time you optimize takes a bit of extra time. The ability to just exclude them if they're in a squad would be nice to have.
i concur whole heartedly

splinterz

  • Bay Watcher
    • View Profile
    • Dwarf Therapist Branch
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2711 on: January 12, 2013, 01:50:37 pm »

Here's another hopefully simple suggestion (should be much easier to fix than the current optimization/sorting formulas discussion). The optimizer has an "exclude active military" option. How hard would it be to change that to (or add an additional) "exclude squad members" option to avoid having soldiers that just happen to not have active orders at the moment getting included for optimization? That wouldn't be ideal for those who tend to form civilian squads for the sake of uniforms, etc., but for those like me who tend to only use squads for military use, having to clean up a few soldiers every time you optimize takes a bit of extra time. The ability to just exclude them if they're in a squad would be nice to have.
sure, i'll just add another option so you can exclude squads, active military or both.

Nkosi_SW

  • Bay Watcher
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2712 on: January 12, 2013, 03:14:50 pm »

Quote
Malak, I think you need to pull your head in a bit mate, as we say here in Australia.  Coming in to a thread demanding that the volunteer developer change his code to what you want, questioning why nobody has noticed this obvious bug before (and therefore implying everyone else in the thread is an idiot), and generally using confrontational, aggressive and overbearing language is no way to win friends and influence people.
I know I'm antagonising people and that this is a recurring pattern, no matter the social group. To date, I haven't found a solution to this problem. If I just wrote what I wanted to say, waited for two days, edited it and posted it then, this discussion might have looked differently, but what's done is done. There isn't even much room for "damage control".
No problem mate.  We all do this at one time or another: post in haste and repent at leisure.  ;)

Nice to see the conversation becoming more constructive.  It seems like some real progress is being made now.  I don't have anything much to add on the actual mechanics, as none of this affects me too much the way I use DT, but good luck to all in working through this.
Logged

thistleknot

  • Bay Watcher
  • Escaped Normalized Spreadsheet Berserker
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2713 on: January 12, 2013, 09:08:38 pm »

Maklak,

I think I like your initial formula may work

at 50% learning rate, and 0 XP, it's -1.

Masterwork mod has 50% as it's lowest learning rate for a caste.

So... it should work I think.

If anyone is lower than that, then it's possible to get a number worse than -1, but I think we'll just cap it at that.

Spoiler (click to show/hide)

examples

rates   
1% 50% 100% 150% 200% 500%
0.01 0.5 1 1.5 2 5
Jobs Left/rate   
29k   58k   29k   19.3k 1.45k 5.8k
%   
-99   -1   0   0.33   0.5   0.8
« Last Edit: January 12, 2013, 10:31:54 pm by thistleknot »
Logged

CatkinsFTW

  • Bay Watcher
    • View Profile
Re: Dwarf Therapist (LATEST 0.6.12 5/23/12 see first post)
« Reply #2714 on: January 13, 2013, 01:41:46 pm »

Splintermind, I pulled the latest version a few days ago.  I most liked the ability to adjust the font from the options pages, without editing the QT form code.  Also searching preferences is awesome. 

I made a simple change to add a hotkey for commit,  Ctrl+T. This means that I can turn off the main tool bar and read dwarves with Ctrl+R and write/commit changes with Ctrl+T.

Here is the diff of the code if you want to include it.

Spoiler (click to show/hide)
Logged
Pages: 1 ... 179 180 [181] 182 183 ... 192