Я не работал над Google или Картами Microsoft или Yahoo прежде, таким образом, я не могу сказать Вам, как они работают.
Однако я действительно проектировал пользовательскую систему оптимизации цепочки поставок для энергетической компании, которая включала планирование и приложение маршрутизации для их парка грузовиков. Однако наши критерии на маршрутизации были намного более определенными для бизнеса, чем, где конструкция или трафик, замедляется или закрытия маршрута.
Мы использовали технику под названием ACO (Оптимизация колонии муравьев), чтобы запланировать и направить грузовики. Эта техника является методом AI, который был применен к проблеме коммивояжера для решения проблем маршрутизации. Прием с ACO должен создать ошибочное вычисление, основанное на известных фактах маршрутизации так, чтобы модель решения графика знала, когда выйти (когда достаточно небольшая ошибка).
можно google ACO или TSP для нахождения больше на этой технике. Я не использовал ни одного из инструментов AI с открытым исходным кодом для этого однако, так не может предложить один (хотя я слышал, что РОЙ был довольно всесторонним).
Ошибка связана с тем, что вы пытаетесь создать экземпляр интерфейса .
Измените свой код на:
List<ListItem> allFaqs = new List<ListItem>();
или
IList<ListItem> allFaqs = new List<ListItem>();
, и он должен скомпилировать.
Очевидно, вам придется изменить остальную часть вашего кода, чтобы она соответствовала требованиям.
Вы можете создать любой конкретный тип, который реализует IList
вот так, так
IList<ListItem> test = new ListItem[5];
IList<ListItem> test = new ObservableCollection<ListItem>(allFaqs);
и так далее, все будет работать.
Ваша проблема в том, что IList - это интерфейс, а не класс. Вы не можете инициализировать интерфейс.
У вас может быть экземпляр интерфейса, но вам нужно инициализировать его классом, который реализует этот интерфейс, например:
IList<string> strings = new List<string>();
Предыдущая строка кода будет работать, но вы будете вам доступны только члены IList вместо полного набора из того класса, который вы инициализируете.
Вам необходимо сделать:
IList<ListItem> allFaqs = new List<ListItem>();
В вашем коде вы пытаетесь инициализировать интерфейс.
IList не является классом; это интерфейс, который могут реализовать классы. Сам интерфейс - это просто контракт между потребителем класса и самим классом. Эта строка кода будет работать:
IList<ListItem> allFaqs = new List<ListItem>();
Это поможет?
IList - это интерфейс, поэтому вы не можете создать его экземпляр. Все виды классов реализуют IList. Одним из таких классов, реализующих IList, является List. Вы можете создать его так:
List<ListItem> allFaqs = new List<ListItem>();
Вы не можете создать экземпляр интерфейса (IList - это интерфейс).
Вам потребуется создать экземпляр, реализующий IList,
например:
IList<ListItem> allFaqs = new List<ListItem>();
Есть и другие типы ILists, но List - хороший вариант для начала.
IList - это интерфейс, а не класс. Если вы хотите инициализировать его, вам необходимо инициализировать его классом, реализующим IList, в зависимости от ваших внутренних потребностей. Обычно IList инициализируется списком.
IList<ListItem> items = new List<ListItem>();
IList
- это интерфейс. Вам необходимо создать экземпляр класса, реализующего интерфейс:
IList<ListItem> allFaqs = new List<ListItem>();
List
реализует IList
, и поэтому может быть назначен переменной. Существуют также другие типы, которые также реализуют IList
.