A cost function to be minimized. The function accept the
parameter values as a numerical vector as its principal argument.
Additional arguments may be specified through the ...
argument below.
nvar
Number of optimization variables of cost function
ncountries
Number of initial countries
nimp
Number of Initial Imperialists
maxiter
Maximum number of iterations allowed.
lb
Lower limit of the optimization region; a numeric vector of
length nvar. Will be recycled if necessary.
ub
Upper limit of the optimization region; a numeric vector of
length nvar. Will be recycled if necessary.
beta
Assimilation coefficient.
P_revolve
Revolution is the process in which the
socio-political characteristics of a country change suddenly.
zeta
Total Cost of Empire = Cost of Imperialist + Zeta *
mean(Cost of All Colonies)
...
Additional arguments, if needed, for the function cost.
Details
To use this code, you should only need to prepare your cost function.
Value
An object of class "ICA", a list with components:
call
The call used.
postion
The vector of components for the position of the
minimum value found.
value
The minimum value at the optimal position.
nimp
The remaining number of imperialists at the conclusion of
the procedure.
trace
A 1-column matrix of successive minimum values found at
each iteration of the major loop.
time
The execution time taken to find the best solution.
Note
The steps can be summarized as the below pseudocode:
0) Define objective function or cost function: f(x, ...), x = (x[1], x[2],
..., x[nvar]) ;
1) Initialization of the algorithm. Generate some random solution in
the search space and create initial empires.
2) Assimilation: Colonies move towards imperialist states in different
in directions.
3) Revolution: Random changes occur in the characteristics of some
countries.
4) Position exchange between a colony and imperialist. A colony with a
better position than the imperialist, has the chance to take the
control of empire by replacing the existing imperialist.
5) Imperialistic competition: All imperialists compete to take
possession of colonies of each other.
6) Eliminate the powerless empires. Weak empires lose their power
gradually and they will finally be eliminated.
7) If the stop condition is satisfied, stop, if not go to 2.
8) End
Assimilation: Movement of colonies toward imperialists (Assimilation Policy)
Revolution: A sudden change in the socio-political characteristics.
Atashpaz-Gargari, E. and Lucas, C. (2007). Imperialist Competitive
Algorithm: An algorithm for optimization inspired by imperialistic
competition. IEEE Congress on Evolutionary Computation, Vol. 7,
pp. 4661-4666.
Examples
## --------cost function: f(x,y) = x * sin(4 * x) + 1.1 * y * sin(2 * y)
## --------search region: -10 <= x, y <= 10
cost <- function(x) {
x[1] * sin(4 * x[1]) + 1.1 * x[2] * sin(2 * x[2])
}
ICAout <- ICA(cost, nvar = 2, ncountries = 80, nimp = 10,
maxiter = 100, lb = -10, ub = 10,
beta = 2, P_revolve = 0.3, zeta = 0.02)
summary(ICAout) ## same as the print method
coef(ICAout) ## get the position of the minimum
cost(coef(ICAout)) ## cost at the minimum
plot(ICAout) ## show the history of the process
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(ICAFF)
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/ICAFF/ICA.Rd_%03d_medium.png", width=480, height=480)
> ### Name: ICA
> ### Title: Finding a minimum value for the optimization variables of a cost
> ### function.
> ### Aliases: ICA
> ### Keywords: optimize
>
> ### ** Examples
>
>
> ## --------cost function: f(x,y) = x * sin(4 * x) + 1.1 * y * sin(2 * y)
> ## --------search region: -10 <= x, y <= 10
>
> cost <- function(x) {
+ x[1] * sin(4 * x[1]) + 1.1 * x[2] * sin(2 * x[2])
+ }
>
> ICAout <- ICA(cost, nvar = 2, ncountries = 80, nimp = 10,
+ maxiter = 100, lb = -10, ub = 10,
+ beta = 2, P_revolve = 0.3, zeta = 0.02)
>
> summary(ICAout) ## same as the print method
Call:
ICA(cost = cost, nvar = 2, ncountries = 80, nimp = 10, maxiter = 100,
lb = -10, ub = 10, beta = 2, P_revolve = 0.3, zeta = 0.02)
Best solution: 9.038988 -8.668189
Best value: -18.55472
No. of Imperialists: 1
Timings:
user system elapsed
0.336 0.000 0.335
> coef(ICAout) ## get the position of the minimum
[1] 9.038988 -8.668189
> cost(coef(ICAout)) ## cost at the minimum
[1] -18.55472
> plot(ICAout) ## show the history of the process
>
>
>
>
>
>
> dev.off()
null device
1
>