# Cobb-Douglas Utility Function with R Optimization

In this post, let’s see how we can use R optimization function `optim`

to calculate the Utility maximization from a Cobb-Douglas utility function.

The Cobb-Douglas utility function takes the following general form

\[U(x,y) = x^a \cdot y^b\]Our budget constraint (\(m\)) for two goods (\(x\) and \(y\)) is defined by the price of \(x\) (\(p_{x}\)) multiplied by the quantity of \(x\), plus the price of \(y\) (\(p_{y}\)) multiplied by the quantity of \(y\)

\[m = p_{x} \cdot x + p_{y} \cdot y\]We solve for \(y\) with

\[y = \left( m - p_{x} \cdot x \right) \frac{1}{p_{y}}\]We can define the **objective function** we want to maximize in `R`

with

```
# objective function
# par = x
f = function(par = 1, m = 100, a = 0.5, b = 0.5, px = 1, py = 1){
y = (m - (px * par))/py # solve for y
U = (par^a) * (y^b) # cobb-douglas utility function
return(U)
}
```

We simply have to input the quantity of \(x\) and set the \(a\) and \(b\) values of the Cobb-Douglas function.

For example, if we feed \(x = 1\), we get a Utility of \(39\)

```
# x = 1
# U is 39 #
f(par = 1, m = 100, px = 1, py = 1, a = 0.2, b = 0.8)
```

Now we can use the optimizer `optim`

with this objective function.

The `optim`

is searching for the \(x\) value (`par`

) that maximizes Utility. (\(y\) is calculated automatically given our budget constraint).

```
optim(par = c(1), # starting value #
fn = f, # the objective function we created above
a = 0.2, # Cobb-Douglas alpha value
b = 0.8, # Cobb-Douglas beta value
lower = 1, # lower bound for search
upper = 100, # upper bound for search #
method = "L-BFGS-B",
control = list(fnscale = -1)) # maximize instead of minimize
# optim$par
```

The result from `optim$par`

tell us that \(20\) is the optimal value for \(x\).

Let’s input our function the `optim$par`

result.

```
out = optim(par = c(1), # starting value #
fn = f,
a = 0.2,
b = 0.8,
lower = 1, # lower bound for search
upper = 100, # upper bound for search #
method = "L-BFGS-B",
control = list(fnscale = -1)) # maximize instead of minimize
# optimal x value
out$par # 20
# input of optim into our objective function f()
f(par = out$par, m = 100, px = 1, py = 1, a = 0.2, b = 0.8)
```

The maximum Utility for this budget constraint is \(60\).

We can verify with the package `microecon`

the result, see the link for the package https://github.com/giacomovagni/microecon.

```
library(tidyverse)
library(ggthemes)
library(microecon)
library(microecon)
cobbs_douglas_utility(I = 100, a = 0.2, b = 0.8, px = 1, py = 1)
```