public BasicTabuStageParams(Solution solution,
            double initialAlpha,
            int beta,
            int p,
            int q,
            int minTheta,
            int maxTheta,
            int maxSteps) {
        super(maxSteps, minTheta, maxTheta);
        if (solution == null) {
            throw new IllegalArgumentException("'solution' is null");
        }
        this.solution = solution;
        if (initialAlpha <= 0) {
            throw new IllegalArgumentException("'alpha' <= 0");
        }
        alpha = initialAlpha;
        if (beta <= 0) {
            throw new IllegalArgumentException("'beta' <= 0");
        }
        BETA = beta;
        if (p <= 0) {
            throw new IllegalArgumentException("'p' <= 0");
        }
        P = p;
        if (q <= 0) {
            throw new IllegalArgumentException("'q' <= 0");
        }
        Q = q;
        if (maxSteps <= 0) {
            throw new IllegalArgumentException("'max steps' <= 0");
        }
        noFeasTransStreak = 0;
        feasible = solution.isFeasible();
    }