Example #1
0
def Baseline(user, G, ener, KE, edgeuser):
    if ener == 0:
        return 99999, 0
    else:
        u = user  # 对应任务的user
        b = u.coonect  # 对应任务的bs
        c = b.coonect  # 对应任务的cloud

        for i in range(len(G) - 2):
            where = np.random.randint(0, 3)  # 随机位置 0-user   1-bs   2-cloud
            how = np.random.choice([100, 200, 300, 400], 4)  # 随机分配能量
            if where == 0:  # 判断在哪执行
                time = u.Calculation(G.node[i + 1], how[i])
            elif where == 1:
                time = b.Calculation(G.node[i + 1], edgeuser) + b.Transmission(
                    G.node[i + 1], how[i] / 2)
            else:
                time = c.Calculation(G.node[i + 1]) + c.Transmission(
                    G.node[i + 1], how[i] / 2)
            # 将计算时间加为边的权值
            if (ener - how[i]) < ener * (1 - KE):
                time = Baseline(user, G, ener, KE, edgeuser)
                return time
            for j in G.neighbors(i + 1):
                G.add_weighted_edges_from([(i + 1, j, time)])
        time = math.ceil(findmax(G, len(G) - 1))
        return time
Example #2
0
def Brute(user, H, ener, KE, edgeuser):
    if ener == 0:
        return 99999, 0
    else:
        u = user  # 对应任务的user
        b = u.coonect  # 对应任务的bs
        c = b.coonect  # 对应任务的cloud
        Min = 99999  # 最小值
        brute_force = list(product(np.arange(12).tolist(), repeat=len(H) - 2))
        for i in range(len(brute_force)):  # 穷举所有情况
            e = ener
            t1 = i % 12
            t2 = int(i / 12) % 12
            t3 = int(int(i / 12) / 12) % 12
            t4 = int(int(int(i / 12) / 12) / 12) % 12
            T = [t4, t3, t2, t1]
            for task in range(len(T)):  # 穷举任务
                if T[task] in range(0, 4):  # 在本地处理
                    time = u.Calculation(H.node[task + 1], 100 * (T[task] + 1))
                    for j in H.neighbors(task + 1):  # 将计算时间加为边的权值
                        H.add_weighted_edges_from([(task + 1, j, time)])
                    e = e - 100 * (T[task] + 1)
                elif T[task] in range(4, 8):
                    time = b.Calculation(
                        H.node[task + 1], edgeuser) + b.Transmission(
                            H.node[task + 1], 50 * (T[task] - 3))
                    for j in H.neighbors(task + 1):  # 将计算时间加为边的权值
                        H.add_weighted_edges_from([(task + 1, j, time)])
                    e = e - 50 * (T[task] - 3)
                else:
                    time = c.Calculation(H.node[task + 1]) + c.Transmission(
                        H.node[task + 1], 50 * (T[task] - 7))
                    for j in H.neighbors(task + 1):  # 将计算时间加为边的权值
                        H.add_weighted_edges_from([(task + 1, j, time)])
                    e = e - 50 * (T[task] - 7)
            time = math.ceil(findmax(H, len(H) - 1))
            if Min > time and e > ener * (1 - KE):
                Min = time
        return Min
m = gb.Model('orion')


# CREATE THE VARIABLES
# Power production from each unit
genprod = {}
for t in time:
    for g in unitind:
        genprod[t, g] = m.addVar(ub=gendata['capacity'][g],
                                 name='Power_production_at_time_{0}_of_unit_{1}_in_country_{2}'.format(t, g, gendata['region'][g]))

# Load Shedding in each country
loadshed = {}
for t in time:
    for n in nodes:
        loadshed[t, n] = m.addVar(ub=findmax(n, t),
                                  name='Loadshed_at_time_{0}_in_country_{1}'.format(t, n))

# Flow over the lines (power actually flowing over a specific line, gives an
# information about where the power is going to)
flow = {}
for t in time:
    for l in lines:
        flow[t, l] = m.addVar(lb=-lineinfo[l]['linecapacity'],
                              ub=lineinfo[l]['linecapacity'],
                              name='flow_at_time_{0}_in_line_{1}'.format(t, l))

# Sun Production
solarprod = {}
for t in time:
    for n in nodes:
# CREATE THE VARIABLES
# Power production from each unit
genprod = {}
for t in time:
    for g in unitind:
        genprod[t, g] = m.addVar(
            ub=gendata["capacity"][g],
            name="Power_production_at_time_{0}_of_unit_{1}_in_country_{2}".format(t, g, gendata["region"][g]),
        )

# Load Shedding in each country
loadshed = {}
for t in time:
    for n in nodes:
        loadshed[t, n] = m.addVar(ub=findmax(n, t), name="Loadshed_at_time_{0}_in_country_{1}".format(t, n))

# Flow over the lines (power actually flowing over a specific line, gives an
# information about where the power is going to)
flow = {}
for t in time:
    for l in lines:
        flow[t, l] = m.addVar(
            lb=-lineinfo[l]["linecapacity"],
            ub=lineinfo[l]["linecapacity"],
            name="flow_at_time_{0}_in_line_{1}".format(t, l),
        )

# Sun Production
solarprod = {}
for t in time:
Example #5
0
import findmax
print findmax.findmax("numberssmall3.txt",
                      2)  #findmax.findmax("numbers.txt", 4)
Example #6
0
import findmax
print findmax.findmax("numberssmall3.txt", 2) #findmax.findmax("numbers.txt", 4)
# Power production from each unit
genprod = {}
for t in time:
    for g in unitind:
        genprod[t, g] = m.addVar(
            ub=gendata['capacity'][g],
            name='Power_production_at_time_{0}_of_unit_{1}_in_country_{2}'.
            format(t, g, gendata['region'][g]))

# Load Shedding in each country
loadshed = {}
for t in time:
    for n in nodes:
        loadshed[t, n] = m.addVar(
            ub=findmax(n, t),
            name='Loadshed_at_time_{0}_in_country_{1}'.format(t, n))

# Flow over the lines (power actually flowing over a specific line, gives an
# information about where the power is going to)
flow = {}
for t in time:
    for l in lines:
        flow[t, l] = m.addVar(
            lb=-lineinfo[l]['linecapacity'],
            ub=lineinfo[l]['linecapacity'],
            name='flow_at_time_{0}_in_line_{1}'.format(t, l))

# Sun Production
solarprod = {}
for t in time: