# [R] Multi-objective optimization

Paul Smith phhs80 at gmail.com
Thu Oct 18 12:10:09 CEST 2007

```> > On 10/17/07, Ravi Varadhan <rvaradhan at jhmi.edu> wrote:
> >
> >> What if simultaneously maximizing f(x,y) and g(x,y) is an incompatible
> >> objective?
> >>
> >> Modifying Duncan's example slightly, What if:
> >>
> >> f(x,y) = -(x-y)^2 and
> >> g(x,y) = -(x-2)^2-(y-x-1)^2?
> >>
> >> Here:
> >> (1) => x = y
> >> (2) => y = x + 1
> >> (3) => x = y => no solution!
> >>
> >> In order for a solution to necessarily exist, one needs to define a scalar
> >> function that strikes a compromise between f and g.
> >>
> >
> > But imagine that one is sure that there is no incompatibility, how can
> > R get the solution? For instance, can R get the solution for Duncan's
> > example?
> >
> I'm pretty sure there is nothing in base R designed to solve it, and I
> don't know of any packages that do it:  but there are more than 1000
> packages on CRAN, so I could easily have missed one.
>
> I'd suggest looking for literature that describes methods for
> numerically solving such systems, and then do a search on CRAN for
> packages that mention those methods.
>
> And if that fails, you could try putting something together by writing
> functions that call optimize() for the one dimensional optimization
> problem of finding x to optimize f given y, and finding y to optimize g
> given x, then use optim to find (x,y) minimizing the distance between
> these two solutions.  For example, something like this
> might work
>
> f <- function(x, y) -(x-y)^2
> g <- function(x, y) -(x-2)^2 - (y-1)^2
>
> f1 <- function(y) optimize( function(x) f(x,y), c(-10, 10),
> maximum=TRUE)\$maximum
> g1 <- function(x) optimize( function(y) g(x,y), c(-10, 10),
> maximum=TRUE)\$maximum
>
> sqdist <- function(xy) {
>   x <- xy[1]
>   y <- xy[2]
>   pt1 <- cbind(f1(y), y)
>   pt2 <- cbind(x, g1(x))
>   sum((pt1-pt2)^2)
> }
>
> optim(c(0,0), sqdist)
>
> but I wouldn't trust it on a real problem: the results of f1 and g1 will
> probably not be very smooth, and that will likely mess up optim if you
> use a fast method (not Nelder-Mead, as I did).  But give it a try.

Thanks, Duncan. Any suggestions about the keywords that should I use
to search for related literature?

Paul

```