I have a few work items with these features:

WI1, WI2, WI3

which describe these work items. I also know the number of people and how many minutes they spend each to complete a work item. To simplify things, I binned these people into pay bands B1, B2 and B3. So for each workitem I can determine a vector:


Here NOPBx means number of people for band x (please add to this as I can feature engineer more stuff). I can also add the cost of all people who contributed to a work item to establish the ActualCost. This means that I can fit a regression model (hierarchical, random forest etc.) to predict the ActualCost.

ActualCost = f(WI1, WI2, WI3, NOPB1, NOPB2, NOPB3)

The fitted models have quite good predictive performance on unseen data. I would like to use these models to perform some optimisation (prescriptive analytics?) to establish the best team composition to reduce costs. I imagine to use an optimisation algorithm to find vectors like this:

V = {NOPB1=10, NOPB2=4, NOPB3=1}

which minimise the ActualCost given the work type (defined by its features)? This is possible technically but how does the model actually know that, using the above example, 10 people of B1, 4 people of B2 and 1 person of B3 are actually capable of completing a work item?

Has anyone ever done anything similar? Any pointers to help solve the above would be very much appreciated. I understand that this is potentially quite hard but even directional results would be quite useful. Thanks a lot.


The above is a bit simplified. I can also plug in median time spent for each worker of each band etc.


Just came across this which looks relevant:


  • 1
    $\begingroup$ Because the value of a given currency changes over time, the model will be less accurate if only absolute currency units are used. One possible way to mitigate the effect of currency or cost-of-living fluctuations is to use some form of relative indicator such as (worker salary / average national income) which, after modeling, could be converted back into currency units. $\endgroup$ Commented Oct 21, 2018 at 9:45

1 Answer 1


You would need to define constraints $g_i(w_1,w_2,w_3)$ fixing e.g. the minimal and maximal amount of workers in each band, the minimal amount of hours required and so on, for each work item. Then, since your regression function is probably non-linear, non-convex, and so on, you have a non-linear programming problem with constraints, which is typically hard to solve.

There is a vast literature on nonlinear optimization with constraints. But you could try to impose some structure on $f$, e.g. by forcing a simple regression model so that $f$ is easily optimizable.

As to the feature engineering, maybe you could add experience of the workers in band $i$ with work item $j$?

  • $\begingroup$ Thanks. I guess experience could be number of minutes the person in band i has worked on work items of type j in the past? Reg. regression - do you mean forcing the model to be simple even if linear regression assumptions are violated? I guess one could use evolutionary algorithms? $\endgroup$
    – cs0815
    Commented Oct 23, 2018 at 14:01
  • $\begingroup$ Yes time could be the feature. Yes, I meant assuming the model to be simple, although it doesn't have to be linear, only a functional form that is manageable by whatever optimisation algorithm you use, e.g. convex. If you can't do this or choose not to, then evolutionary algorithms are indeed a way of optimising when you don't have gradient information. Or Bayesian optimisation (there are ways to work with constraints), although that may or may not make sense in your situation. $\endgroup$
    – Miguel
    Commented Oct 23, 2018 at 15:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.