1

これは私がこれまでに持っているコードです:

population = 50
individual = repmat(struct('genes',[], 'fitness', 0), population, 1);

私が行っているのは 50 個体の集団を作成することです これらの個体はそれぞれ構成遺伝子と適応度を持っています 私が正しくできないと思われるのは、単一のセルではなく、50 個のセル配列になるように遺伝子を設定することです。

誰かが私のためにこれに光を当てることができますか?

さらに追加したいのは、遺伝子配列にランダムな値 (0 または 1) を設定することです。各メンバーの遺伝子配列を反復処理し、Matlab が利用できる乱数生成機能を使用することで、後でこれを簡単に実行できると思います。ただし、構造体が事前に割り当てられている場合は、より効率的です。

ありがとう

4

4 に答える 4

2

構造体の代わりにクラスを使用しないのはなぜですか? 簡単なクラスの作成person:

classdef person
    properties
        fitness = 0;
    end
    properties(SetAccess = private)
        genes
    end
    methods
        function obj = person()
            obj.genes = randi([0 1], 10, 1);
        end
    end
end

次に、次のスクリプトを実行します。

population = 50;

people = person.empty(population, 0);
people(1).fitness = 100;
people(2).fitness = 50;

people(1)
people(2)

次のコンソール出力が生成されます。

ans = 

  person with properties:

    fitness: 100
      genes: [10x1 double]


ans = 

  person with properties:

    fitness: 50
      genes: [10x1 double]
于 2013-06-28T16:04:34.437 に答える
0

これに似たことができます:

individual = repmat(struct('genes',{cell(1,50)}, 'fitness', 0), population, 1);
于 2013-06-28T16:06:24.977 に答える