Пример #1
0
        public void SolutionTest2()
        {
            var matrix = new[]
            {
                new [] { 20.0, 29.0, 6.0 },
                new [] { 23.0, 15.0, 11.0 },
                new [] { 20.0, 16.0, 10.0 },
                new [] { 15.0, 19.0, 9.0 },
                new [] { 24.0, 29.0, 8.0 },
            };

            double[] need = { 150.0, 140.0, 110.0, 230.0, 220.0 };
            double[] have = { 320.0, 280.0, 250.0 };

            double[,] actual = { { 120.0, 0.0, 30.0 }, { 0.0, 140.0, 0.0 }, { 0.0, 110.0, 0.0 }, { 200.0, 30.0, 0.0 }, { 0.0, 0.0, 220.0 } };

            var table = new TransportTable(matrix, have, need);

            var pythonSolver = new PythonSimplexSolver();

            var solution = table.SolveTable(pythonSolver);

            Assert.AreEqual(table.FunctionValue(pythonSolver), 11770);
            Assert.AreEqual(solution.ToArray(), actual);
        }
Пример #2
0
        public void InitTest()
        {
            //Закрытая задча
            var matrix1 = new[]
            {
                new[] { 3.0, 1.0 },
                new[] { 2.0, 6.0 }
            };

            var have1 = new[] { 20.0, 20.0 };
            var need1 = new[] { 30.0, 10.0 };

            var table1 = new TransportTable(matrix1, have1, need1);

            double[,] actMatrix1 = { { 3.0, 1.0 }, { 2.0, 6.0 } };

            Assert.AreEqual(table1.WeightMatrix.ToArray(), actMatrix1);
            Assert.AreEqual(table1.ConsumerNeed.ToArray(), need1);
            Assert.AreEqual(table1.ProviderHave.ToArray(), have1);

            //Открытая задча (нужно меньше, чем есть)
            var matrix2 = new[]
            {
                new[] { 3.0, 1.0 },
                new[] { 2.0, 6.0 }
            };

            var have2 = new[] { 20.0, 20.0 };
            var need2 = new[] { 20.0, 10.0 };

            var table2   = new TransportTable(matrix2, have2, need2);
            var actHave2 = new[] { 20.0, 20.0 };
            var actNeed2 = new[] { 20.0, 10.0, 10 };

            double[,] actMatrix2 = { { 3.0, 1.0 }, { 2.0, 6.0 }, { 0.0, 0.0 } };

            Assert.AreEqual(table2.WeightMatrix.ToArray(), actMatrix2);
            Assert.AreEqual(table2.ConsumerNeed.ToArray(), actNeed2);
            Assert.AreEqual(table2.ProviderHave.ToArray(), actHave2);

            //Открытая задча (нужно больше, чем есть)
            var matrix3 = new[]
            {
                new[] { 3.0, 1.0 },
                new[] { 2.0, 6.0 }
            };

            var have3 = new[] { 20.0, 10.0 };
            var need3 = new[] { 20.0, 20.0 };

            var table3   = new TransportTable(matrix3, have3, need3);
            var actHave3 = new[] { 20.0, 10.0, 10.0 };
            var actNeed3 = new[] { 20.0, 20.0 };

            double[,] actMatrix3 = { { 3.0, 1.0, 7.0 }, { 2.0, 6.0, 7.0 } };

            Assert.AreEqual(table3.WeightMatrix.ToArray(), actMatrix3);
            Assert.AreEqual(table3.ConsumerNeed.ToArray(), actNeed3);
            Assert.AreEqual(table3.ProviderHave.ToArray(), actHave3);
        }
Пример #3
0
        public void SolutionTest1()
        {
            var matrix = new[]
            {
                new [] { 2.0, 3.0, 1.0 },
                new [] { 4.0, 2.0, 5.0 }
            };

            double[] need = { 30.0, 200.0 };
            double[] have = { 20.0, 50.0, 100.0 };

            double[,] actual = { { 0, 0, 30, 0 }, { 20, 50, 70, 60 } };

            var table = new TransportTable(matrix, have, need);

            var solver   = new PythonSimplexSolver();
            var solution = table.SolveTable(solver);

            Assert.AreEqual(table.FunctionValue(solver), 920);
            Assert.AreEqual(solution.ToArray(), actual);
        }
Пример #4
0
        public void SolutionTest3()
        {
            var matrix = new[]
            {
                new [] { 4.0, 4.0, 3.0 },
                new [] { 3.0, 2.0, 4.0 },
            };

            double[] need = { 26.0, 33.0 };
            double[] have = { 22.0, 21.0, 24.0 };

            double[,] actual = { { 2.0, 0.0, 24.0 }, { 12.0, 21.0, 0.0 }, { 8.0, 0.0, 0.0 } };

            var table = new TransportTable(matrix, have, need);

            var pythonSolver = new PythonSimplexSolver();

            var solution = table.SolveTable(pythonSolver);

            Assert.AreEqual(table.FunctionValue(pythonSolver), 158);
            Assert.AreEqual(solution.ToArray(), actual);
        }