Genatic Algorithm input and output in vector form

5 次查看(过去 30 天)
Hi, I am facing a problem while using Builtin Genatic Algorithm *ga*.
Usually when we run *ga* over fitness function @(x), the variable in fitness function Let say *a* take the value as a=x(1), and other variable b=x(2). So, we have two variables, output of *ga* is 1*2 (array with two elements).
But for my case, istead of using *a=x(1)* i want variable *a* as a vector of 10 rows : a=x(:,1) and similarly the second variable also of 10 rows: *b=x(:,2)*. So, the output of *ga* should be 10*2. Is there any way we can force ga to work with vectors (input and output).

采纳的回答

Walter Roberson
Walter Roberson 2023-1-4
Write the objective function to accept a row vector of length nvars and return a scalar value.
(There is an exception to that if you turn on the Vectorized option)
So, No, there is no way to arrange to have the function pass in a 2D array of values that you can then access rows or columns of.
You can, however, reshape() the vector you receive as the first thing you do.
Remember that constraints and bounds will be in terms of vectors of values. So if you wanted to create a lowerbound specification in terms of columns, the first column intended to correspond to a and so on, then you can go ahead and create the constraints in that form -- just remember to reshape() the constraint array to pass it in.
You may wish to consider using Problem Based Optimization, which allows you to build constraints and objectives in terms of operations on vectors and arrays, and internally it builds the appropriate functions and vectors necessary.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Get Started with Optimization Toolbox 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by