exceloptimizationmodelinglinear-programmingsolver

Blending Model: Oil Production


Oil Blending

An oil company produces three brands of oil: Regular, Multigrade, and Supreme. Each brand of oil is composed of one or more of four crude stocks, each having a different lubrication index. The relevant data concerning the crude stocks are as follows.

+-------------+-------------------+------------------+--------------------------+
| Crude Stock | Lubrication Index | Cost (€/barrell) | Supply per day (barrels) |
+-------------+-------------------+------------------+--------------------------+
| 1           | 20                | 7,10             | 1000                     |
+-------------+-------------------+------------------+--------------------------+
| 2           | 40                | 8,50             | 1100                     |
+-------------+-------------------+------------------+--------------------------+
| 3           | 30                | 7,70             | 1200                     |
+-------------+-------------------+------------------+--------------------------+
| 4           | 55                | 9,00             | 1100                     |
+-------------+-------------------+------------------+--------------------------+  

Each brand of oil must meet a minimum standard for a lubrication index, and each brand thus sells at a different price. The relevant data concerning the three brands of oil are as follows.

+------------+---------------------------+---------------+--------------+
| Brand      | Minimum Lubrication index | Selling price | Daily demand |
+------------+---------------------------+---------------+--------------+
| Regular    | 25                        | 8,50          | 2000         |
+------------+---------------------------+---------------+--------------+
| Multigrade | 35                        | 9,00          | 1500         |
+------------+---------------------------+---------------+--------------+
| Supreme    | 50                        | 10,00         | 750          |
+------------+---------------------------+---------------+--------------+   

Determine an optimal output plan for a single day, assuming that production can be either sold or else stored at negligible cost. The daily demand figures are subject to alternative interpretations. Investigate the following:
(a) The daily demands represent potential sales. In other words, the model should contain demand ceilings (upper limits). What is the optimal profit?
(b) The daily demands are strict obligations. In other words, the model should contain demand constraints that are met precisely. What is the optimal profit?
(c) The daily demands represent minimum sales commitments, but all output can be sold. In other words, the model should permit production to exceed the daily commitments. What is the optimal profit?

QUESTION

I've been able to construct the following model in Excel and solve it via OpenSolver, but I'm only able to integrate the mix for the Regular Oil. I'm trying to work my way through the book Optimization Modeling with Spreadsheets by Kenneth R. Baker but I'm stuck with this exercise. While I could transfer the logic from another blending problem I'm not sure how to construct the model for multiple blendings at once. I modeled the problem as a minimization problem on the cost of the different crude stocks. Using the Lubrication Index data I built the constraint for the R-Lub Index as a linear constraint. So far the answer seems to be right for the Regular Oil. However using this approach I've no idea how to include even the second Multigrade Oil.

+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| Decision Variables |        |        |        |        |  |             |    |      |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
|                    | C1     | C2     | C3     | C4     |  |             |    |      |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| Inputs             | 1000   | 0      | 1000   | 0      |  |             |    |      |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
|                    |        |        |        |        |  |             |    |      |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| Objective Function |        |        |        |        |  | Total       |    |      |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| Cost               | 7,10 € | 8,50 € | 7,70 € | 9,00 € |  | 14.800,00 € |    |      |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
|                    |        |        |        |        |  |             |    |      |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| Constraints        |        |        |        |        |  | LHS         |    | RHS  |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| C1 supply          | 1      |        |        |        |  | 1000        | <= | 1000 |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| C2 supply          |        | 1      |        |        |  | 0           | <= | 1100 |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| C3 supply          |        |        | 1      |        |  | 1000        | <= | 1200 |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| C4 supply          |        |        |        | 1      |  | 0           | <= | 1100 |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| R- Lub Index       | -5     | 15     | 5      | 30     |  | 0           | >= | 0    |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| R- Output          | 1      | 1      | 1      | 1      |  | 2000        | =  | 2000 |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
|                    |        |        |        |        |  |             |    |      |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| Blending Data      |        |        |        |        |  |             |    |      |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+
| R- Lub             | 20     | 40     | 30     | 55     |  | 25          | >= | 25   |
+--------------------+--------+--------+--------+--------+--+-------------+----+------+  

Here is the model with Excel formulars:

+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| Decision Variables |      |     |      |    |  |                                                    |    |      |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
|                    | C1   | C2  | C3   | C4 |  |                                                    |    |      |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| Inputs             | 1000 | 0   | 1000 | 0  |  |                                                    |    |      |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
|                    |      |     |      |    |  |                                                    |    |      |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| Objective Function |      |     |      |    |  | Total                                              |    |      |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| Cost               | 7,1  | 8,5 | 7,7  | 9  |  | =SUMMENPRODUKT(B5:E5;B8:E8)                        |    |      |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
|                    |      |     |      |    |  |                                                    |    |      |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| Constraints        |      |     |      |    |  | LHS                                                |    | RHS  |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| C1 supply          | 1    |     |      |    |  | =SUMMENPRODUKT($B$5:$E$5;B11:E11)                  | <= | 1000 |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| C2 supply          |      | 1   |      |    |  | =SUMMENPRODUKT($B$5:$E$5;B12:E12)                  | <= | 1100 |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| C3 supply          |      |     | 1    |    |  | =SUMMENPRODUKT($B$5:$E$5;B13:E13)                  | <= | 1200 |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| C4 supply          |      |     |      | 1  |  | =SUMMENPRODUKT($B$5:$E$5;B14:E14)                  | <= | 1100 |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| R- Lub Index       | -5   | 15  | 5    | 30 |  | =SUMMENPRODUKT($B$5:$E$5;B15:E15)                  | >= | 0    |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| R- Output          | 1    | 1   | 1    | 1  |  | =SUMMENPRODUKT($B$5:$E$5;B16:E16)                  | =  | 2000 |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
|                    |      |     |      |    |  |                                                    |    |      |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| Blending Data      |      |     |      |    |  |                                                    |    |      |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+
| R- Lub             | 20   | 40  | 30   | 55 |  | =SUMMENPRODUKT($B$5:$E$5;B19:E19)/SUMME($B$5:$E$5) | >= | 25   |
+--------------------+------+-----+------+----+--+----------------------------------------------------+----+------+  

A nudge in the right direction would be a tremendous help.


Solution

  • I think you want your objective to be Profit, which I would define as the sum of sales value - sum of cost.

    To include all blends, develop calculations for Volume produced, Lube Index, Cost, and Value for each blend. Apply constraints for volume of stock used, volume produced, and lube index, and optimize for Profit.

    I put together the model as follows ...

    enter image description here

    1. Columns A through D is the information you provided.
    2. The 10's in G2:J5 are seed values for the stock volumes used in each blend. Solver will manipulate these.
    3. Column K contains the total product volume produced. These will be constrained in different ways, as per your investigation (a), (b), and (c). It is =SUM(G3:J3) filled down.
    4. Column L is the Lube Index for the product. As you noted, it is a linear blend - this is typically not true for blending problems. These values will be constrained in Solver. It is {=SUMPRODUCT(G3:J3,TRANSPOSE($B$2:$B$5))/$K3} filled down. Note that it is a Control-Shift-Enter (CSE) formula, required because of the TRANSPOSE.
    5. Column M is the cost of the stock used to create the product. This is used in the Profit calculation. It is {=SUMPRODUCT(G3:J3,TRANSPOSE($C$2:$C$5))}, filled down. This is also a CSE formula.
    6. Column N is the value of the product produced. This is used in the Profit calculation. It is =K3*C8 filled down.
    7. Row 7 is the total stock volume used to generate all blends. These values will be constrained in Solver. It is =SUM(G3:G5), filled to the right.
    8. The profit calculation is =SUM(N3:N5)-SUM(M3:M5).

    Below is a snap of the Solver dialog box ...

    enter image description here

    It does the following ...

    1. The objective is to maximize profit.
    2. It will do this by manipulating the amount of stock that goes into each blend.
    3. The first four constraints ($G$7 through $J$7) ensure the amount of stock available is not violated.
    4. The next three constraints ($K$3 through $K$5) are for case (a) - make no more than product than there is demand.
    5. The last three constraints ($L$3 through $L$5) make sure the lube index meets the minimum specification.
    6. Not shown - I selected options for GRG Nonlinear and selected "Use Multistart" and deselected "Require Bounds on Variables".

    Below is the result for case (a) ...

    enter image description here

    For case (b), change the constraints on Column K to be "=" instead of "<=". Below is the result ...

    enter image description here

    For case (c), change the constraints on Column K to be ">=". Below is the result ...

    enter image description here