Exemplo n.º 1
0
        public void VideoLecture01()
        {
            var lp = new LinearProgram
            {
                M               = 4,
                N               = 2,
                BasicIndices    = new[] { 0, 1, 4, 2, 6 },
                NonBasicIndices = new[] { 0, 3, 5 },
                Coefficients    = new[]
                {
                    new[] { 0.0, 0.0, 0.0 },
                    new[] { 2.0, 2.0 / 3.0, 1.0 / 3.0 },
                    new[] { 2.0, -1.0 / 3.0, -2.0 / 3.0 },
                    new[] { 2.0, 1.0 / 3.0, 2.0 / 3.0 },
                    new[] { 2.0, -2.0 / 3.0, -1.0 / 3.0 }
                },
                ObjectiveCoefficients = new[] { 9.0, 9.0, 9.0 }
            };

            var restorer = new SimpleRestoreObjective();

            restorer.Restore(lp, new[] { 0.0, 1.0, 2.0 }, new[] { 0, 1, 2 });

            lp.ObjectiveCoefficients.ShouldEqual(new[] { 6.0, 4.0 / 3.0, 5.0 / 3.0 }, .000001);
        }
Exemplo n.º 2
0
        public void ShouldRestoreObjective_Vl01()
        {
            var primal = _reader.Read(DictionaryFiles + "vl1.dict");
            var dual   = _mapPrimalToDual.Map(primal);

            var solver = new LinearProgramSolverWeek2(new SimpleAnalyzeEnteringLeavingVariables(), new HackyPivot2());

            solver.Solve(dual);

            var newPrimal = _mapDualToPrimal.Map(dual);

            _restore.Restore(newPrimal, dual.OriginalObjectiveCoefficients, dual.OriginalNonBasicIndices);

            newPrimal.Coefficients[1].ShouldEqual(new[] { 2.0, 2.0 / 3.0, 1.0 / 3.0 }, Tolerance);
            newPrimal.Coefficients[2].ShouldEqual(new[] { 2.0, -1.0 / 3.0, -2.0 / 3.0 }, Tolerance);
            newPrimal.Coefficients[3].ShouldEqual(new[] { 2.0, 1.0 / 3.0, 2.0 / 3.0 }, Tolerance);
            newPrimal.Coefficients[4].ShouldEqual(new[] { 2.0, -2.0 / 3.0, -1.0 / 3.0 }, Tolerance);
            newPrimal.ObjectiveCoefficients.ShouldEqual(new[] { 6, 4.0 / 3.0, 5.0 / 3.0 }, Tolerance);
        }