@Override
	public Knapsack executeOnce(Knapsack knapsack) {
		int neighbours = generateRandomNumberOfNeighbours();
		Knapsack best = null;
		
		for (int i = 0; i < neighbours; i++) {
			Knapsack candidate = generateNeighbour(knapsack);
			
			if (!isInTabuList(candidate)) {
				if (best == null) {
					best = candidate;
				} else if (candidate.compareWith(knapsack) >= 0) {
					best = candidate;
				}
			}
		}
			
		if (best != null) {
			addInTabuList(best);
			return best;
		} else {
			return knapsack;
		}
	}