4

I know that my question is general, but I'm new to AI area. I have an experiment with some parameters (almost 6 parameters). Each one of them is independent one, and I want to find the optimal solution for maximum or minimum the output function. However, if I want to do it in traditional programming technique it will take much time since i will use six nested loops.

I just want to know which AI technique to use for this problem? Genetic Algorithm? Neural Network? Machine learning?

Update

Actually, the problem could have more than one evaluation function. It will have one function that we should minimize it (Cost) and another function the we want to maximize it (Capacity) Maybe another functions can be added. Example: Construction a glass window can be done in a million ways. However, we want the strongest window with lowest cost. There are many parameters that affect the pressure capacity of the window such as the strength of the glass, Height and Width, slope of the window. Obviously, if we go to extreme cases (Largest strength glass, with smallest width and height, and zero slope) the window will be extremely strong. However, the cost for that will be very high.

I want to study the interaction between the parameters in specific range.

5
  • Until now, your question is basically: "How can I run six nested loops faster?" Can you elaborate more, add some details or something useful? examples: number of possible result per parameter, have you got an exact evaluation function? can you relax some of the conditions, etc. Commented Jul 13, 2015 at 18:52
  • How about simulated annealing? There are lots of techniques. Choosing the right one depends on the details of the problem. Commented Jul 13, 2015 at 18:54
  • Are these parameters some parameters of your learning algorithm? Commented Jul 13, 2015 at 19:00
  • I updated the question, please let me know if further details are required. Thanks all Commented Jul 13, 2015 at 19:27
  • Do you have discrete or continuous variables? Is your target differentiable? Commented Aug 15, 2015 at 13:58

3 Answers 3

1

Without knowing much about the specific problem it sounds like Genetic Algorithms would be ideal. They've been used a lot for parameter optimisation and have often given good results. Personally, I've used them to narrow parameter ranges for edge detection techniques with about 15 variables and they did a decent job.

Having multiple evaluation functions needn't be a problem if you code this into the Genetic Algorithm's fitness function. I'd look up multi objective optimisation with genetic algorithms.

I'd start here: Multi-Objective optimization using genetic algorithms: A tutorial

Sign up to request clarification or add additional context in comments.

1 Comment

Exactly, that's what I want!
1

First of all if you have multiple competing targets the problem is confused.

You have to find a single value that you want to maximize... for example:

value = strength - k*cost

or

value = strength / (k1 + k2*cost)

In both for a fixed strength the lower cost wins and for a fixed cost the higher strength wins but you have a formula to be able to decide if a given solution is better or worse than another. If you don't do this how can you decide if a solution is better than another that is cheaper but weaker?

In some cases a correctly defined value requires a more complex function... for example for strength the value could increase up to a certain point (i.e. having a result stronger than a prescribed amount is just pointless) or a cost could have a cap (because higher than a certain amount a solution is not interesting because it would place the final price out of the market).

Once you find the criteria if the parameters are independent a very simple approach that in my experience is still decent is:

  1. pick a random solution by choosing n random values, one for each parameter within the allowed boundaries
  2. compute target value for this starting point
  3. pick a random number 1 <= k <= n and for each of k parameters randomly chosen from the n compute a random signed increment and change the parameter by that amount.
  4. compute the new target value from the translated solution
  5. if the new value is better keep the new position, otherwise revert to the original one.
  6. repeat from 3 until you run out of time.

Depending on the target function there are random distributions that work better than others, also may be that for different parameters the optimal choice is different.

2 Comments

Thanks a lot. Actually, it seems that defining the target value is the challenge right now, because there is no clear relation between Cost and Strength. I will try to read more to find if there is relation between target values in my project.
However, I believe that using an AI technique will reduce the time dramatically because there a lot of parameters and the range is not that small. I would like to investigate the interaction relation between each two parameters also, but I don't know how AI will help me in that. Maybe statistical study is required in that case, what do you think?
0

Some time ago I wrote a C++ code for solving optimization problems using Genetic Algorithms. Here it is: http://create-technology.blogspot.ro/2015/03/a-genetic-algorithm-for-solving.html

It should be very easy to follow.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.