Пример #1
0
class Simulation:
    def __init__(self, nodes):
        self.nodes = nodes
        self.node_manager = NodeManager()
        for node in self.nodes:
            self.node_manager.add_node(node)
            self.node_manager.update_node(node)
        self.node_manager.commit(time.time())
        self.steps = 0

    def step(self, action):
        self.steps += 1
        for index, node in enumerate(self.nodes):
            new_energy_value = node.update(action)
            if (new_energy_value is not None):
                self.node_manager.update_node(node)
        self.node_manager.commit(time.time())

        new_state = self.get_state()
        reward = self.calculate_reward(new_state, action)
        done = self.isDone()
        return new_state, reward, done

    def calculate_reward(self, energy_values, action):
        nulls = energy_values.isnull().sum(axis=1).iloc[0]
        # energy_too_low = self.get_state().mean(axis=1).iloc[0] < 1.8
        for value in energy_values:
            if energy_values[value].iloc[0] < 1.8:
                return -100

        if (nulls > 0):
            reward = -100
        elif (action is Action.CHARGE):
            reward = -1
        elif (action is Action.GATHER):
            reward = 1
        else:
            reward = 0
        return reward

    def get_state(self):
        return self.node_manager.get_most_recent_state().fillna(value=0)

    def isDone(self):
        energy_too_low = (self.get_state().mean(axis=1).iloc[0] < 1.8)
        return energy_too_low or (self.steps > 10000)


# nodes = []
# nodes.append(Node(1, 5))
# nodes.append(Node(2, 5))
# nodes.append(Node(3, 5))
# sim = Simulation(nodes)
# actions = [Action.CHARGE, Action.GATHER, Action.GATHER]
# new_state, reward, done = sim.step(actions)
Пример #2
0
#!/usr/bin/python
import os
import cgi, cgitb
from node_manager import NodeManager
from cgi_utils import send_response

form = cgi.FieldStorage()

node_id = form.getvalue('node_id')
node_name = form.getvalue('node_name')

nm = NodeManager()
nm.add_node(node_id, node_name)
send_response({}, 0)
Пример #3
0
from node_manager import NodeManager, Node
import time

manager = NodeManager()

node1 = Node(1, 5)
node2 = Node(2, 5)

print("Add nodes")
manager.add_node(node1)
manager.add_node(node2)

print(manager.history)

node1.energy_level = 2

print("Update the energy value of a node")
manager.update_node(node1)
manager.commit(time.time())

print(manager.history)

print("Check if node 1 is in the system")
print(manager.node_is_in_system(node1.node_id))
print("Check if node with id 3 is in the system")
print(manager.node_is_in_system(3))


Пример #4
0
#!/usr/bin/python
import os
import cgi, cgitb 
from node_manager import NodeManager
from cgi_utils import send_response

form = cgi.FieldStorage() 

node_id = form.getvalue('node_id')
node_name = form.getvalue('node_name')

nm = NodeManager()
nm.add_node(node_id, node_name)
send_response({}, 0)