示例#1
0
    else:
        TS = m.addConstrs(inflow_now[i] + inflow_past[i] == 0
                          for i in range(4))
        m.add_continuous_uncertainty(
            uncertainty=sampler(t - 1),
            locations=([(TS[i], inflow_past[i])
                        for i in range(4)] + [TS[i] for i in range(4)]),
        )
    if t < T / 2:
        z = m.addVars(4, vtype='B')
        m.addConstrs(hydro[i] >= z[i] * hydro_['UB'][:4][i] / 2
                     for i in range(4))
        m.addConstrs(thermal_sum[i] >= (1 - z[i]) * thermal_mid_level[i]
                     for i in range(4))

HydroThermal.discretize(n_samples=100, random_state=seed)
if solver == 'Extensive':
    HT_extensive = Extensive(HydroThermal)
    HT_extensive.solve(outputFlag=0, TimeLimit=time_limit)
    print('lower bound', HT_extensive.objBound)
    print('upper bound', HT_extensive.objVal)
    print('total time', HT_extensive.total_time)
    print('gap', HT_extensive.MIPGap)
if solver == 'SDDiP':
    HydroThermal.binarize(bin_stage=T)
    HT_sddp = SDDiP(HydroThermal)
    HT_sddp.solve(
        logFile=0,
        logToConsole=0,
        cuts=[cut],
        n_processes=1,
示例#2
0
                      for i in I for j in J)
         # capacity constraint
         m.addConstrs(
             gurobipy.quicksum(B_now[(i, j)] - C_now[(i, j)] for i in I
                               for j in J
                               if l in i and j.startswith(k)) <= R[k]
             for k in K for l in L)
         m.addConstrs(
             (b[(i, j)] <= 0 for i in I for j in J),
             uncertainty_dependent=[
                 6 * i + j for i in range(len(I)) for j in range(len(J))
             ])
 start_mca = time.time()
 markovian = airline.discretize(
     method='SA',
     n_Markov_states=n_Markov_states,
     n_sample_paths=n_sample_paths,
     int_flag=1,
 )
 time_mca = time.time() - start_mca
 mca['model'].append(idx)
 mca['iter_MCA'].append(n_sample_paths)
 mca['time'].append(time_mca)
 for t in range(1, 15):
     mca[t].append(markovian.n_Markov_states[t - 1])
 # comparison visually of the true process and its Markov chain approximation
 if idx == 2:
     simulation = markovian.simulate(1000)
     true = demand_sampler(numpy.random.RandomState(0), 1000)
     fig_mca, ax_mca = plt.subplots(6,
                                    2,
                                    figsize=(10, 10),