Beispiel #1
0
        protected override bool CheckCommodity()
        {
            linEquationContext.TCPELinProgMatrix = new LinEquationsMatrix();
            ILinEqsAlgorithmProvider linEqsAlgorithmProvider = configuration.Get <ILinEqsAlgorithmProvider>();

            LinEqsSetBuilder tcpeLinProgBuilder =
                linEqsAlgorithmProvider.GetLinEquationsSetBuilder(
                    meapContext,
                    tapeSegContext,
                    linEquationContext);

            tcpeLinProgBuilder.CreateTCPEPLinProgEqsSet();
            AddCommodityCheckEquation();

            SparseMatrix         A = linEquationContext.TCPELinProgMatrix.GetLinEqSetSparseMatrix();
            LinEqSetSolverSparse linEqSetSolver = new(A);

            return(linEqSetSolver.IfSolutionExists());
        }
Beispiel #2
0
        public void Step2()
        {
            log.Info("TCPEP optimizer: step2");

            ITPLOptions tplOptions           = configuration.Get <ITPLOptions>();
            uint        linEqSetRunnersCount = tplOptions.LinEqSetRunnersCount;

            Commodity[] commoditiesToCheck = commoditiesSelector.Run(linEqSetRunnersCount);

            if (commoditiesToCheck.Length == 0)
            {
                Finished = true;

                return;
            }

            SortedSet <long>        tConsistPathComms   = new();
            SortedSet <long>        tInconsistPathComms = new();
            List <CommodityChecker> commCheckers        = new();

            ILinEqsAlgorithmProvider linEqsAlgorithmProvider = configuration.Get <ILinEqsAlgorithmProvider>();

            for (long i = 0; i < commoditiesToCheck.Length; i++)
            {
                Commodity commodity = commoditiesToCheck[i];

                commCheckers.Add(
                    linEqsAlgorithmProvider.GetTCPEPCommChecker(
                        meapContext,
                        tapeSegContext,
                        commodity,
                        tConsistPathComms,
                        tInconsistPathComms));
            }

            TPLCollectionRunner <CommodityChecker> commodityCheckerRunner = new
                                                                            (
                commCheckers,
                linEqSetRunnersCount,
                WaitMethod.WaitAll,
                _ => default !
        /// <summary>
        /// Just to compare linear equation set solvers
        /// </summary>
        protected override bool CheckCommodity()
        {
            linEquationContext.TCPELinProgMatrix = new LinEquationsMatrix();
            ILinEqsAlgorithmProvider linEqsAlgorithmProvider = configuration.Get <ILinEqsAlgorithmProvider>();

            LinEqsSetBuilder tcpeLinProgBuilder =
                linEqsAlgorithmProvider.GetLinEquationsSetBuilder(
                    meapContext,
                    tapeSegContext,
                    linEquationContext);

            tcpeLinProgBuilder.CreateTCPEPLinProgEqsSet();
            AddCommodityCheckEquation();

            String linEqSetQuery = linEquationContext.TCPELinProgMatrix.GetLinEqSetQuery();

            tapeSegContext.MathQueryString = linEqSetQuery + "LinearSolve[A,b]";

            MathKernelConnector mathKernelConnector = configuration.Get <MathKernelConnector>();
            String linEqSetOutput = mathKernelConnector.MathKernel.EvaluateToOutputForm(tapeSegContext.MathQueryString, 0);

            return(!linEqSetOutput.Contains(linEqSetStr));
        }