A computing device configured for allocating products to licenses is described. The computing device includes a processor and instructions stored in memory that is in electronic communication with the processor. The computing device obtains license data that identifies a plurality of licenses. The computing device also obtains product data that identifies a plurality of products. The computing device determines a degree of constraint for each of the plurality of products. The computing device also allocates at least one of the plurality of products to at least one of the plurality of licenses based on the degree of constraint. The computing device further performs an operation based on the allocation.