• ベストアンサー

解探索について

はじめまして、現在大学でレイアウト技法について学んでいるものです。 現在レイアウトの解探索にPSO(粒子群最適化)、GA(遺伝的アルゴリズム)、SA(焼きなまし法)のうちどれか一つを用いる予定なのですがもしこれらの技法についてわかりやすく説明している本、もしくはサイトを知っている方いらっしゃいましたらご教授願えないでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Knotopolog
  • ベストアンサー率50% (564/1107)
回答No.1

   レイアウト技法    粒子群最適化 PSO    遺伝的アルゴリズム GA     焼きなまし法 SA を,それぞれ,グーグル(Google) http://www.google.com で検索すると,沢山,参考になりそうな項目がヒットします. 試してみて下さい.

参考URL:
http://www.google.com
ando0106
質問者

お礼

回答ありがとうございます。 私もGoogleでかなり調べたのですがなかなかいいサイトが見つからず質問させていただきました。 Knotopologさんは参考になる書籍はご存じないですか?

その他の回答 (1)

  • Knotopolog
  • ベストアンサー率50% (564/1107)
回答No.2

私の専門が数学,理論物理学関係で「レイアウト技法」なる学問は専門外になります. 従いまして,参考になる書籍は心得ておりません.お役に立てず,すいません.

関連するQ&A

  • 解の探索法

    本で読んだんですけど、心理学の世界で、解の探索法として 「盲目的な試行錯誤」と「系統的な試行錯誤」があると いうことが書いてあったんですが、あまり詳しく説明してなかったので、 よく分かりませんでした。この違いをなるべく具体例を出して教えてくれませんか?

  • 高次元多峰性目的関数の数値最適化アルゴリズム

    高次元多峰性目的関数の数値最適化アルゴリズム 高次元で多峰性のある微分不可能な目的関数を ある制約条件の下で最大化するためのアルゴリズムを 調べていますが、たくさんあり過ぎて、結局どれが もっとも有効な手法なのかがわからないままです。 学会でのコンセンサスがどうなっているのか教えて 頂けないでしょうか? ※以下、補足的な内容です。 ちなみに、アルゴリズムとしては Artificial Bee Colony (ABC) Algorithm Bacterial Foraging Optimization (BFO) Differential Evolution (DE) Method 微分進化法 Downhill Simplex Method 滑降シンプレックス法 Genetic Alogorithm (GA) 遺伝的アルゴリズム Particle Swarm Optimization (PSO) 粒子群最適化 Simulated Anneling 焼なめし法 などがあるようです。ABCアルゴリズムの開発者の論文 Karaboga and Basturk (2007) ``A powerful and efficient algorithm for numerical function optimization: artificial bee colony (ABC) algorithm,'' J. Global Optimization 39, pp. 459-471. http://sci2s.ugr.es/EAMHCO/pdfs/ABC-algorithm-numerical-function-2007.pdf によると、ABCはGA、PSOよりも優れているという結果を 得ています(といってもGAとPSOのパラメータの設定等に 恣意性があるのでなんとも言えません)。ただ、自分で 書いた、Karaboga and Basturk (2007)が扱ったのよりも もっと複雑なGAでも同じように高次元になってくると 早熟収束が簡単に起きてしまうのでGAは信頼してません。 まだまだ発展分野というか何でも有りの研究分野っぽいので 次から次へと新しいアルゴリズムが提案されてすべてを カバーするのは不可能に近いと思います。既に認知されている 物の中でも高次元多峰性関数の最適化に適していると 考えられているアルゴリズムは一体どれなのでしょうか。 専門外の人間でただ数値最適化を行いたいだけなので、 あまりサーベイに時間をかけていられなくて、みなさんの お力をお借りしたいと思っています。 どうぞよろしくお願いします!

  • MATLABでのプログラミングについて

    はじめまして。 当方MATLAB初心者です。プログラムをどう組み込めばよいのかよく分かりません。 MATLABでPSO(粒子群最適化)のアルゴリズムを取り入れてシミュレーションを行ないたいと思っているのですが、 m-fileに直接書き込むにしても条件分岐などがあるので、どう書いたらいいのかよく分かりません。 C言語などで別に書いたプログラムを組み込んだりできるのでしょうか? 大学では制御の分野を学んでいるのですがMATLABにはほとんど触れた事がないです、質問もわかりにくいかも知れませんが、ご存知の方がいらっしゃるなら教えていただきたいです。

  • ディープラーニングのロジックがわかる具体例

    どうも おっさんです。 遺伝的アルゴリズムというものに興味をもち https://www.sist.ac.jp/~suganuma/kougi/other_lecture/SE/opt/GA/GA.htm 上記ページの 4.4 GAの適用例 を眺めて具体的なロジックがわかりました。 で、ここから本題ですが、遺伝的アルゴリズムに関係してると推測する「ディープラーニング」のロジックがわかりません。解説ページを見てみても複数階層のうんたらという定義というか言葉だけの説明、もしくはそのロジックが組み込まれたツールの使い方の解説ページだったりで、具体的な思考の流れがみえないのです。 上記URLの遺伝的アルゴリズムの解説ページのように具体例をあげてロジックを解説してくれてるページ、もしくはおすすめの本があれば教えてください。

  • GAのナップザックのベンチマークでの比較を行いたいのですが

    遺伝的アルゴリズム(GA)でナップザックの問題にとり組んでいます。自分の考えたアルゴリズムのレベルがどのくらいなのか知りたく、詳しい方法と結果のグラフが掲載されている論文と比較したいと思っているのですが、どうしても見つかりません。ナップザックのベンチマーク問題を解いたもので、その選択法・交叉法等と結果が詳しく書いてある論文が掲載されているHPアドレス等をご存知の方は教えてください。

  • 遺伝的アルゴリズムの評価式に関する質問です。

    膨大な数の組み合わせから正解の組み合わせを求めるという大規模組み合わせ問題があったとします。 このような問題を遺伝的アルゴリズムを用いて解こうとしているのですが、今用いている評価式より良いアイデアが自分では考えつかなかったため質問します。 以下、問題や用いている遺伝的アルゴリズムに関する詳しい説明です。 例えば、仮に、23, 21, 65, 78, 43, 78, 83, 56, 78 ,89 の10個の数の組み合わせがあるとき、 合計して109になる組み合わせ(23,21,65)を見つけたいという問題です。(正解の組み合わせは複数個あっても、一個見つかれば良い。また正解の組み合わせは必ずあるものとする。) この問題を遺伝的アルゴリズム(GA)を使って解くとします。 以下、簡単なGAの説明です。 表現型に2進数ビット列を用いる。 個体数は200とし、初期個体はランダムで生成する。 評価式はf(x) = b/(b+|b-t|)(bは正解の組み合わせの合計値で、tは2進数ビット列で1を立てた場所の数の合計値である。)。終了条件はこの評価値がf(x)=1になることである。 交叉は一様交叉で突然変異も行う。 表現型について詳しく説明すると、 コード化に 0と 1の並びである2進数ビット列を用いて、 その場所に対応する数を加算する場合は1を, 逆に加算しない場合は0を遺伝子の表現型に立てビット列を生成しました。 例えば今回の正解の組み合わせ(109)を2進数ビットで表すと下のようになる。 23, 21, 65, 78, 43, 78, 83, 56, 78 ,89 1 1 1 0 0 0 0 0 0 0 ←2進数ビットを用いた表現型。 (1が立っている場所の数が加算されて合計で109となり、これが正解の組み合わせであることがわかる。) そして、この遺伝的アルゴリズムの評価式を f(x) = b/(b+|b-t|) とします。(bは正解の組み合わせの合計値で、tはビット列で1を立てた場所に対応する数の合計値である。) 評価式f(x)=1になる、つまり正解の組み合わせが見つかれば、遺伝的アルゴリズムは終了する。 この評価式で遺伝的アルゴリズムを回しているのですが、この簡単な評価式では近似解に陥ったとき、解を求めるのがどうしても遅くなってしまいます。 全体的に長く、わかりにくい説明で申し訳ないのですが、この評価式の改善案、またはこの遺伝的アルゴリズムの改善案などがあれば教えていただきたいです。 以上、よろしくお願いします。

  • 二分探索アルゴリズムの終了条件について

    いつもお世話になっています。 現在他人のプログラムを読解する力をつけようと 訓練しています。 以下の文はとあるアルゴリズム本の2分探索の個所を 抜粋したものです。 int bs(*array, size, mokuteki) {   ue=size-1, sita=0;   while(1){     naka=(sita+ue) / 2;     if(array[naka] == mokuteki)       return ARU;     else if(sita > ue) //・・・・・・★       return NAI;     else {       if(array[naka] < mokuteki)         sita = naka+1;       else         ue = naka-1;     }   } } ここで★部分の終了条件なのですが、なぜ   sita >= ue でいけないのか自分では理解できません。 要はsitaとueが同じ値になり、目的値が見つからなかった のに再度ループする必要があるのか?、ということです。 特に明確な答えはいりませんがぜひ ご意見を聞かせてください。 ちなみに作者は 「ue==sitaの状態ならば、幅1の範囲がありますから  ループをもう一回実行する必要があります。」 と書いています。私には理解できません。 ちなみにこの本は「Javaで学ぶアルゴリズムとデータ構造」 という本です。だいたい一通り読みましたが読んでて 楽しいしわかりやすいし良書だと思います。高価ですが・・・。

  • C++でアルゴリズムの本を探しています。

    C++でアルゴリズムの本を探しています。 何かオススメの良い本はありますか? ガラーキン・スペクトル・差分法(陽・陰。。。) 空間離散化・時間進行系。 簡単にいいますと、ヘルムホルツ・粒子系・波動方程式・量子分子動力学法・2階の微係数の解法などの 支配方程式を数値的に解きたいので、色々な解法の載っているものを参考にしたいです。 宜しくお願いします。

  • ベッセル関数を含む超越方程式の解

    お忙しい所,回答の方お願いいたします。 私は現在,以下のようなベッセル関数を含む超越方程式 Xn*J1(Xn)=a*J0(Xn)(a:正定数,n=1,2,・・・) の任意の正定数aを設定した時の解Xnを得たいと考えています。 おそらく数値的に解くのだと思いますが,様々な数値計算プログラミングに関する本を調べているのですが載っておらず,悩んでいます。 私の今の考えはまず f(x)=x*J1(x)-a*J0(x)=0 の関数のプログラムを組んでグラフを作り,x軸と交わる位置から解の範囲を定めて,ニュートン法や2分法などを使用して解くというものです。 しかし,この方法に自信がありません。 もし「他に簡単な方法がある!」,「このやり方ではこういう点が難しく解けない!」などございましたら 回答の方,何卒よろしくお願いいたします。

  • 複数の輸送手段がある資材所要量計画

    こんにちは。 資材所要量計画において、製品をオーダーしてから、届くまでのリードタイムは1つに決定されている。ということは輸送手段がトラックにせよ、飛行機にせよなんらかの1つの輸送手段に決定されているということですよね。 それをサプライチェインマネジメントの観点で全体的コストの削減を考えたのですが、輸送手段が複数考えられる場合、例えば船と飛行機で、全部船、全部飛行機とすると輸送コストは明らかに違ってきますよね。 具体例を出すと、 飛行機容量10 船容量20 注文1 2 3 4 5 6 7 8 量  4 3 4 6 5 3 5 4 とすると、例えば、解表現;飛行機0船1 注文1 2 3 4 5 6 7 8 量  4 3 4 6 5 3 5 4 手段0 0 1 1 1 1 0 0 (注文1、2と注文7,8はまとめて飛行機、注文3,4,5,6はまとめて船) とできますよね。 輸送手段の組合せは2^8ありそうですが、実際は2*8で考えられるので、全列挙で問題ないのですが、 注文の組みあわせが、近似解を用いらなければ不可能です。(注文数8は余裕ですが) ここで問題なのが組合せの解表現です。 さっきの例ですと 注文 1 2 3 4 5 6 7 8 量   4 3 4 6 5 3 5 4 組合せ1 1 2 2 2 2 3 3 のようにして、同じ数字は同じ発送日かつ同じ輸送手段で、遺伝的アルゴリズムで攻めるというのは、適しているのでしょうか? やはり、GAは0と1のみの遺伝子表現で解が表現できないと有効ではないのでしょうか? うまい解表現はないでしょうか?