No.3ベストアンサー
- 回答日時:
作ってみた
https://gist.github.com/otaks/3c6eebea260ce1296d …
各遺伝子は5要素の配列から成っており、
[3][2][1][0]を2進数に見立てて、これを10進数に変換し
[4]を元に符号をつけている。
ユーザ入力は以下を参考に。
(平方完成後の値を入力するようになっています)
y=a(x+q)2+q
(minx<=x<=maxx)
50世代ぐらい回せば正解が出そう。
中学校当たりの問題は解けそうだけど、今の作りだとxが-15~15しか
表現できないし、精度は整数レベルなので、より難しい問題を解くならば
改造が必要。
回答ありがとうございます!
プログラムの説明も入れてもらいありがとうございます。
すいません、失礼なんですが自分の端末でプログラムを実行したところエラーがでてしまいました・・・。
niji.c: In function ‘getDeci’:
niji.c:34: error: ‘for’ loop initial declarations are only allowed in C99 mode
niji.c:34: note: use option -std=c99 or -std=gnu99 to compile your code
niji.c: In function ‘calcIndividual’:
niji.c:51: error: ‘INT_MIN’ undeclared (first use in this function)
niji.c:51: error: (Each undeclared identifier is reported only once
niji.c:51: error: for each function it appears in.)
niji.c:45: 警告: unused variable ‘item’
niji.c: In function ‘main’:
niji.c:162: 警告: unused variable ‘item’
すいませんバグ取りができないのでお手数ですが見てもらってもよろしいでしょうか...?
No.5
- 回答日時:
No.4
- 回答日時:
そもそも、なぜGAを使って1パラメータの2次関数の最小値を求めたいのですか?
というのも、このような単調な解空間での最適値を求める問題は、
ヒューリスティックアルゴリズムの中でもGAは最も適していない方法の一つだと思います。
No.2
- 回答日時:
C言語が素人なのに、何故C言語とGAで求めたいのかが疑問なのですが……
それはさておき
C言語ができないのは分かりましたが、GAで最小値を求める方法はご存知なのですよね?
まず、その方法(というか仕様)をご提示ください。
ぱっと考えただけでも以下の不明点があります(他にもあるかもしれません)
・対象の2次関数をどうやってプログラムに与えるのか?
・2次関数f(x)において、xの範囲はどうするのか、それをどうやってプログラムに与えるのか?
・個体数は幾つか? それをどうやってプログラムに与えるのか?
・遺伝子として、何の情報をどのような表現で表すのか?
・それに伴い、淘汰、変異および交叉をどのような方法・確率で行うのか?
・何世代の計算をおこなうのか、それをどうやってプログラムに与えるのか?
何方かがC言語のプログラムを提示したいと思っていたとしても、仕様が不明ではプログラムを作成しようがありません。
お急ぎであるならば、それこそ詳しい仕様のご提示が必要となります。
No.1
- 回答日時:
> C言語と遺伝的アルゴリズム
この2つは、別のカテゴリーのものです。
C言語で書かれた遺伝的アルゴリズム、というのも有ります。
まずは「2次関数の最小値を求める方法」を考えて、それをC言語で書きます。
y=ax^2 + bx + c ただし、 t≦x≦s
のときの最小値の求め方、わかりますよね?大学入試とかでも出てきますから。
一番簡単なのは、それをそのままC言語の条件分岐と計算式で書くことです。
他にも、数値解析的に解くとか、微分して増減表を作って解くとか、それこそ「遺伝的アルゴリズム」で解くとか。
そもそも、解き方の違いを明確にするものならば、C言語である必要はないはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PICマイコンのコピー(クローン...
-
Excelで4096点以上のFFTの方法
-
Dドライブ、アンインストール
-
VC++コンソールアプリでウイン...
-
COBOLの連絡領域について
-
あるプログラムのコマンドライ...
-
ポケコンSHARP PC-G801 の使い方
-
powered byの表記について
-
C#を使って…
-
XPでBorandC++5.5でコンパイル
-
激しくカテ違いかもしれません...
-
べき乗
-
BC++6.0で暴走
-
フォルダを閉じてから再実行し...
-
英語曲名の表示方法
-
数学の図系の領域のプログラム...
-
自作のプログラムがウイルスと...
-
VB6のWScript.Shellについて
-
クリックするとページ内で説明...
-
Scratchの足し算の合計値が10以...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
ゲーミングPCに入っているAlris...
-
Excelで4096点以上のFFTの方法
-
PICマイコンのコピー(クローン...
-
自動クエリとはどういうもので...
-
VBAにてメール作成した際、一部...
-
読み込み中にアクセス違反が発...
-
「Outlookが他のプログラムによ...
-
Excelに埋め込んだVBAのプログ...
-
VBAでユーザーフォームが自動的...
-
XnViewにwebpを「いつも開く」...
-
画像を読み込むのと取り込むの...
-
ドロップダウンリストの文字を...
-
CASLIIのプログラム(並び替え...
-
binファイルってiphone専用です...
-
モジュール、アプリケーション...
-
excelのexe化について
-
未使用の変数を一括検索する方法
-
クリックするとページ内で説明...
-
Vba UserFormを前面に出す方法...
おすすめ情報
補足失礼します。
・関数はy=(x-1)^2+2
・親個体は(-10<=X<=10)の中から選択
この設定でお願いします。
遅くなってすいません、補足します。
今回はアルゴリズムを作成せうる練習として、2次関数を例として取り組むのが目的でした。
プログラムを実行することができました!
それと関数を少数対応のものにしたいです。ご教授お願いします。