I managed solving that problem even when there's more than one skill
involved, but now my hard constraint of worktime breaks if I add more
worktime than the sum of engineers worktime.
(8) is the worktime, my workorders all have a worktime of 4 hours, so, I
got 32 available hours and 32 hours of workorders to be assigned right?
When I stick to this plan, it works:
----Compilation Result----
Solved distribution with 8 work orders and 4 engineers:
ID: 104[Skills: (1002) ABC 2] - Qwert(8)[Skills: (1002) ABC 2]
ID: 103[Skills: (1003) ABC 3] - Trewq(8)[Skills: (1003) ABC 3]
ID: 105[Skills: (1004) ABC 4] - Lkjhg(8)[Skills: (1004) ABC 4]
ID: 102[Skills: (1002) ABC 2] - Qwert(8)[Skills: (1002) ABC 2]
ID: 101[Skills: (1001) ABC 1] - Poiuy(8)[Skills: (1001) ABC 1]
ID: 107[Skills: (1004) ABC 4] - Lkjhg(8)[Skills: (1004) ABC 4]
ID: 106[Skills: (1001) ABC 1] - Poiuy(8)[Skills: (1001) ABC 1]
ID: 108[Skills: (1003) ABC 3] - Trewq(8)[Skills: (1003) ABC 3]
---------------
So, if I add another worktime with 4 hours, it messes everything, this is
the outcome:
Solved distribution with 9 work orders and 4 engineers:
ID: 104[Skills: (1002) ABC 2] - Qwert(8)[Skills: (1002) ABC 2]
ID: 103[Skills: (1003) ABC 3] - Trewq(8)[Skills: (1003) ABC 3]
ID: 105[Skills: (1004) ABC 4] - Lkjhg(8)[Skills: (1004) ABC 4]
ID: 102[Skills: (1002) ABC 2] - Qwert(8)[Skills: (1002) ABC 2]
ID: 101[Skills: (1001) ABC 1] - Poiuy(8)[Skills: (1001) ABC 1]
ID: 107[Skills: (1004) ABC 4] - Lkjhg(8)[Skills: (1004) ABC 4]
ID: 106[Skills: (1001) ABC 1] - Poiuy(8)[Skills: (1001) ABC 1]
ID: 108[Skills: (1003) ABC 3] - Trewq(8)[Skills: (1003) ABC 3]
ID: 109[Skills: (1003) ABC 3] - Trewq(8)[Skills: (1003) ABC 3]
------------
to be precise, i don't know if it is because of worktime or skill
2013/2/19 André Fróes <arfmoraes(a)gmail.com>
Just one correction, it is sorting correctly when there's one
workorder
with a skill, if there's another workorder with same skill, it doesn't sort
that workorder to that skill.
This is what is happening:
Workorder skill ABC1 ------------ Engineer skill ABC1
Workorder skill ABC2 ------------ Engineer skill ABC2
Workorder skill ABC1 ------------ Engineer skill ABC2
but if there's only one workorder with one skill it works:
Workorder skill ABC1 ------------ Engineer skill ABC1
Workorder skill ABC2 ------------ Engineer skill ABC2
Workorder skill ABC3 ------------ Engineer skill ABC3
so, from the second workorder on, with a repeated required skill, it
doesn't sort properly
2013/2/19 André Fróes <arfmoraes(a)gmail.com>
> Hello, since i'm not moving a step from where I am at dsl rule, I'm
> trying to do it with SimpleScoreCalculator, but the same is happening.
>
> ------------
> public HardAndSoftScore calculateScore(Distributor distributor) {
> int hardScore = 0;
> int softScore = 0;
> for (Engineer e : distributor.getEngineerList()){
> long skill = e.getSkillEngineerList().get(0).getSkill().getId();
> int requiredWorktime = 0;
> long requiredSkill = 0l;
> for (WorkOrder o : distributor.getWorkOrderList()){
> if (e.equals(o.getEngineer())){
> requiredWorktime += o.getRequiredWorktime();
> requiredSkill = o.getRequiredSkills().get(0).getSkill().getId();
> }
> }
> int engineerAvailableTime = e.getWorktime() - requiredWorktime;
> if (engineerAvailableTime < 0 ){
> hardScore += engineerAvailableTime;
> }
> if (requiredSkill == skill){
> softScore += requiredSkill;
> }
> }
> return DefaultHardAndSoftScore.valueOf(hardScore, softScore);
> }
> ------------
>
> wouldn't that have to fit since i'm comparing the 1st attribute of each
> skill list from engineers and workorders? And how can I weight which
> engineer would be better to a determined workorder if the workorder have
> more skills and so does the engineer?
>