suggest#

Types for auto-assignment. You describe each requirement instance as a Slot: a scheduled leaf task, the resources allowed to fill it, and the assignment that fills it now, if any. You pass the slots and SuggestOptions to Project.SuggestAssignments. The options pick which slot categories to work on (AssignTarget), which assignments stay fixed, the cost of each extra person and the number of rebalance passes.

The call returns a SuggestResult. It holds a proposal as SchedulingChanges that you commit with Project.Apply, plus a step log (SuggestStep with its StepCost), the slots left unfilled or invalid, and scores for the baseline (AssignTotal) and the proposal (SuggestProposal). The project itself doesn't change until you apply.

Roster, returned by Project.Roster, lists the scheduled leaf tasks, resources and active assignments (RosterAssignment) of the accepted state. Use it when you build slots with your own code. To build slots from skills and requirements instead, use SkillLayer.Slots from the Plen.Assign package.

StepCost and AssignTotal are record struct values and AssignTarget is an enum. The other types are sealed classes. Every type here is in the Plen namespace. For how picks are made and how to read the proposal, see Suggesting assignments.

  • RosterSkill-free inventory of a solved project's scheduled leaf tasks, resources and active assignments
  • SlotOne requirement instance on one task, with the resources eligible to fill it, scored by Project.SuggestAssignments
  • SuggestOptionsOptions for Project.SuggestAssignments - baseline guard, targeted slot categories, fixed assignments, new-person penalty, scoring stage, passes and cleared reference
  • SuggestResultThe proposal from Project.SuggestAssignments - net changes, step log, unfilled and invalid slots, and scores