
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 経済学 マクロ経済学の「政府支出乗算」の求め方が分かりません。 10 2022/11/20 16:47
- C言語・C++・C# プログラム内から、MIDIファイルの一部分だけを再生する方法 1 2023/02/15 11:08
- C言語・C++・C# c言語で自然数nを入力、2以上n以下の偶数の累積sumを求めるプログラムをfor文を使って作りたいで 4 2022/11/09 14:10
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(言語学・言語) ピダハン語 2 2022/07/14 12:41
- 数学 【 数I 2次関数 最大・最小 】 問題:関数y=x²+2x+c (-2≦x≦2)の最大値 が5であ 3 2022/06/19 08:41
- C言語・C++・C# C言語について。 3 2022/11/05 20:30
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- 数学 大学数学の問題です。 条件 (x/a)^2+(y/b)^2+(z/c)^2=1 のもとで、f(x,y 3 2023/05/01 11:28
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで4096点以上のFFTの方法
-
あるプログラムのコマンドライ...
-
Vba UserFormを前面に出す方法...
-
powered byの表記について
-
クリックするとページ内で説明...
-
未使用の変数を一括検索する方法
-
複数のexeファイルの同時セット...
-
ドロップダウンリストの文字を...
-
C言語で、文字をbmp形式の画像...
-
VBAにてメール作成した際、一部...
-
UWSCで指定のフォルダを開きたい。
-
なぜ高速フーリエ変換は画像の...
-
main関数を先頭に置くデメリット
-
ゲームのBGM
-
MATLABで二次元フーリエ変換
-
フーリエ変換のプログラム
-
画像を読み込むのと取り込むの...
-
このVBAの意味を教えて下さいm(...
-
独自拡張子にアイコンの設定
-
LINUX用CプログラムのWindows移...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
Excelで4096点以上のFFTの方法
-
VBAにてメール作成した際、一部...
-
Vba UserFormを前面に出す方法...
-
PICマイコンのコピー(クローン...
-
ドロップダウンリストの文字を...
-
XnViewにwebpを「いつも開く」...
-
「Outlookが他のプログラムによ...
-
Excelに埋め込んだVBAのプログ...
-
読み込み中にアクセス違反が発...
-
WORD印刷できるがEXCE...
-
未使用の変数を一括検索する方法
-
モジュール、アプリケーション...
-
VBAでユーザーフォームが自動的...
-
画像を読み込むのと取り込むの...
-
excelのexe化について
-
クリックするとページ内で説明...
-
exeファイルしかないプログラム...
-
TMBMSRV.exeによるCPU使用率上昇
-
javaで特定の文字のカウントを...
おすすめ情報
補足失礼します。
・関数はy=(x-1)^2+2
・親個体は(-10<=X<=10)の中から選択
この設定でお願いします。
遅くなってすいません、補足します。
今回はアルゴリズムを作成せうる練習として、2次関数を例として取り組むのが目的でした。
プログラムを実行することができました!
それと関数を少数対応のものにしたいです。ご教授お願いします。