You are on page 1of 70

University of Bergamo

Department of Information Technology and


Mathematical Methods

Network Optimization

Fabio Martignon

1
Lecture overview

Multi-commodity flow problem

Network design problem


Node positioning
Users coverage (Assignment problem)
Traffic routing

Radio/coverage planning

2
Multi-commodity flow
problem

3
Multi-commodity flow problem

Given:
An oriented graph G = (N, A).
The capacity uij and the cost cij are associated with
each arc (i , j) A.
A set of demands K, where each demand k is
characterized by:
Source sk N
Destination tk N
An amount of flow dk

4
Multi-commodity flow problem (cont.)

Problem:
Route all the demands at the least cost, taking into
account the capacity constraints of the arcs.

5
Model
Decision variables:
The amount of flow (xkij) of demand k routed on arc
(i , j):

Objective function:

6
Model
Constraints:
(1) Flow Balance constraints:

if
if
if

(2) Capacity constraints:

7
Model
Constraints:

(3) Positivity constraints:

8
Formulation dimension

Number of variables: |A||K|


Number of constraints: |N||K| + |A|

9
Network design problem

10
Candidate Sites
Test Points
Destinations

11
Candidate Sites
Test Points
Destinations

12
Candidate Sites
Test Points
Destinations
Routers

13
Candidate Sites
Test Points
Destinations
Routers

14
Network design problem
Given
A set of Candidate Sites (CSs, where to install nodes)
A set of test points (TPs) and a set of destinations (DNs)
source-destination traffic pairs (sk, tk)

Problem
Install nodes, links, and route traffic demands
minimizing the total network installation cost

15
Network model
Notations and parameters:
S: the set of CSs
I: the set of TPs
D: the set of DNs
cIj: cost for installing a node in CS j
cBjl: cost for buying one bandwidth unit between
CSs j and l
cAij: Access cost per bandwidth unit between TP i
and CS j
cEjk: Egress cost per bandwidth unit between CS j
and DN k
16
Network model (cont.)
Notations and parameters:
dik: traffic generated by TP i towards DN k
ujl: maximum capacity that can be reserved on link (j,l)
vj: maximum capacity of the access link of CS j
hjk: maximum capacity that can be reserved on egress
link (j,k)
aij: 0-1 parameter that indicates if TP i can access the
network through CS j
bjl: 0-1 parameter that indicates if CS j can be connected
to CS l
ejk: 0-1 parameter that indicates if CS j can be connected
to DN k

17
Network model (cont.)
Decision variables:
xij: 0-1 variable that indicates if TP i is assigned to
CS j
zj: 0-1 variable that indicates if a node is installed
in CS j
wjk: 0-1 variable that indicates if CS j is connected
to DN k
fkjl: flow variable which denotes the traffic flow
routed on link (j,l) destined to DN k
fjk: flow variable which denotes the traffic flow
routed on egress link (j, k)
18
Network model (cont.)
Objective function:
The objective function accounts for the total network cost,
including installation costs and the costs related to the
connection of nodes, users access and egress costs.

19
Network model (cont.)
Constraints:
Network model (cont.)
Constraints:

21
AMPL basics
AMPL means A Mathematical Programming Language
AMPL is an implementation of the Mathematical
Programming language
Many solvers can work with AMPL
AMPL works as follows:
translates a user-defined model to a low-level
formulation (called flat form) that can be understood
by a solver
passes the flat form to the solver
reads a solution back from the solver and interprets it
within the higher-level model (called structured form)

22
AMPL basics (cont.)
AMPL usually requires three files:
the model file (extension .mod) holding the MP formulation
the data file (extension .dat), which lists the values to be assigned to
each parameter symbol
the run file (extension .run), which contains the (imperative) commands
necessary to solve the problem
The model file is written in the MP language
The data file simply contains numerical data together with the corresponding
parameter symbols
The run file is written in an imperative C-like language (many notable
differences from C, however)
Sometimes, MP language and imperative language commands can be mixed in
the same file (usually the run file)
To run AMPL, type ampl my-runfile.run from the command line

23
costModel.mod
set D; # set of destinations
set TP; # set of TPs
set CS; # set of CSs

param ITP{TP,CS}; # Matrix aij (TP/CS)


param ID{CS,D}; # Matrix eij (CS/D)
param ICS{CS,CS}; # Matrix bjl (CS/CS)
param d{TP,D}; # Traffic generated by each TP, destined to destination D
param U{CS,CS}; # Capacity on the link CS/CS
param costU{CS,CS}; # Transport cost (per unit of bandwidth) for traffic on the transport link
between the CSs
param V{CS}; # Capacity of the link between each TP and CS
param costR{CS}; # Router installation cost
param costD{CS,D}; # Cost (per bandwidth unit) for traffic on the link between the CS and the
destination D
param costTP{TP,CS}; # Cost (per bandwidth unit) for traffic on the link between the TP and the
CS
param H{CS,D}; # Capacity of the egress link CS/D

var x{TP,CS} binary; # Binary variable of assignment of each TP to a CS


var z{CS} binary; # Binary variable of installation of a router in a CS
var f{CS,CS,D} >=0; # Flow variable per destination D on the link between CSs
var w{CS,D} binary; # Binary variable of connection of CS to a destination node D
var fw{CS,D} >=0; # Flow variable on the link between a CS and a destination D
24
costModel.mod (cont.)
minimize total_cost: sum {j in CS} (costR[j] * z[j]) +
sum {j in CS, l in CS, k in D} (costU[j,l] * f[j,l,k]) +
sum {j in CS, k in D} (costD[j,k] * fw[j,k]) +
sum {j in CS, i in TP, k in D} d[i,k] * x[i,j] * costTP[i,j];

subject to assignment {i in TP}: sum {j in CS} x[i,j] = 1;


subject to existence {i in TP, j in CS}: x[i,j] <= ITP[i,j] * z[j];

subject to flow_balance_constraints {j in CS, k in D}: sum {i in TP} d[i,k]*x[i,j] + sum


{l in CS} (f[l,j,k] - f[j,l,k]) - fw[j,k] = 0;
subject to max_flow_per_TP_CS {j in CS}: sum {i in TP, k in D} d[i,k] * x[i,j] <= V[j];

subject to connect_CS_D {j in CS, k in D}: w[j,k] <= ID[j,k] * z[j];


subject to flow_CS_D {j in CS, k in D}: fw[j,k] <= H(j,k) * w[j,k];

subject to link_existence_1 {j in CS, l in CS: j!=l}: sum {k in D} f[j,l,k] <= U[j,l] *


ICS[j,l] * z[j];
subject to link_existence_2 {j in CS, l in CS: j!=l}: sum {k in D} f[j,l,k] <= U[j,l] *
ICS[j,l] * z[l]; 25
runfile_costModel.run
model costModel.mod;
data outfile.dat;
option solver 'cplexamp';
option log_file 'ffile.log';
option cplex_options 'timing 1' 'mipdisplay=1' 'integrality=1e-09';
option display_1col 1000000;
solve;

display _solve_user_time > results_processingTime.out;


display (sum {i in TP, j in CS} x[i,j] + (sum {j in CS, k in D: fw[j,k]!= 0} 1) + sum {j in CS, l in
CS: (sum {k in D} f[j,l,k]) != 0} 1) > results_nbrOfLinks.out;
display x > results_xy.out;
display z > results_z.out;
display f > results_perk_f.out;
display sum {j in CS} z[j] > results_nbrOfRouters.out;
display w > results_w.out;
display {j in CS, l in CS} (sum {k in D} f[j,l,k]) > results_f.out;
display fw > results_fw.out;
display total_cost > results_totalCost.out;
display sum {j in CS} (costoR[j] * z[j]) > results_zcost.out;
display solve_result_num > solve.tmp;
26
quit;
J. Elias: Rseaux, Thorie des Jeux et Optimisation
Node log . . .
Solution
Best integer = 4.390008e+03 Node = 0 Best node = 4.046214e+03
Best integer = 4.238774e+03 Node = 0 Best node = 4.052842e+03
Best integer = 4.099293e+03 Node = 0 Best node = 4.057592e+03
Best integer = 4.096009e+03 Node = 40 Best node = 4.072417e+03
Best integer = 4.094250e+03 Node = 138 Best node = 4.085538e+03
Best integer = 4.093422e+03 Node = 178 Best node = 4.089841e+03
Implied bound cuts applied: 5
Flow cuts applied: 708
Mixed integer rounding cuts applied: 1
Times (seconds):
Input = 0.084005
Solve = 106.719
Output = 0.48003
CPLEX 11.0.1: optimal integer solution within mipgap or absmipgap; objective 4093.422
22401 MIP simplex iterations
204 branch-and-bound nodes
absmipgap = 0.279608, relmipgap = 6.83066e-05
708 flow-cover cuts
5 implied-bound cuts
1 mixed-integer rounding cut
27
Example of a planned network

- Randomly
generated
topology
- LxL square,
with L=1000

40 Candidate
Sites
20 Test Points
20 Destination
Nodes

28
Applications:
Service Overlay Network
SON is an application-layer network built on
top of the traditional IP-layer networks

SON

Logical link

Access
network Access
network

Network
Domain
Service
Gateway
Network Network
Domain Domain
29
What is a Service Overlay
Network?
SON is operated by an overlay ISP
The SON operator owns one or more overlay
nodes (also called service gateways) hosted
in the underlying ISP domains
Overlay nodes are interconnected by virtual
overlay links that are mapped into paths of
the underlying network
SON operator purchases bandwidth for
virtual links from ISPs with bilateral SLAs
SON provides QoS guarantees to customers
implementing application specific traffic
management mechanisms

30
Why using SONs ?
SONs provide a simple solution to
end-to-end QoS both from a technical
and an economical perspective
SON Operator
SLAs SLAs

ISP ISP ISP user user user

SONs dont require any changes in the


underlying networks
SONs provide a unified framework that
can be shared by different applications

31
Topology Design & Bandwidth
Provisioning of SONs

Problem Statement:
Given a set of Candidate Sites (where to install overlay nodes)
and source-destination traffic pairs:
Goals:
Deploy a SON that:
1. Minimizes the total network installation cost
2. Maximizes the profit of the SON operator
Taking into account the SON operators budget
Novel issues:
Revenue: our work takes explicitly into account the SON
operators revenue in the optimization procedure
The number and location of overlay nodes are not pre-
determined as in previous works on overlay design
Capacity constraints on overlay links are considered
Fast and efficient heuristics are developed to deal with
large-scale network optimization and to support periodical
SON redesign based on traffic statistics measured on-line
32
Topology Design & Bandwidth
Provisioning of SONs
Main Contributions (1/2)
We illustrate an optimization framework for
planning SONs
Two mathematical programming models:
1.The first model (FCSD) minimizes the
network installation cost while providing
full coverage to all users
2.The second model (PMSD) maximizes
the SON profit choosing which users to
serve based on the expected gain and
taking into account the budget
constraint
33
Topology Design & Bandwidth
Provisioning of SONs
Main Contributions (2/2)
Two efficient heuristics to get near-
optimal solutions for large-size network
instances with a short computing time

1. The Cost Minimization SON Design


Heuristic (H-FCSD)

2. The Profit Maximization SON Design


Heuristic (H-PMSD)

34
Mathematical Models
FCSD PMSD
Objective Function: Objective Function:
(FCSD: Full-Coverage SON Design model) (PMSD: Profit Maximization SON Design
model)
Node
Installation Overlay links
cost bandwidth cost SON revenue

Access Egress
cost cost

Subject to:
Flow Conservation constraints
Access and Egress coverage
Coherence and Integrality constraints
35
Profit Maximization Model
Budget constraint
The SON planner may define a budget
(B) to limit the economic risks in the
deployment of its network:

Budget Constraint

36
Cost Minimization Heuristic
This heuristic allows us to obtain good
solutions for large scale instances with a
short computing time.
The Cost Minimization Heuristic proceeds
as follows:
1.Solve the access coverage and
distribution sub-problems
2.Apply a continuous relaxation on the
Integer Linear Programming (ILP)
formulation
3.Perform a randomized rounding
procedure to obtain an integer solution

37
Solve the Access Coverage Solve the Distribution
sub-problem (13)-(17) sub-problem (18)-(22)
1st step
Determine xij H-FCSD Determine w jk
and set S A and set S D
Solve the rational relaxation of the
FCSD problem with xij = xij , w jk = w jk
and z j = 1 j S S
A D

2nd step Determine the relaxed


solution z j
Apply randomized rounding to z j
variables, fixing to 0 or 1 only the variables
which assume values close to 0 or 1

Solve the FCSD model (1)-(9) where all


3rd step xij and, w jk as well as some z j variables
have already been fixed in the above steps
38
Profit Maximization Heuristic

The Profit Maximization Heuristic proceeds


as follows:
1.Solve the continuous relaxation of the
ILP formulation
2.Perform a randomized rounding
technique to determine the optimal
subset of end-users to cover
3.Solve the Cost Minimization Heuristic
with the subset of users already chosen
in step 2

39
H-PMSD
Solve the rational relaxation
of the PMSD problem

Determine the xij


1st step
assignment variables

For each TP i apply randomized


rounding to the quantity Qi = jS xij

Determine the subset Ic of


TPs that is convenient to cover

Determine the minimum cost SON


2nd step that covers all TPs in Ic
using the H-FCSD heuristic

40
Numerical Results

We solved the proposed models to the optimum


using an ILP solver
We tested the sensitivity of the models (FCSD
and PMSD) and heuristics (H-FCSD and
H-PMSD) to different parameters:
the number of candidate sites and test points;
the traffic demands;
the installation costs;
the SON operators budget.
We considered randomly generated network
instances (GRID, GT-ITM and BRITE) and real
ISP topologies mapped by the Rocketfuel tool
41
Numerical Results
Example Network
- Randomly
generated
topology
- LxL square,
with L=1000

40 Candidate
Sites
20 Test Points
20 Destination
Nodes

42
Numerical Results: a glance
FCSD vs. H-FCSD
dik = 500 FCSD LP-FCSD H-FCSD
kbit/s

m Cost Time Cost Time Cost Time gapI gapB


30 1001.3 12.4 929.5 0.3 1032.0 0.5 3.07 11.03
40 993.2 244.8 910.5 0.7 1025.9 1.3 3.29 12.67
50 981.9 4665.8 895.0 1.8 1022.6 1.6 4.15 14.26
60 879.8 3.2 1018.2 3.2 15.73
80 858.3 10.9 1017.9 8.2 18.59
100 845.5 28.0 1013.4 15.9 19.86

The network cost decreases when increasing the number of CSs (m)
H-FCSD performs very close to FCSD (less than 4.2% for dik = 500 kbit/s and
less than 3.1% for dik = 1 Mbit/s)
The computation time of H-FCSD is below 30 s for all the tested instances
H-FCSD, compared to LP-FCSD, has a performance gap inferior to 20% in all
network scenarios
43
Numerical Results: a glance
PMSD vs. H-PMSD

The two curves (PMSD, H-PMSD) almost overlap; H-PMSD covers almost the same
number of end-users as the PMSD; as a consequence, the revenues obtained by
PMSD and H-PMSD are similar
For small values of the gain, it is not profitable enough to cover any of the users;
as the gain increases, the SON covers more users, eventually all of them
44
VLSN Search Approach
We further proposed a novel and efficient tabu search
based heuristic for the planning of SONs that combines
polynomial size and very large scale neighborhoods
(VLSN)
The VLSN of the solution given by the tabu search is
explored efficiently to obtain in a short time a new
solution that is both far from the current solution and
cost-decreasing
The heuristic is an extension of those developed for the
Hub Location problem
Numerical results showed that the proposed heuristic
performs very close to the optimum with a short
computing time, thus providing a promising framework
for the design of SONs

45
Radio planning

46
Network architecture

47
Wireless Network
Wireless networks are mainly access networks
Fixed access point (cellular systems, WLAN,
WMAN)

48
Wireless Network
Cellular coverage: the territory coverage is obtained by
Base StationsBS (or Access Points) that provide radio
access to Mobile Stations (MSs) within a service area
called CELL

49
What is radio planning?
When we have to install a new wireless network or
extend an existing one into a new area, we need to design
the fixed and the radio parts of the network. This phase is
called radio planning.
The basic decisions that must be taken during the radio
planning phase are:
Where to install base stations (or access points,
depending on the technology)
How to configure base stations (antenna type, height,
sectors orientation, maximum power, device capacity,
etc.)
50
What is radio planning?
The basic decisions that must be taken during the radio planning phase are:
Where to install base stations (or access points, depending on the technology)
How to configure base stations (antenna type, height, sectors orientation,
maximum power, device capacity, etc.)

51
Antenna positioning
The selection of possible antenna sites depends on
several technical (traffic density and distribution,
ground morphology, etc.) and non-technical
(electromagnetic pollution, local authority rules,
agreements with building owners, etc.) issues.

We denote with S the set of Css

We can assume that the channel gain gij between TP i


and CS j is provided by a propagation prediction tool.
52
Antenna positioning
The antenna configuration affects the signal level received
at TPs
For each CS j we can define a set of possible antenna
configurations Kj
We can assume that the channel gain gijk between TP i and
CS j depends also on configuration k.
Based on signal quality requirement and channel gain we
can evaluate if TP i can be covered by CS j with an antenna
with configuration k, and define coefficients:

53
Coverage planning
The goal of the coverage planning is to:
Select where to install base stations
Select antenna configurations
To ensure that the signal level in all TPs is high
enough to guarantee a good communication quality
Note that interference is not considered here

54
Decision variables and parameters
Decision variables:
yjk: 0-1 decision variable that indicates if a base
station with configuration k is installed in CS j

Installation cost:
cjk:cost related to the installation of a base station in
CS j with configuration k

55
Set covering problem

Objective function:
Total cost
Full coverage
constraints

One configuration
per site
Integrality
constraints

56
Fully Distributed Overlay
Network Topology Design
Overlay Network Design is not enforced by a central authority, but
arises from the interactions of several self-interested agents; each
agent or user client can decide the set of connections to establish

We use the Game Theory and the Nash Equilibrium concepts to


characterize stable networks created by a set of selfish agents

The majority of existing works assume that users are completely


non-cooperative, leading, in most cases, to inefficient equilibria
However, this assumption is not entirely realistic (long
term decisions) and users cooperation level can be
increased by some external authority (e.g., the overlay
administrator)

We overcome this limitation by proposing two novel socially-aware


overlay network design games to deal with the fully distributed
overlay network formation problem

57
Fully Distributed Overlay
Network Topology Design
Motivation
The main advantage of the centralized network planning

Network cost optimization

The main advantage of game based network formation

Distributed network management

We would like to find an approach which


combines the above positive features

58
Fully Distributed Overlay
Network Topology Design

Problem Statement:
A directed graph G = (V,E), where each edge e has
a nonnegative cost ce, and a set of players

Each player i is identified with a source-sink pair


(si, ti), and should pick a path Si from its source to
its destination (Si represents the strategy chosen by
player i)

The network formed by players is (V,UiSi) with total


cost equal to (social cost)

Goal:
Each user i wants to connect his source-destination
pair minimizing his cost function Ji

59
Fully Distributed Overlay
Network Topology Design
Main Contributions (1/2)
Two Socially-Aware Overlay Network Design Games:
1. The Socially-Aware Network Design game (SAND), where
users are partially socially-aware because their utility
function is a weighted sum of individual and global costs
Weighting parameter

User path cost Total network cost


2. The Network Administrator-Driven Socially-Aware Network
Design (NAD-SAND) game, where a network administrator
plays before the users, and drives them to the best Nash
equilibrium possible
60
Fully Distributed Overlay
Network Topology Design
Main Contributions (2/2)

We derive bounds to the Price of Anarchy,


the Price of Stability and the Reachable
Price of Anarchy of our games

We propose a Best Response algorithm


that allows each user to improve his cost
function in the proposed SAND game

We study the efficiency of the equilibria


achieved by our games

61
Bound to the Price of
Anarchy for the SAND game
In the SAND game, a lower bound on the Price
of Anarchy (PoA) is given by:

Surprisingly, socially-aware users can design


costlier networks than selfish users!

C
If all players start at link with cost C
C
and 1
k s t
No player has a gain to deviate and
choose the link with cost equal to 1
1
Then, the cost of the network is C
62
Stackelberg Approach

To avoid being stuck in inefficient equilibria, we propose a


Stackelberg-type modification of the SAND game

In the NAD-SAND game, a network administrator plays


before the users and his/her aim is to drive the players to
the best Nash equilibrium

However, computing the optimal Stackelberg strategy is NP-


hard

63
The Network Administrator-Driven
SAND game (NAD-SAND)

We present a simple strategy that achieves consistent


performance improvements

1. Given the network topology, the network administrator


solves a generalized Steiner Tree problem, determining the
minimum-cost subnetwork such that the source/destination
nodes of each player are connected by a path
Let Eopt be the set of edges belonging to such optimal
subnetwork
2. The network administrator chooses all links belonging to
Eopt , thus offering to share their cost with the other
players
3. At this point, all the k users play the SAND game, trying to
optimize their own objective function

64
Performance Evaluation SAND game
(a) Purely Selfish users (=0) (b) Socially-Aware Users (=50)
1000 1000

900 900

800 800

700 700

600 600

500 500

400 400

300 300

200 200

100 100

0 0
0 100 200 300 400 500 600 700 800 900 1000 0 100 200 300 400 500 600 700 800 900 1000

Scenario setting: random geometric network (R = 500), 50 nodes, 20


source/destination pairs
Topology (b) is much closer to a tree-like topology than that obtained with = 0
The total network cost is equal to 7000 for = 0 and to 5300 for = 50, thus
resulting in a gain of more than 24%. SAND designs more efficient networks
65
Performance Evaluation
SAND & NAD-SAND Game

Game =0 =1 =10 =50 =100 =1000 ILP


SAND 6567.73 6074.57 5708.95 5724.18 5736.17 5706.09 4213.82

NAD-SAND 5645.44 4675.13 4213.82 4213.82 4213.82 4213.82 4213.82

Random geometric graphs; random networks with 50


nodes, R = 500 and 20 players: average network costs
for the SAND and the NAD-SAND games
The optimal network cost is also reported

(1) Increasing social awareness permits to design stable


and efficient networks in a distributed way
(2) The proposed Stackelberg approach permits to
achieve dramatic performance improvements, obtaining
almost always the socially optimal network

66
Conclusion (1/2)
We proposed an optimization framework for the
design of Service Overlay Networks:
Novel optimization models that take into account
end-user requirements, the connectivity between
overlay nodes, the bandwidth cost, and the
routing of traffic flows
Several efficient heuristics that solve the SON
design problem for large networks with a short
computing time

Results obtained with topology generators (like


Gatech GT-ITM, BRITE, ) and real ISP topologies
confirm the effectiveness of the proposed design
approach

67
Conclusion (2/2)
We also considered a fully distributed approach, where the
overlay network is designed by a large number of
independent actors who selfishly optimize their own utility
Two novel socially-aware network design games: the first
incorporates a socially-aware component in the users
utility functions, while the second game uses additionally a
Stackelberg (leader-follower) approach to improve
efficiency

Numerical results demonstrate that:


(1) introducing some incentives to make users more
socially-aware is an effective solution to achieve stable and
efficient networks in a distributed way
(2) The proposed Stackelberg approach permits to achieve
dramatic performance improvements, obtaining almost
always the socially optimal network
Hence, the proposed approaches can be very effective to
design efficient overlay networks

68
Research Directions
We are currently considering a cooperative network
formation framework
Coalitions of players form, and divide network cost
savings

How to distribute cost-savings?


Shapley value solution
(computationally cumbersome)
Nash Bargaining solution approach

We are further developing Green routing


approaches (energy-aware path selection)
Incentives to the utilization of common resources (nodes)
Turn off unused nodes
69
References
International Journals

J. Elias, F. MARTIGNON, K. Avrachenkov, G. Neglia, A Game Theoretic


Analysis of Network Design with Socially-Aware Users, Elsevier
Computer Networks, January 2011
J. Elias, F. MARTIGNON, G. Carello, Very Large-Scale Neighborhood
Search Algorithms for the Design of Service Overlay Networks,
Telecommunication Systems, May 2010
A Capone, J. Elias, F. MARTIGNON, Routing and Resource
Optimization in Service Overlay Networks, Elsevier Computer
Networks, February 2009.
A Capone, J. Elias, F. MARTIGNON, Models and Algorithms for the
Design of Service Overlay Networks, IEEE Transactions on Network
and Service Management, September 2008.

Conferences
K. Avrachenkov, J. Elias, F. MARTIGNON, G. Neglia, L. Petrosyan, A
Nash bargaining solution for Cooperative Network Formation
Games, in Proceedings of Networking 2011, Valencia, Spain, May 2011.
J. Elias, F. MARTIGNON, K. Avrachenkov, G. Neglia, Socially-Aware
Network Design Games, in IEEE Infocom10, San Diego, CA, USA,
March 15-19, 2010.

70

You might also like