Skip to content

Warm start is not functional yet #15

Description

@jkhamphousone

Providing a warm start with a set of ordered hubs (which implies a ring) is not functional yet.
See benders_rrsp.jl:

 if length(pars.warm_start) > 0
        # TODO: warm start currently in developpement
        warm_hubs = parse.(Int, split(pars.warm_start, "-")[1:end-1])
        @show warm_hubs
        y_warm = zeros(Bool, n)
        for i in V
            if i in warm_hubs
                set_start_value(y[i], true)
                y_warm[i] = true
            else
                set_start_value(y[i], false)
            end
        end
        x_warm = zeros(Bool, n, n)
        x′_warm = zeros(Bool, n, n)
        for i in V
            for j ∈ i+1:n
                set_start_value(x[i, j], false)
            end
        end
        for i ∈ 1:length(warm_hubs)-1
            set_start_value(x[mima(warm_hubs[i], warm_hubs[i+1])...], true)
            x_warm[mima(warm_hubs[i], warm_hubs[i+1])...] = true
        end
        for i ∈ 2:length(warm_hubs)-1
            if warm_hubs[i] in tildeV
                x′_warm[mima(warm_hubs[i-1], warm_hubs[i+1])...] = true
            end
        end
        if warm_hubs[end] in tildeV
            x′_warm[mima(warm_hubs[end-1], 1)...] = true
        end
        set_start_value(x[1, warm_hubs[end]], true)
        x_warm[1, warm_hubs[end]] = true
        set_start_value(λ, 0)
        set_start_value(offset, bar_offset)

    end

Ideally, the user could provide the following parameters and the ring as a warm-start:

	pars = SolverParameters(
		solve_mod = BranchBendersCut(),     # ILP, or BranchBendersCut
		F = 7,                              # total failing time F in days per year, see [`PhD manuscript`](https://theses.hal.science/tel-04319443)
		sp_solve = Poly(),
		o_i = 0,                            # opening costs
		s_ij = Euclidian(),                 # star costs
		r_ij = Euclidian(),                 # ring costs
		alpha = 3,                          # See [Labbé et al., 2004](ttps://doi.org/10.1002/net.10114)
		backup_factor = 0.01,               # backup_factor c'=0.01c and d'=0.01c
		writeresults = false,               # output results locally, html or no output ""
		plotting = false,                   # plot_results (to debug)
		tildeV = 100,                       # uncertain nodes set
                warmstart = [1,2,3,4,5,6,7,8,9,10]             # TODO: code it, here, a warm start of the 10 first nodes as a ring
		log_level = 1,                      # console output log_level
		redirect_stdio = false,             # redirecting_stdio to output file
		use_blossom = false,                # use blossom inequalities (not functional yet)
		ucstrat = true,                     # use user cut
	)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions