I have a Monte Carlo simulation that takes in a set of variables
x1, x2, etc. and returns a number of counters that can be used to calculate the actual objective function
I wanted to use JuMP to optimize the dimension variables, but is it possible to use the non-linear solver for a problem where there’s no expression to auto-differentiate?
Below is an example of what I thought would work.
function MonteCarlo(data, x, args) for i = 1:length(data) R = rand()*x # x is the optimization variable a = round(R*data[i]) # some processing based on data and random numbers if a%2 == 0 counter1 = counter1 + 1 else counter2 = counter2 + 1 end return counter1, counter2 end # Function to calculate the optimization objective function f(x, data, args) counter1, counter2 = MonteCarlo(data, x, args) η = counter1/counter2 return η end model = Model() @variable(model, 0 <= x <= 10) @NLobjective(model, Max, f(data, x, args)) optimize!(model)