# Agents in the network¶

The Agent class is meant to represent the local computing units that collaborate in the network in order to solve some specific problem.

Agents are instantiated by defining their in/out-neighbors and the weights they assign their neighbors. For example, consider the following network

Then, agent 0 is defined as:

from disropt.agents import Agent

agent = Agent(in_neighbors=[1,2],
out_neighbors=[2],
weights=[0.3, 0.2])


## Local data of an optimization problem¶

Assigning a local optimization problem to an agent is done via the set_problem method, which modifies the problem attribute of the agent.

Assume that the variable problem contains the local problem data, according to the procedure described in the previous page. Then, the variable is assigned to the agent by:

agent.set_problems(problem)


Local objective functions, constraints and all the operations related to the problem can be accessed through the attribute problem. For example:

agent.problem.objective_function.eval(pt) # evalate the objective function at pt
agent.problem.constraints # -> return the list of local constraints