Пример #1
0
        private CellAddress findNextMinimum(ProblemTable problemTable, ResolvedTable resolvedTable)
        {
            double      minimum        = Double.MaxValue;
            CellAddress minCellAddress = null;

            double[,] prices = problemTable.prices;

            for (int i = 0; i < prices.GetLength(0); i++)
            {
                if (resolvedTable.warehouses[i].getTotal() == 0)
                {
                    continue;
                }

                for (int j = 0; j < prices.GetLength(1); j++)
                {
                    if (resolvedTable.consumers[j].getRequired() == 0)
                    {
                        continue;
                    }

                    if (minimum > prices[i, j] && resolvedTable.consumed[i, j].getUsage() == 0)
                    {
                        minimum        = prices[i, j];
                        minCellAddress = new CellAddress(i, j);
                    }
                }
            }
            if (minCellAddress == null)
            {
                throw new InvalidOperationException("The resolved table is full");
            }
            return(minCellAddress);
        }
Пример #2
0
        ResolvedTable ITransportProblem.calculate(ProblemTable problemTable)
        {
            ResolvedTable resolvedTable = new ResolvedTable(problemTable);

            while (!resolvedTable.isResolved())
            {
                CellAddress minAddress = findNextMinimum(problemTable, resolvedTable);
                int         usage      = Math.Min(
                    resolvedTable.warehouses[minAddress.row].getTotal(),
                    resolvedTable.consumers[minAddress.column].getRequired()
                    );
                resolvedTable.consumed[minAddress.row, minAddress.column].setUsage(usage);
                resolvedTable.warehouses[minAddress.row].resolveByValue(usage);
                resolvedTable.consumers[minAddress.column].resolveByValue(usage);
            }
            return(resolvedTable);
        }
Пример #3
0
        public IDictionary <string, string> Execute(IEnumerable <ResolvedTable> inputTables,
                                                    IEnumerable <ResolvedTable> outputTables, IDictionary <string, string> extendedProperties, IActivityLogger logger)
        {
            logger.Write(System.Diagnostics.TraceEventType.Information, "Start activity");

            modelid    = extendedProperties["modelid"];
            accountKey = extendedProperties["accountKey"];
            baseUri    = extendedProperties["baseuri"];
            logger.Write(System.Diagnostics.TraceEventType.Information, "modelId: {0}; AccountKey:{1}; BaseUri: {2}", modelid, accountKey, baseUri);

            logger.Write(System.Diagnostics.TraceEventType.Information, "Start with Export");
            try
            {
                ResolvedTable inputDataset = datasets.Single(dataset => dataset.Name == activity.Inputs.Single().Name);
                ResolvedTable = datasets.Single(dataset => dataset.Name == activity.Outputs.Single().Name);
                RecommendationsApiWrapper api = new RecommendationsApiWrapper(accountKey, baseUri);
            }
            catch (Exception ex)
            {
                logger.Write(System.Diagnostics.TraceEventType.Error, "Error occurred: {0} -  {1}", ex.Message, ex.InnerException.ToString());
            }
            logger.Write(System.Diagnostics.TraceEventType.Information, "end");
            return(new Dictionary <string, string>());
        }