2011-01-07 3 views
2

私は、商用、学生管理システムのクローンを作成しています。学生はフロントエンドを使用して講義を申請し、スタッフはイベント(時間、部屋など)を変更することができます。 アプリの核となるのは、座席を学生に配布するアルゴートームです。私はすでにここにそれについて尋ねた: How to implement a seat distribution algorithm for uni lecturesCakePHPの:別のファイル/クラス間の相互作用

今、私はここでそのアルゴリズムのためのクラスが見つかりました: http://www.phpclasses.org/browse/file/10779.html

を私はアプリ/ベンダーに「クラスGA」を置きます。私は1つのオブジェクト(子供、そして後に進化プロセスの親)を表す「クラスソリューション」を書く必要があります。

私は(変異する関数を記述することもあるでしょう)、クロスオーバー()、フィットネス()。フィットネスは、オーバーブッキングされたコースなどがあるかどうかに基づいて、ソリューションのスコアを計算します。 crossover()は、2つの親から子を生成するクレイジーサルの性機能であり、mutate()はクロスオーバーの後に子を変更します。今

、フィットネス() - 関数は、関連するいくつかのモデルにアクセスする必要がある、と彼らのfind() - 機能。それは、例えば以下をチェックすることによって、ソリューションの適合度を評価する。予約されているコースが不足している場合、または履行されていない願いがある場合は、そのペナルティを科す。

はどこga.php、solution.phpと3つの機能を置くのでしょうか? ga.phpは関数にアクセスする必要がありますが、関数はモデルにアクセスする必要があります。アルゴリズムが実行されると何千回も呼び出されるので、私はfitness()関数内からApp :: import()を呼びたくはありません。

誰かが私を助けることを願っています。事前のおかげで=)

+0

なぜのApp ::インポートが何千と呼ばれるになるだろう時間? – JohnP

答えて

0

あなたがPHP5を使用していますか?もしそうなら、なぜフィットネス()関数内でこのような何かをしない:

if (!class_exists('GA', false)) App::import('Vendor', 'GA'); 

必要なときにアプリが::インポートのみと呼ばれるこの方法。

*クラスは、GA(すべて大文字)と呼ばれている場合はところで、あなたはそれがケーキの規則に従うことg_a.phpすることが含まれるファイルの名前を変更する必要がありますが。*

関連する問題