7

R に非線形整数最適化を処理するパッケージがあるかどうかを知りたいです。

「基本的に」、次の問題を解決したいと思います。

max f(x) s.t x in (0,10) and x is integer.

一部の分岐アルゴリズムがこの問題の線形バージョンを処理できることは知っていますが、ここでの関数f()はより複雑になる可能性があります。(それが の二次方程式になるかどうかさえ確認できませんf(x)=xQx)。

制限されている限り、すべての可能性をテストする力ずくのソリューションが常にあると思いますが、もっと賢いものはないかと思っていました。

4

4 に答える 4

8

rino私はあなたにいくつかの選択肢がありますが、あなたの銀の弾丸がプロジェクトの下で作業中であるように見えますが、それらのどれも銀の弾丸ではありません:http: //r-forge.r-project.org/projects/rino/

関数が複雑なため、遺伝的アルゴリズムを使用することをお勧めします(つまり、勾配ベースのオプティマイザーは信頼できない場合があります)。genoudライブラリ内でrgenoudトリックを実行する場合があります(リンクテキスト)。あなたが設定した場合data.type.int=TRUE、それはトリックを行う必要があります。私はこのライブラリを使用していませんが、MATLABでGAを使用した経験があり、収束までの時間は設定に依存するため、manページを数回読むと十分に役立ちます。

または、関数が厳密に凹型である場合(複雑である可能性があるため、可能性は低いですが)、勾配ソルバー(たとえば)を使用して解くことができます。optim次に、最適な近傍をチェックします(2 ^nポイントを超えてチェックすることはできません)。 )。

申し訳ありませんが、これ以上お役に立てることはありません。

于 2010-07-13T13:43:36.853 に答える
4

それがほとんど非線形でない場合、ブルート フォースよりも優れた方法はありません (最小値が局所的であるか、平坦に見えるフラグメントに狭くて深い谷がないかどうかはわかりません)。関数が複雑すぎるために機能しない) またはソフト コンピューティング、つまり遺伝的アルゴリズム、モンテカルロ、群れなどを意味します (ここでは、非常にグローバルな最小値を見つけるという保証はありません。整数 x 総当たりよりも遅くなる可能性があります)。

于 2010-07-13T08:25:32.607 に答える
3

http://cran.r-project.org/web/views/Optimization.htmlRdonlp2には、パッケージとRsolnp適切なパッケージがリストされています。

于 2010-07-13T09:40:38.153 に答える
2

離散充填関数法は、約100個の制約と変数を使用した非線形整数計画法のグローバルソリューションを見つけることができる最近の方法の1つです。

于 2011-08-27T20:04:50.223 に答える