/// <summary>
        /// Creates new instance of CapacitatedVehicleRoutingProblem class
        /// </summary>
        /// <param name="name">problem name</param>
        /// <param name="comment">comment on problem from the author</param>
        /// <param name="nodeProvider">provider of nodes</param>
        /// <param name="edgeProvider">provider of edges</param>
        /// <param name="edgeWeightsProvider">provider of edge weights</param>
        /// <param name="fixedEdgesProvider">provider of fixed edges</param>
        /// <param name="depotsProvider">provider of depot nodes</param>
        /// <param name="demandProvider">provider of demands on nodes</param>
        public CapacitatedVehicleRoutingProblem(string name,
                                                string comment,
                                                INodeProvider nodeProvider,
                                                IEdgeProvider edgeProvider,
                                                IEdgeWeightsProvider edgeWeightsProvider,
                                                IFixedEdgesProvider fixedEdgesProvider,
                                                IDepotsProvider depotsProvider,
                                                IDemandProvider demandProvider)
            : base(name, comment, ProblemType.CVRP, nodeProvider, edgeProvider, edgeWeightsProvider, fixedEdgesProvider)
        {
            if (depotsProvider == null)
            {
                throw new ArgumentNullException("depotsProvider");
            }

            if (demandProvider == null)
            {
                throw new ArgumentNullException("demandProvider");
            }

            DepotsProvider = depotsProvider;
            DemandProvider = demandProvider;
        }
        /// <summary>
        /// Creates new instance of CapacitatedVehicleRoutingProblem class
        /// </summary>
        /// <param name="name">problem name</param>
        /// <param name="comment">comment on problem from the author</param>
        /// <param name="nodeProvider">provider of nodes</param>
        /// <param name="edgeProvider">provider of edges</param>
        /// <param name="edgeWeightsProvider">provider of edge weights</param>
        /// <param name="fixedEdgesProvider">provider of fixed edges</param>
        /// <param name="depotsProvider">provider of depot nodes</param>
        /// <param name="demandProvider">provider of demands on nodes</param>
        public CapacitatedVehicleRoutingProblem(string name,
                                                string comment,
                                                INodeProvider nodeProvider,
                                                IEdgeProvider edgeProvider,
                                                IEdgeWeightsProvider edgeWeightsProvider,
                                                IFixedEdgesProvider fixedEdgesProvider,
                                                IDepotsProvider depotsProvider,
                                                IDemandProvider demandProvider)
            : base(name, comment, ProblemType.CVRP, nodeProvider, edgeProvider, edgeWeightsProvider, fixedEdgesProvider)
        {
            if (depotsProvider == null)
            {
                throw new ArgumentNullException("depotsProvider");
            }

            if (demandProvider == null)
            {
                throw new ArgumentNullException("demandProvider");
            }

            DepotsProvider = depotsProvider;
            DemandProvider = demandProvider;
        }
 public DemandController(IDemandProvider demandProvider)
 {
     _demandProvider = demandProvider;
 }