I have written a program for optimizing a set of generators. I have hourly price and cost data and need to figure out when a generator should run or just stay off. I describe the problem in more detail below. I have programed this using matlabs global optimization toolbox and the ga solver. I run the solver and each time I run the solver I get a different solution. I am thinking this is because ga is no able to properly search the solution space for an optimal solution? Is it unable to cope with the use of x_3 to turn the generator off?
The solver stops with this status:
> Optimization terminated: average change in the penalty fitness value > less than options.TolFun and constraint violation is less than > options.TolCon.
*Problem Description*
x_1 is the generator output at any one point in time and is constrained to be between a min and max capacity
x_2 is an integer variable used simply to turn the generator off completely
x_3 lastly is another integer variable used to apply a startup cost whenever the generator is switched on.
x_1, x_2 and x_3 are vectors where the index of the vector (eg. x_1(1:5) is the data for the first 5 hours)
*Objective Function (totrevenue6):*
efficiency6 = 0.2621*x_1 - 0.1229*x_1^2 + 0.2543income6 = {-x_1*(AC_1 + FC_1 - P_1 + FC_1)}/{efficiency6}revenue6 = - SC_1*x_3 - x_2*(income6)**totrevenue6** = -sum(revenue6)
*Constraints:*
- min_capacity <= generator6 power (x_1) <= max_capacity - 0 <= generator6 toggle (x_2)<= 1 - The startup constraint (x_3) is x_2-x_{2-1}<=x_3 and rearranging -x_{2-1}+x_2-x_3<=0 - 0 <= (x_3)<= 1
So my question(s) why does ga solver reach a new solution every time I run it? How do I get the solver to solve this type of problem?
many thanks
Best Answer