Hi Beatriz,

I am not sure if I understood the problem correctly, but here is an idea:

Add constraint: (S_i is variable for the supply of region i, D_i is the constant for the demand of region i)
S_i/D_i - S_j/D_j - slack_ij = 0 for all i, j in regions

Include in objective function the minimization of the sum of the slacks with an appropriate coefficient.

I expect to work as you described: " I expect that all regions to be supplied in proportionality to their demand".

Hi Michel,

From what I understood, what you're referring to as "slack" is what I mean by unfulfilled quantity and I'm adding it to the cost minimization formula. Actually, I'm multiplying this "slack" by a cost of no fulfillment. However, as this cost is the same for all 3 regions, it doesn't matter if it serves only 2 regions completely, or all 3 regions partially. For example:

Supply: 300 units
Unfulfillment cost: 10 \$/unit

 Scenario 1 Demand Fulfilment Slack Cost Region 1 100 100 0 0 Region 2 200 200 0 0 Region 3 300 0 300 3000 Sum 600 300 300 3000

 Fair Share Scenario Demand Fair-Share ratio Fulfilment Slack Cost Region 1 100 17% 50 50 500 Region 2 200 33% 100 100 1000 Region 3 300 50% 150 150 1500 Sum 600 100% 300 300 3000
• Gurobi Staff

Implementing a fair-share allocation in your optimization problem, especially when dealing with cost minimization and equal weights, can indeed be challenging. The method you've described attempts to ensure fair distribution by splitting demand into slices and prioritizing them differently, but as you've observed, it comes with drawbacks. Let's explore an alternative approach that might help achieve your goals more effectively.

### Alternative Approach: Proportional Allocation

Instead of slicing the demand and applying decreasing weights, consider directly incorporating a fair-share or proportional allocation constraint into your model. This method aims to enforce that each region receives a share of the supply proportional to its demand, subject to the total available supply.

The key idea here is to calculate the total available supply and the total demand across all regions. Then, for each region, you enforce that the ratio of the supply received to the total supply available is as close as possible to the ratio of the region's demand to the total demand.

#### Step 1: Define Total Supply and Demand

Let's calculate the total supply Stotal and total demand Dtotal:

• Stotal=∑i∈DCsupplyi
• Dtotal=∑j∈regiondemandj

#### Step 2: Proportional Allocation Constraints

For each region j, you want the proportion of the total supply it receives (Xj/Stotal) to be as close as possible to its proportion of the total demand (demandj/Dtotal). This can be expressed as a constraint for each region. However, achieving exact proportions might not always be feasible, especially if the total supply is less than the total demand. In such cases, you can relax the constraints to aim for proportionality within the limits of available supply.

#### Implementation

To integrate this into your model, you could add constraints that minimize the deviation from these proportional targets. This would involve introducing new decision variables to represent the proportion of supply allocated to each region and setting the objective to minimize the sum of absolute deviations from the target proportions.

Here is a conceptual overview of how this could be formulated:

1. Define Proportion Variables: For each region j, define a variable that represents the proportion of the total supply allocated to that region.

2. Add Proportional Allocation Constraints: For each region , add constraints to ensure is as close as possible to demandj/Dtotal, within the limits of the available supply.

3. Objective Function: Adjust the objective function to minimize the sum of the absolute deviations from the target proportions, alongside your existing cost minimization goals. This may involve a trade-off parameter to balance cost minimization with fair distribution.

This approach requires careful formulation to ensure the model remains linear (if that's a requirement) and might involve additional decision variables and constraints to capture the proportional allocation effectively. It's also essential to consider how this method aligns with your overall objectives and constraints.

Hi Beatriz,

The slack variable here is a new variable that means the difference between the supply/demand proportion of region I and J.

Add constraint: (S_i is variable for the supply of region i, D_i is the constant for the demand of region i)S_i/D_i - S_j/D_j + slack_ij <= 0 for all i, j in regions

 Scenario 1 Demand Fulfilment Slack Cost Region 1 100 100 0 0 Region 2 200 200 0 0 Region 3 300 0 300 3000 Sum 600 300 300 3000
0/300 - (100/100) + Slack_3,1 <= 0   -> Slack_3,1 = 10/300 - (200/200) + Slack_3,1 <= 0   -> Slack_3,2 = 1All other slacks = 0. The sum of all slacks will be 2, which you will penalize in the objective function.

 Fair Share Scenario Demand Fair-Share ratio Fulfilment Slack Cost Region 1 100 17% 50 50 500 Region 2 200 33% 100 100 1000 Region 3 300 50% 150 150 1500 Sum 600 100% 300 300 3000
Here, all slacks are zero. Example:(150/300) - (100/200) + Slack_3,2 <= 0   -> Slack_3,2 = 0

Hi Michel,

Thanks for your reply... I see what you mean, by applying the rationale it worked.

The only thing is that in my current model I have discrete variables which are the lot sizes for transfer. From what I understood and applied from your suggestion, the slack is forced to be zero, but when I have lot sizes the Fulfilment (discrete) will not necessarily be equal to the Supply*Fair-Share ratio (continuous) and the slack may even be greater than zero.

To solve this, I created two variables ('Slack 1' and 'Slack 2') that cannot be negative. As a constraint, the difference between these variables (Slack 1 - Slack 2) must be equal to the Fulfilment - Supply*Fair-Share ratio. In addition, the sum of the variables is part of the objective function, so that the Slack should be as small as possible.