A large software company with 4 separate buildings in different states, has offers from 3 different
floppy disk manufacturers to supply their monthly need of new diskettes. To whom should the
contracts be awarded to minimize cost?        
Bids per 1000 diskettes      
  Building 1 Building 2 Building 3 Building 4
Manufacturer 1 $50 $45 $48 $52
Manufacturer 2 $52 $48 $51 $54
Manufacturer 3 $49 $51 $50 $52
Contracts awarded per 1000 diskettes      
  Building 1 Building 2 Building 3 Building 4 Total Available
Manufacturer 1 5 5 5 5 20 25
Manufacturer 2 5 5 5 5 20 30
Manufacturer 3 5 5 5 5 20 25
Total 15 15 15 15  
Required 20 25 15 15    
Manufacturer 1 is only interested in contracts of 15000 diskettes or more.            
Decisions 0 0 0 0  
  0 0 0 0  
  0 0 0 0  
     
Total Cost $3,010          
Problem            
A large software company with 4 different buildings in different states, needs a large supply
of diskettes on a monthly basis in each of those buildings. The company has 3 different offers
from several floppy disk manufacturers. However, Manufacturer 1 is only interested in
contracts of 15,000 diskettes or more. Which offer or combination of offers should the
company accept to minimize cost?        
             
Solution            
On the surface this problem seems to be no different from the one in Award1. However, we
have the problem that the number of diskettes bought from Manufacturer 1 should either be 0
or greater than 15000. This is a frequently occurring constraint and Award2 shows us how to
handle this type of condition. The key is to introduce 4 new binary integer variables that tell us
whether a contract is bought from manufacturer 1 or not, for each building.  
             
1) The variables are the contracts to be awarded, and the binary integer variables as discussed
above. In worksheet Award2 these are given the names Contracts and Contract_decisions.
2) First, we still have the constraints used in Award1:      
  Contracts_given >= Contracts_required      
  Total_contracts <= Contracts_available      
  Contracts >= 0 via the Assume Non-Negative option    
Second, we have the logical constraints for the binary integer variables:  
  Contract_decisions = binary      
The 15000 diskettes constraint is now handled by:      
  Awarded_to_1 <= Maximum_diskettes      
  Awarded_to_1 >= Minimum_diskettes      
3) The objective is still to minimize total cost, defined on this worksheet as Total_Cost.
             
Remarks            
The introduction of binary integer variables often allows us to express the effect of more
complex conditions as seen in this model. It would also be possible to handle other types of
constraints. For example, if Manufacturer 2 only distributes diskettes in multiples of 5000,
we could model this constraint with binary integer variables.