• 締切済み

シミュレーテッドアニーリングによる組み合わせ最適化問題

pythonで最適化問題について学んでいます。 1から7の7つの数字からから5つの数字をを取り出すプログラムを書こうと思っているのですが、このときにその取り出す5つの組み合わせがなるべく強い組み合わせ(大きな数字)になるようにプログラムしたいのです。できればシミュレーテッドアニーリングのアルゴリズムを使ってプログラムしたいのですが、どうもよく分かりません。 pythonでなくC++でもjavaでもいいので、良い方法、書き方などあったら教えてください。

みんなの回答

  • TALLY-HO
  • ベストアンサー率29% (103/354)
回答No.1

質問者さんが欲しい答えが今ひとつわかりにくいです。 ・アニーリング自体がよくわからない ・評価関数をどうすればいいかわからない ・プログラムの全体の流れがわからない ・プログラミングそのものがよくわからない などなど色々考えられるのですが、疑問点は何でしょうか? 補足して頂ければ回答があつまりやすくなると思います。 ちなみにアニーリングのアルゴリズムを簡単に言いますと、 局所的最適解に落ち着かないようにすることでなるべく 広い範囲を探索できるようにし、より最適解に近づこう とする方法です。 少しぐらい前回より評価が悪くてもそいつを採用してみよう! というわけですね。どれぐらいまでなら悪くなっても 採用するかの基準が、温度によって変わります。

koo300
質問者

補足

丁寧な返信をありがとうございます。 評価関数をどうすればいいのか分からないのです。 AIMAでのサンプルコードがあるのですがhttp://aima.cs.berkeley.edu/python/search.html#best_first_graph_search それを参考にして7つの数字の中から5つの最適解を出していくための評価関数の書き方を教えていただきたいのです。

関連するQ&A

  • 組み合わせ問題のアルゴリズム

    あらかじめ用意された整数を足して、その合計がある指定された整数と等しくなる組み合わせの数を調べるプログラムを書こうとしているのですが、苦労しています。 具体例がないと伝わりにくいかもしれないので例をあげると、 例えばあらかじめ用意された整数というのが 1・1・2・2・5・8 の4つで、 指定された整数が10である場合は、 8と2 8と1と1 5と2と2と1 という3通りの組み合わせがあるので、3を出力したいというわけです。 今まではもっと単純なアルゴリズムしか考えてこなかったので、こういった組み合わせのような問題が難しく感じられます。 こういう場合、アルゴリズムはどのようなものが考えられるでしょうか。 よろしくお願いします。

  • 組み合わせの問題

    9つの数字から4つの数字の組み合わせと9つの数字から5つの数字の組み合わせの数は同じでしょうか? (1,2,3,4)と(4,3,2,1)は使われている数字が同じなので1つと数えます。 数式では 9C5=126 9C4=126 これであっているのでしょうか? なぜ同じになるのでしょうか? 私の計算ミスかな?

  • 組合せ問題

    組合せの問題です 以下の10個の数字のうち、5個を任意に選んで合計が「19」となる組合せはいくつあるか。 1,1,2,2,3,3,4,4,5,5 これを計算で求めるにはどうしたらよいでしょう? ※ この問題では合計「19」で、選択する数字も10個(重複2個迄)しかありませんが、これが大きい数字となるととても場合分けで上げきれません。

  • 組み合わせの問題

    組み合わせの問題です。 5×5(縦5マス、横5マス)のマスがあります。 そのマス(全部で25マス)に1から5までの数字を5つずつ当てはめます。ただし、縦にも横にも同じ数字が1つとなるようにします。 このような組み合わせは何通り存在するでしょうか? よろしくお願いします。

  • 組み合わせについて?

    QNo.831096で質問したxylocaineです。いまいち理解できていない部分があるので教えて下さい。 質問内容は 9つの数字から4つの数字の組み合わせと9つの数字から5つの数字の組み合わせの数は同じでしょうか? (1,2,3,4)と(4,3,2,1)は使われている数字が同じなので1つと数えます。 数式では 9C5=126 9C4=126 これであっているのでしょうか? なぜ同じになるのでしょうか? でした。 新たな疑問(1)は126で同じになったのは偶然でしょうか? 例えば10C4と10C5は同じ数の組み合わせになるとか、何か同じになる法則があるのでしょうか? 新たな疑問(2)は9C4=126の組み合わせは全て9C5=126の組み合わせに含まれるのでしょうか? 例えば(1,2,3,4)は(1,2,3,4,5)に含まれますよね? 例えば(6,7,8,9)は(5,6,7,8,9)に含まれますよね? このように全て9C4=126の組み合わせは全て9C5=126の組み合わせに含まれるのでしょうか? 解かりやすく噛み砕いて説明していただけると嬉しいです。 宜しくお願いします!

  • 組み合わせの問題の解き方を教えて頂けますか?

    組み合わせの問題の解き方を教えて頂けますか? Q.9人を3人ずつの3組に分ける時、何通りの組み合わせがあるか 解答では 1680/3×2×1=280(通り) とあるのですが、なぜそうなるのかが分かりません。 私は 9C3×6C3、 9×8×7/3×2×1  ×  6×5×4/3×2×1 = 1680(通り) と解いて間違いました。 よろしくお願いします。

  • 組み合わせ?の問題です

    五人の旅行客がA,B,Cそれぞれの宿に泊まる方法は何通りあるでしょうか?ただし,一人も宿泊しない宿があっても良い。 考え方がまるで分かりません。答えは243通りらしいのですが...組み合わせ問題の解き方のポイントを教えてください。

  • 組み合わせの問題です。大学受験問題

    よろしくお願い致します。組み合わせの問題で、いまいち納得できないところがあります。正直、場合の数、順列、組み合わせが問題を読んだだけではよくわかりません。例えばさいころ二つあった場合、それを区別するのかどうかわからないことがよくあります。 問題、 6人を次のグループに分ける方法は何通りあるか? 1、4人、二人、 2、Aグループ2人、Bグループ2人、Cグループ2人 3、二人、二人、二人、 1はわかりました。ですが、2と3の答え、解法がいまいち納得できません。 解答は、2、6C2×4C2×1=90 3、90/6=15 です。 2の解法について、○C○は、順列(○P○)でなく、組み合わせの求め方だと思います。どうして、ここで、○C○で、順列が求まっているのでしょうか? 2、と3を比較すると、2が順列、3が組み合わせを聞いているのだと思います。でも、2、6C2×4C2×1=90は組み合わせだと思うので、これだと、3の答えになると思います。そして、2の答えだと、並べ方を考えて、90×6としてしまいます。 解答が間違っているとは思いませんが、どうして、2、6C2×4C2×1=90で、2の答えとなるのかがわかりません。 基本だとは思いますが、よろしくお願い致します。

  • 組み合わせの問題

    すみません。 わからないので教えていただきたいです。 36個数字が並んでいます。 数字は、全て1か2です。 1,1,1,1のように同じ数字が並んでいても構いません。 何通りの組み合わせができますか?? この場合、どのように計算したら良いのでしょうか。

  • ヒントのない問題(組合せ)

    「題意からは何を(どっちを)問いたいのか判断ができないな」と悩む問題がでてきました。 問 1から10までの10個の整数から、5個の整数を選んで5個の組を作る。このとき、最大値が8の組は何通りあるか。 ☆僕が思いついた解き方 最大値が8ということは、あとの4つは1~7から選ぶわけだから、純粋に8C5で解けるはず。もしくは、8P5で解けるはずだ。 ↓ 問の題意は、「何通りあるか」なわけだから、123でも132でも 別々のものと捉えて、総じて「全部で何通りか」と問いていると解釈するのが自然である。 ↓ よって、正しい解き方は8P5である、と考えました。 ☆テキストの解説 まず8を選んで、あとの4つは1~7から選べばよいので、7C4 =35通りが正解。 ☆テキストの解説を読んで感じた疑問点 7C4では、「123」「132」を同じものとして捉えた場合に使う式であり、この問題では「何通りあるか」と問いてはいても、決して「組合せはいくつあるか」とは問いていない…よって、7C4は不適切であると感じています。 また、仮にこのCが正しかったとしても、8C5ではダメで7C4なら正しいという理由がないと感じています。なぜなら、8C5は、1~8のうち5個を選び抜き出す、という式にちゃんとなっています。 7C4だと、5つ並ぶ数字のうち、8の位置が無視されているため、不適切であると感じています。 「組合せはいくつあるか」ではなく、わざわざ「何通りあるか」という表現をしている問本文が最大のヒントだと思いましたが、どうやらそれは違っているようです。しかし、選び方ではなく組合せをここでは問いている、というヒント(証拠)がないため、これ以上は解き手には判断のしようがありません。 正しい解き方はなぜ正しいのですか。また、何をヒントにどれが正しいと見極めればよいのですか。いくら勉強をしても、その問題問題によってパターンが全く違うため、勉強になっていないということに困っています。よろしくお願いいたします。

専門家に質問してみよう