0

My and my friends are working on an AMPL project. The goal of the project is to maximize profit in a fiber-to-the-home network. Network works without routers or splitters, only nodes with cabinets where one cable with x fibers can be split into cables with less fibers or connected with other cables to create cables with more fibers. That said, one dedicated fiber is supposed to reach from a single central node to an access point with n clients (the demand; we don't worry how the clients are connected to access points). We have edges between all nodes (central node, transit nodes and access points) that have a trenching cost for putting cable(s) there and length (because each type of cable has cost per km and number of fibers).

Our problem is: on each edge we can have number of cables, of different cable types. We don't know how to declare this situation in AMPL network model to let it now that

  1. on each edge there can be more than one cable (of different types which we later declare in each situation)
  2. we also don't know how to let program know it can choose from different cable types

I thought about a solution to create an independent set of cables for each edge (link) but I don't know if that's possible in AMPL.

So far we have below code

Help will be much appreciated, thanks!

set ACCESSPOINTS;
set TRANSITS;
set CENTRAL
set NODES := ACCESSPOINTS union TRANSITS union CENTRAL;
set LINKS within (NODES cross NODES);
set CABLES;
#set DEMANDS within (CENTRAL cross ACCESSPOINTS);

param demand {ACCESSPOINTS} >=0;

param trenching_cost {LINKS} >= 0;
param length {LINKS} >= 0;

param cabinet_cost {TRANSITS} >= 0;

param cost_per_km {CABLES} >= 0;
param fibers {CABLES} >= 0;

param originates {n in NODES, (i,j) in LINKS} binary :=
      if (i = n) then 1 else 0;                         
param terminates {n in NODES, (i,j) in LINKS} binary :=
      if (j = n) then 1 else 0;     
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
terielon
  • 1
  • 1

1 Answers1

0

You should put objective function and constraints on your model first