How to Solve a simple Linear Programming Problem via MS SQL Server?

DigNo Ape
2 min readMar 3, 2023

--

Purpose: Instead of using MS Solver or other optimization tool, we are going to build a process to solve LP problem via MS SQL Server.

Steps:

1. Let’s pick an example for our model

Max Z = 5 * X + 5 * Y
s.t. X <= 5
Y <= 6
2 * X + 3 * Y <= 18
X >= 0, Y >=0

2. Create a table called [Optimization].[Iteration_Table] to store data of each iteration.

CREATE TABLE [Optimization].[Iteration_Table](
[Iteration] int NULL,
[X] INT,
[Y] INT,
[Result] float);

3. Declare variables and set initial values for them.

DECLARE @X INT;
DECLARE @Y INT;
DECLARE @iteration INT;
DECLARE @Max int;
Set @iteration = 1;
Set @X = 0;
Set @Y = 0;
Set @Max = 0;

4. Create while loop to test which combination of X and Y can reach the maximum value. At the same time, if they don’t meet the constraints we defined at point 1, the iteration won’t be recorded and inserted into table [Optimization].[Iteration_Table].

while (@X <= 100)
begin
while (@Y <= 100)
begin
IF @X <= 5 AND @Y <=6 AND 2*@X + 3*@Y <= 18
Insert into [Optimization].[Iteration_Table]
Select @iteration, @X, @Y, 3*@X + 5*@Y;
ELSE GOTO Branch_End;

Set @iteration = @iteration + 1;
IF 3*@X + 5*@Y >= @Max
Set @Max = 3*@X + 5*@Y;
ELSE GOTO Branch_End;

Branch_End:
Set @Y = @Y + 1
END
Set @Y = 0;
Set @X = @X + 1;
end

5. When the loop ends (try all combination of X and Y), you can see what max value is and each iteration we record (insert) in the table [Optimization].[Iteration_Table].

Select @Max as [Max];
SELECT * FROM [Optimization].[Iteration_Table];

SELECT * FROM [Optimization].[Iteration_Table]
Where [Result] > = @Max;

6. You will find that we only took 30 iterations to finish it. It is because of the first two constraints. The process will only test X between 0 and 5 and Y between 0 and 6 (Total: 5 * 6). As a result, you can take your constraints into consideration before setting up loop function to make your code and query more efficient.

Thanks! Enjoy it :)

--

--

DigNo Ape
DigNo Ape

Written by DigNo Ape

我們秉持著從原人進化的精神,不斷追求智慧的累積和工具的運用來提升生產力。我們相信,每一個成員都擁有無限的潛力,透過學習和實踐,不斷成長和進步。

No responses yet