CRAN Task View: Optimization and Mathematical Programmingの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。

Maintainer: Stefan Theussl, Florian Schwendinger, Hans W. Borchers
Contact: R-optimization at mailbox.org
Version: 2019-05-25
URL: https://CRAN.R-project.org/view=Optimization

このCRANのタスクビューは、最適化問題を解くための機能を提供するパッケージのリストが含まれています。統計のすべての回帰モデルは最適化問題を解決するが、それらは、このビューには含まれていません。あなたは回帰法を探している場合は、次のビューには有用な出発点が含まれます。MultivariateSocialSciencesとりわけRobust。このタスクビューの焦点は、Optimization Infrastructure Packages、General Purpose Continuous Solvers、Mathematical Programming SolversとSpecific Applications in Optimization である。パッケージは、これらの三つのセクションに分類されています。

多くのパッケージは、このタスクビューの最後に記載されている科目の複数のための機能を提供する。例えば、混合整数線形計画法ソルバーは、一般的に単体アルゴリズムのような標準的な線形プログラミングルーチンを提供します。このため、各パッケージの説明の以下の略語のリストは、オプティマイザ(すなわち、解決できる問題)の代表的な機能について説明します。角括弧内に与えられた略語の完全な名前は、Classification According to Subjectの下にこのタスクビューの最後に記載されています。

あなたには、いくつかのパッケージがリストにないと思われる場合、私に知らせてください。

最適化のインフラストラクチャパッケージ

  • optimxパッケージは、Base Rのoptim()関数の置換と拡張を提供し、単一の文でRの複数の関数最小化コードを呼び出します。これらのメソッドは、複数のパラメータまたは多数のパラメータのスムーズな、場合によってはボックスの制約付き関数を処理します。このパッケージの関数optimr()は、同じ構文でより多くの 「method」選択肢を指定してoptim()関数を拡張します。関数opm()は、いくつかのソルバを選択した最適化タスクに適用し、簡単な比較のために結果のデータフレームを返します。同様の機能を持ち、構文と出力がわずかに異なる初期のoptimx()関数は、互換性のために含まれています。また、保護されたニュートン法を含むいくつかのユーティリティコードと余分なソルバを実装します。
  • Rの最適化インフラストラクチャ(ROI)パッケージは、Rの最適化問題を処理するためのフレームワークを提供します。オブジェクト指向アプローチを使用して、さまざまな問題クラス(例:線形、線形計画問題)。これにより、対応するワークフローが下にあるソルバーから完全に抽象化されるため、Rユーザーにとって最適化が透過的になります。このアプローチにより、ソルバー間の切り替えが容易になり、比較可能性が向上します。より多くの情報はROI home pageにあります。
  • CVXRパッケージは、Disciplined Convex Programming(DCP)のオブジェクト指向モデリング言語を提供します。これにより、ユーザは、数学的な慣習とDCP規則に従って自然な形で凸最適化問題を定式化することができます。システムは問題を分析し、その凸性を検証し、正準形式に変換し、ECOSやSCSなどの適切なソルバに渡してソリューションを入手します。(CVXRは、スタンフォード大学で開発されたよく知られたMATLABツールボックスCVXに由来していますCVXR home page)。

汎用連続ソルバー

パッケージstatsには、いくつかの汎用最適化ルーチンが用意されています。1次元の拘束されていない関数の最適化のためには、最小または最大の区間を検索するoptimize()があります。関数optim()は、Broyden-Fletcher-Goldfarb-Shanno(BFGS)メソッド、CG、有界BFGS、共役勾配、Nelder-Mead、およびシミュレーテッドアニーリング(SANN)最適化メソッドの実装を提供します。提供されていれば、より速い収束のために勾配を利用する。通常は制約のない最適化に使用されますが、ボックス制約最適化のオプションが含まれています。さらに、線形不等式制約の対象となる関数を最小化するために、statsにはルーチンconstrOptim()が含まれています。次に、非線形制約のない最小化問題を解くために使用されるnlmがあります。最終的に、nlminb()は、PORTルーチンを使用した制約のない制約付き最適化を提供します。[RGA, QN]

  • パッケージlbfgsは、L-BFGSとOWL-QNアルゴリズムの両方をインタフェースするOkazakiとMorales(NocedalのL-BFGS-B 3.0 Fortranコードから変換された)によるlibBFGS Cライブラリをラップします。後者は特に高次元の問題に適しています。
  • lbfgsb3lbfgsb3cは、両方ともJ.NocedalのL-BFGS-B 3.0インタフェースFortranコード、制限されたメモリBFGS最小化機能、境界制約を許容し、高次の問題に適用可能です。(「lbfgsb3c」には 「Rcpp」に基づく「最適な」のようなインターフェースがあります。)
  • optimParallelは、optim()のL-BFGS-Bメソッドの並列バージョンを提供します。optimParallel()を使用すると、最適化時間を大幅に短縮できます。
  • RcppNumericalは、数値計算と「Rcpp」との統合のためのオープンソースライブラリのコレクションです。LBFGS ++ライブラリ(N. Okazakiのコードに基づく)に基づいて、L-BFGSアルゴリズムのラッパーを提供します。
  • 次のパッケージは、境界制約を持つ非線形関数に対して、純粋なRで最適化ルーチンを実装しています。
    • Rcgmin:GCに類似した勾配関数の最小化。
    • Rvmmin:可変メトリック関数の最小化。
    • Rtnmin:短縮されたニュートン関数の最小化。
  • ucminfパッケージは、信頼領域とライン検索手法を組み合わせた、非線形制約のない最適化のための準ニュートン型のアルゴリズムを実装しています。[QN]
  • mizeは、共役勾配 (CG)、Broyden-Fletcher-Goldfarb-Shanno(BFGS)および制限されたメモリBFGS(L-BFGS)メソッドを含む純粋なRで最適化アルゴリズムを実装します。ほとんどの内部パラメータは、呼び出しインタフェースを介して設定できます。
  • パッケージnloptrは、さまざまな非線形最適化アルゴリズムのLGPLライセンスライブラリであるNLoptへのアクセスを提供します。これには、ローカル非派生(COBYLA、Nelder-Mead、Subplex)およびグラジエントベース(BFGSなど)メソッド、および非線形制約のための拡張ラグランジアンアプローチが含まれます。[DF、GO、QN]
  • パッケージdfoptimは、Nelder-MeadアルゴリズムとHooke-Jeevesアルゴリズムの非常に効率的なR実装(無制約と境界制約)を含んでいます。[DF]
  • 滑らかな非線形目的関数(平等および不等式制約付き)を最適化するための拡張ラグランジュバリア最小化アルゴリズムの実装は、パッケージalabamaおよびRsolnpで見つけることができます。
  • NlcOptimは、線形および非線形の等価性および不等式制約を伴う非線形最適化問題を解決し、SQP(Sequential Quadratic Programming)メソッドを実装します。
  • パッケージRdonlp2(rmetricsプロジェクト参照)関数DONLP2ソルバーのラッパーであるdonlp2()は、滑らかな非線形関数と制約の最小化を提供します。DONLP2は、あらゆる種類の研究目的に自由に使用できます。それ以外の場合はライセンスが必要です。[GO、NLP]
  • clueは、逐次無制約最小化手法(SUMT)を介して制約付き最適化問題を解く関数sumt()を含みます。
  • BBは、単純な制約を伴う大規模な最適化のためのスペクトル投影勾配法を提供する関数spg()が含まれています。これは、非線形目的関数を基本的制約と同様に引数として取ります。さらに、BBは、方程式の非線形システムを解くためにスペクトル勾配法を使用するための2つの関数(dfsane()とsane())を含んでいます。
  • GrassmannOptimは、グラスマン多様体最適化のためのパッケージです。この実装では、グラジエントベースのアルゴリズムを使用し、グローバル検索に確率的勾配法を組み込みます。
  • ManifoldOptimは、’ROPTLIB’最適化ライブラリへのRインタフェースです。Stiefel、Grassmann、Symmetric Positive Definiteマトリックスなどの多岐にわたる実数値関数を最適化します。
  • パッケージgslは、BFGS、共役勾配、最急降下、およびNelder-Meadアルゴリズムを提供します。関数multimin()を使って “行の探索”アプローチを使用します。これはGNU Scientific Library(GSL)に基づいています。[RGA、QN]
  • パッケージmaxLikは、汎用のNewton-RaphsonオプティマイザmaxNR()と、メソッドへのラッパーをoptim()で実装しています。定数パラメータを指定することにより、サブモデルのフィッティングをサポートします。
  • Scilab neldermeadモジュールのRポートは、neldermeadにパッケージ化されており、シンプレックス方式に基づいたいくつかの直接検索アルゴリズムを提供しています。また、n1qn1は、制約のない準ニュートンBFGS法であるScilabのn1qn1最適化手順のRポートを提供します。
  • optimsimplexは、Nelder-Mead、Spendley、Boxメソッド、Torczonなどの多次元検索などの単体ベースの最適化アルゴリズムのビルディングブロックを提供します。
  • パッケージminqaは、いくつかの派生フリー最適化アルゴリズムが用意されています。関数bobyqa()、newuoa()、およびuobyqa()は、補間によって二次モデルを形成する信頼領域法によって多くの変数の関数を最小にすることを可能にする。bobyqa()はさらに、パラメータのボックス制約(境界)を許可します。[DF]
  • subplexは、部分空間検索シンプレックス法に基づく無制約の関数最適化を提供します。
  • パッケージtrustは、同じ名前のルーチンが、「信頼領域」アプローチに基づいてローカル最適化を行います。
  • trustOptimは、制約のない非線形最適化のための「信頼領域」アルゴリズムを実装しています。このアルゴリズムは、疎なヘッセ行列を持つ目的関数に対して最適化されています。これにより、時間とメモリの両方の占有面積の観点から、スケーラビリティと効率性が高いアルゴリズムになります。
  • パッケージquantregは、シンプレックスと内部ポイントルーチン(nlrq()、crq())のバリエーションが含まれています。関数rq()のRコードのL1回帰へのインタフェースを提供します。[SPLP、LP、IPM]

二次最適化

  • パッケージquadprog solve.QP()は、線形等価制約と不等式制約を持つ2次計画問題を解きます。(行列は正定値でなければならない)。quadprogXTは、これを目的関数の絶対値制約と絶対値で拡張します。[QP]
  • kernlabは、内点法を使った二次計画問題を解く関数ipopが含まれています。(行列は正の半正定値とすることができます)。[IPM、QP]
  • Dykstraは、正定値および準定値行列のR.L.Dykstraの循環投影アルゴリズムを使用して、二次計画問題を解決します。このルーチンでは、等価制約と不等式制約を組み合わせることができます。[QP]
  • osqpは、オプションの等価性と不等式の制約で疎な凸2次計画問題を解くことができる、「OSQP 」ソルバー、Oxford Control Group大学の「Operator Splitting QP Solver」にバインディングを提供します。[QP]
  • coneprojは、円錐投影法や二次計画法、制約付きパラメトリック回帰の推定と推論、形状限定回帰問題のルーチンが含まれています。[QP]
  • LowRankQP primal /二重内点法による二次計画問題の解法[IPM、QP]
  • COIN-ORプロジェクトのqpOASESは、半定型または縮退したQP問題に対処する場合でも、信頼できるQPソルバーを実装します。特にモデル予測制御(MPC)アプリケーションに適しています。ROIプラグインROI.plugin.qpoasesは、Rユーザーにアクセス可能にします。[QP]
  • limSolveは、等式や不等式の制約を受けて、線形または二次最適化関数を解くことを提供します。[LP、QP]

最適化テスト関数

  • グローバル最適化アルゴリズムのパフォーマンスをベンチマークする目的関数は、globalOptTestsにあります。
  • smoofパッケージは、ベンチマーク最適化アルゴリズムで頻繁に使用される多数の単一目的と多目的のテスト機能用のジェネレータがあります。
  • flaccoは、最適化問題のグローバル構造や分離可能性などのかなり複雑な特性を定量化できる連続最適化問題の探索的ランドスケープ分析(ELA)に使用されるツールと機能が含まれています。
  • cec2013およびcec2005benchmarkは、進化的計算に関するIEEE CEC会議での実パラメータ最適化に関する2005年および2013年の特別セッションからのグローバル最適化のための多くのテスト機能が含まれています。
  • パッケージfunconstrain(Github上)は、More、Garbow、Hillstomの35種類のテスト関数を実装しています。制約のない最適化メソッドをテストするのに便利です。

最小二乗問題

  • 関数solve.qr()(qr.solve())は、可能な限り、最小二乗解を返す線形方程式の過大および過小決定システムを処理します。また、パッケージ統計はnls()を提供して、非線形モデルのパラメータの最小二乗推定値を決定します。
    • nls2は、ブルートフォースまたはグリッドベースの検索機能を使用してnls()関数を拡張し、開始パラメータに依存しないようにするか、ローカルの解決策に慣れないようにします。
  • パッケージnlsrは、非線形最小二乗問題を扱うためのツールを提供します。関数nlfbとnlxbは、基底Rの「nls()」関数に代わって、境界制約を持つ非線形最小二乗法と、必要に応じてR関数として記述されたヤコビ行列に対してMarquardt手続きの変形を適用することを目的としています。(これは、現在廃止されているパッケージnlmrtに基づいています)。
  • パッケージminpack.lmは、Levenberg-Marquardtアルゴリズムの修正により、非線形最小二乗問題を解くための関数nls.lm()を提供し、MINPACKに見られるように、より低いおよびより高いパラメータ境界をサポートしています。
  • lseiパッケージは、線形等式/不等式制約下で、最小二乗線形回帰問題を解く関数が含まれています。二次計画問題を解くための関数も用意されています。これらの問題を最初に最小二乗法に変換します。(LawsonとHansonのFortranプログラムに基づいています。)
  • パッケージnnlsは、Lawson-Hansonの非負最小二乗アルゴリズムの実装にインタフェースし、非負の制約と非負の制約を組み合わせることができます。
  • パッケージbvlsは、Stark-Parkerの上界と下界変数を持つ最小二乗アルゴリズムの実装をインターフェースします。
  • パッケージonlsは、ODRPACK Fortranライブラリに基づくLevenberg-Marquardt型最小化アルゴリズムを使用して直交非線形最小二乗回帰(ONLS、a.k.a直交距離回帰、ODR)を実装します。
  • colfは、線形目的関数に対して最小自乗制約付き最適化を実行します。これには、選択するアルゴリズムがいくつか含まれており、lm()と同様の数式構文が用意されています。

半定値と凸面ソルバー

  • パッケージECOSolveRは、よく知られた効率的で頑強な凸状問題のCライブラリであるEmbedded COnic Solver(ECOS)へのインタフェースを提供します。混合整数問題の整数およびブール変数の制約に加えて、円錐定数および等価制約を指定することができます。
  • パッケージscsは、線形プログラム、円錐プログラム(SOCP)、および半正定値プログラムを解くための演算子分割を適用します。コーンは2次、指数関数、パワーコーン、またはこれらの任意の組み合わせです。
  • sdpt3rは、MATLABツールボックスSDPT3のR実装を使用して、一般的な半正定値線形計画問題を解きます。最近接相関行列、D最適実験計画法、距離加重判別法、最大カット問題などの問題を含みます。
  • cccpは、内点法(部分的にはPythonのCVXOPTから移植されている)を使って、円錐拘束凸問題を解くためのルーチンが含まれています。
  • CLSOCPパッケージは、二次コーンプログラミング(SOCP)問題の解決のためのワンステップ平滑化ニュートン法の実装を提供する。
  • CSDPは、半正定値プログラミング問題を解決するためのプライマリ – デュアルバリアメソッドを実装するルーチンのライブラリです。Rcsdpパッケージにインターフェイスされています。[SDP]
  • DSDPライブラリは、プライマリおよびデュアルソリューションによる半正定値プログラミングのための内点法を実装しています。パッケージRdsdpにインターフェイスされます。[SDP]
  • パッケージRmosekは、(非線形)円錐、半正定値、および凸面タスクに重点を置いて、大規模なLP、QP、およびMIP問題のための(市販の)MOSEK最適化ライブラリへのインターフェイスを提供します。学術ライセンスが利用可能です。(Rmosekに関する記事はJSSのR特集号の特別号に掲載されました。以下を参照してください)。[SDP、CP]

グローバルおよび確率的最適化

  • パッケージDEoptimは、Differential Evolutionアルゴリズムに基づくグローバルオプティマイザを提供します。RcppDEは、同じDEoptim()関数のC ++実装(Rcppを使用)を提供します。
  • DEoptimRは、非線形プログラミング問題のための差分進化確率的アルゴリズムのjDE変形の実装を提供します(これは、制約を柔軟に扱うことを可能にします)。
  • GenSAは、一般化されたSimulated Annealingのための関数を提供するパッケージであり、多数の最適化を伴う非常に複雑な非線形目的関数のグローバルな最小値を探索するために使用することができます。
  • GAは、連続アルゴリズムと離散アルゴリズムの両方で遺伝的アルゴリズムを使用した最適化のための関数を提供します。このパッケージでは、対応する最適化タスクを並行して実行できます。
  • パッケージgenalgは、多次元関数最適化のための遺伝的アルゴリズムの実装であるrgba()が含まれています。
  • パッケージrgenoudは、進化的アルゴリズムと微分ベース(準ニュートン)アプローチを組み合わせることによって、複雑な関数最小化/最大化問題を解くことができるルーチンであるgenoud()を提供します。
  • パッケージmcgaが提供する機械コード化遺伝的アルゴリズム(MCGA)は、変数のバイト表現に基づいて最適化の問題を解決するツールです。
  • Particle Swarm Optimizer(PSO)は、パッケージpsopsoptimに実装されています。PSOアルゴリズムの別の(並列化された)実装は、rforge.net/ppsoから入手可能なパッケージppsoにあります。
  • hydroPSOパッケージは、最新の標準パーティクル群最適化アルゴリズム(SPSO-2011)を実装しています。並列処理が可能で、いくつかの微調整オプションと後処理機能が含まれています。
  • hydromad (Github上)は、シンプレックス法と組み合わせた進化的アルゴリズムであるSCE(Shuffled Compex Evolution)最適化のためのSCEoptim関数が含まれています。
  • ABCoptimは、人工蜂コロニー(ABC)最適化を実装しています。
  • パッケージmetaheuristicOptは、パーティクル群、トンボとホタル、サインコサインアルゴリズムなどのいくつかの進化的最適化アルゴリズムの実装が含まれています。
  • ecrは、単一または複数目的の連続または離散最適化問題のための進化的アルゴリズムを構築するためのフレームワークです。
  • N.ハンセン(N. Hansen)のCMA-ESは、進化戦略に適応する共分散行列を用いた大域最適化手順であり、いくつかのパッケージで実装されています。
    • パッケージではcmaescmaesr、cmaesとしてparma、pureCMAESとしてadagio、Hansen自身のJava実装をインターフェースcmaOptimDPとしてrCMA
  • パッケージRmalschainsは、ローカルサーチチェーン(MA-LS-Chains)を持つmemeticアルゴリズムと呼ばれる連続最適化のアルゴリズムファミリを実装しています。
  • SOMA(Self-Organizing Migrating Algorithm)のR実装は、パッケージsomaで利用できます。この確率的最適化方法は、遺伝的アルゴリズムと幾分類似しています。
  • nloptrは、DIRECT、制御ランダム探索(CRS)、マルチレベルシングルリンケージ(MLSL)、確率的ランク付け(ISR-ES)、確率的グローバル最適化(StoGO)などのいくつかのグローバル最適化ルーチンをサポートしています。
  • NMOFパッケージは、微分進化、粒子群最適化、局所探索、閾値受理(シミュレーテッドアニーリングの変形)の実装を提供します。後者の2つの方法は、パッケージに含まれる遺伝的アルゴリズムの実装と同様に、離散最適化問題のためにも機能します。
  • SACOBRAは、予算が厳しく制限されている高価なブラックボックス機能の数値制約付き最適化パッケージです。COBRAアルゴリズムの拡張を実装し、初期設計の生成と自己調整ランダム再起動を実装しています。
  • RCEIMは、多次元関数最適化を実行するための確率的ヒューリスティック手法を実装します。

数学プログラミングソルバー

このセクションでは、オープンソースと商用オプティマイザの概要について説明します。特定のパッケージまたは関数によってどのタイプの数学的プログラミング問題が解決できるかは、角括弧内の省略形から見ることができます。Classification According to Subjectは、このタスクビューの最後にリストを表示します。

  • omprパッケージは、混合整数リニアプログラムをRで直接代数的にモデル化して解く最適化モデリングパッケージです。モデルはソルバーに依存しないため、さまざまなソルバを使用してモデルを解くことができます。(JuiaのJuMPプロジェクトに触発されました。)
  • linprogパッケージは、solveLP()関数(ソルバはlpSolve に基づいています)を使用して線形プログラミングの問題を解決し、MPS形式のモデルファイルを読み込むことができます。[LP]
  • bootパッケージは、(比較的小さな)線形プログラミング問題の2相tableau simplexメソッドを実現するsimplex()というルーチンがあります。[LP]
  • パッケージrcddは、GNU Multiple Precision (GMP)ライブラリを使用して厳密な算術を使って線形プログラムを解くための関数lpcdd()を提供します。[LP]
  • CEoptimパッケージは、連続および組合せ最適化問題のためのクロスエントロピー法に基づく最適化ソルバを提供します。これは、多極の問題を解決するために使用でき、線形制約を受け入れ、離散変数と連続変数を扱うことができます。[COP]
  • NEOS Server for Optimizationは、最先端の最適化問題ソルバにオンラインでアクセスします。パッケージrneosおよびROI.plugin.neosを使用すると、最適化問題をNEOSに渡し、R内の結果を取得できます。

オープンソース・オプティマイザのインタフェース

  • パッケージclpAPIは、RからCOIN OR Clpソルバー・ライブラリーの低レベルAPIルーチンへの高レベル・アクセスを提供します。[LP]
  • パッケージlpSolve は、自由に利用可能なソルバlp_solveを呼び出すことによってLPとMILPを解くルーチンlp()が含まれています。このソルバーは、改訂されたシンプレックス法とブランチアンドバインド(B&B)手法に基づいています。準連続変数と特別注文セット(SOS)をサポートしています。さらに、lp.assign()とlp.transport()はそれぞれ割り当て問題と輸送問題を解決することを目的としています。
    • さらに、lp_solveの低レベルAPIルーチンへのRインタフェースを提供するパッケージlpSolveAPIもあります(R-Forgeのプロジェクトlpsolveも参照してください)。
    • lpSolveAPIは、lpおよびMPS形式のファイルから線形プログラムを読み取ることをサポートしています。[BP、IP、LP、MILP、SPLP]
  • パッケージglpkAPIとパッケージRglpkは、GNU Linear Programming Kit(GLPK)へのインタフェースを提供します。前者は低レベルのルーチンへの高レベルのアクセスを提供しますが、後者はGLPKを使用してMILPを解決するための高レベルルーチンRglpk_solve_LP()を提供します。どちらのパッケージも、MPS形式で策定されたモデルを使用する可能性があります。[BP、IP、IPM、LP、MILP]
  • Rsymphonyは、混合整数リニアプログラムのためのSYMPHONYソルバーをインターフェースするルーチンRsymphony_solve_LP()があります。(SYMPHONYは、Computational Infrastructure for Operations Research(COIN-OR)の一部です)。Bioconductorのパッケージlsymphonyは、インストールが簡単なSYMPHONYと同様のインターフェースを提供します。[LP、IP、MILP]
  • NOMADソルバは、混合整数計画問題を解決するためのcrsパッケージに実装されています。このアルゴリズムはsnomadr()関数を介してアクセスでき、主にブラックボックス関数の制約付き最適化用に設計されています。
  • 「Clp」と「Cbc」は、COIN-ORスイートのオープンソースソルバーです。
    • 「Clp」は、連続的な目的変数を持つ線形プログラムを解くもので、ROI.plugin.clp から入手できます。「Cbc」は、強力な混合整数線形計画法ソルバ(「Clp」に基づく)です。
    • パッケージ「rcbc」は、rcbc (Github上)からインストールできます。[LP, MILP]

商用オプティマイザとののインタフェース

このセクションでは、商用ソルバーへのインターフェイスを調査します。通常、対応するライブラリは別々にインストールする必要があります。

  • パッケージcplexAPIRcplexは、IBM CPLEX Optimizerにインターフェースを提供します。CPLEXは、デュアル/プリミティブシンプレックスオプティマイザと、大規模な線形および二次プログラムを解決するバリアオプティマイザを提供します。これは、(おそらく非凸)MIQCPを含む困難な混合整数プログラムを解決するための混合整数最適化を提供します。CPLEXは無料ではなく、ライセンスを取得する必要があります。学者は要請に応じて無料のライセンスを受け取ります。[LP、IP、BP、QP、MILP、MIQP、IPM]
  • 商用ソルバーのAPI LINDOは、パッケージrLindoを介してRでアクセスできます。LINDO APIは、線形、整数、二次、円錐、一般的な非線形、大域的、および確率的プログラミング問題を解決することを可能にします。[LP、IP、BP、QP、MILP、MIQP、SP]
  • パッケージRmosekは、MOSEKの商用オプティマイザへのインタフェースを提供します。デュアル/プライマルシンプレックスオプティマイザとバリアオプティマイザを提供します。LPおよびQP問題を解決することに加えて、このソルバはSOCPおよび二次制約付きプログラミング(QPQC)タスクを処理できます。さらに、難解な混合整数プログラム(MILP、MISOCPなど)を解決するための整数型オプティマイザを提供しています。MOSEKからライセンスを取得する必要があることに注意してください。アカデミックライセンスは無料です。[LP、IP、BP、QP、MILP、MIQP、IPM]
  • Gurobi Optimizationは、5.0リリース以降、Rバインディングを出荷しています。これにより、R、R、MIP、QP、MIQP、SOCP、MISOCPモデルをRで解決することができます。詳細は、R with Gurobiのウェブサイトを参照してください。[LP、QP、MILP、MIQP]
  • localsolverパッケージは、Innovation 24のハイブリッド数学プログラミングソフトウェアLocalSolverへのインタフェースを提供します。LocalSolverは商用製品であり、要求に応じて学術ライセンスを利用できます。[LP、MIP、QP、NLP、HEUR]

組み合わせ最適化

  • パッケージadagioは、単一および複数のナップザック問題の関数を提供し、サブセットの合計と割り当てタスクを解決します。
  • パッケージclueは、solve_LSAP()を使用すると、ハンガリーのアルゴリズムの効率的なC実装を使用して、線形和割り当て問題(LSAP)を解くことができます。[SPLP]
  • FLSSSは、ターゲットの合計と要素の範囲、オプションの固定サイズの1次元および多次元ナップザック問題、バイナリナップザック問題、および厳密なアルゴリズムまたはメタヒューリスティックによる一般化された代入問題に対するオプション制約付きの固定サイズの1次元および多次元サブセット合計問題に対するマルチスレッドソルバーを提供します。
  • パッケージqapは、シミュレートされたアニーリングヒューリスティックを適用する二次割り当て問題(QAP)を解決します(他の方法もあります)。
  • グラフとネットワーク解析用のパッケージであるigraphは、非常に高速のigraph Cライブラリを使用しています。最短パス、最大ネットワークフロー、最小スパニングツリーなどを計算するために使用できます[GRAPH]
  • mknapsackは、「lpSolve」や「CBC」などのLPソルバに基づいて複数のナップザック問題を解決します。トップのナップザックの値ができるだけ大きい方法でアイテムをナップザックに割り当てます。
  • パッケージ「knapsack」(R-Forgeのプロジェクトのoptimistを参照)はMartelloとTothの書籍「Knapsack Problems」のルーチンを提供しています。(複数の)ナップザック、サブセット、およびビンパッキングに関する問題があります。(Fortranコードの使用は、個人研究および学術目的のみに限定されます。)
  • nildeは、線形ディオファンタス方程式のすべての整数解、ナップザックのすべての解、部分集合の和、および加算的な分割問題(生成関数アプローチに基づく)を列挙するルーチンを提供します。
  • matchingRmatchingMarketsは、安定した結婚と大学入学問題、安定したルームメイトと家割当て問題のためにGale-Shapleyアルゴリズムを実装しています。[COP、MM]
  • optmatchパッケージは、問題を解決するためのルーチンを最小コストの問題に変換し、BertsekasとTsengのRELAX-IVコード(研究のために無料)によって最適に解決されます。[SPLP]
  • パッケージTSPは、営業担当者の問題(TSP)を処理し、解決するための基本的なインフラストラクチャを提供します。メインルーチンsolve_TSP()は、いくつかのヒューリスティックを通じてTSPを解きます。さらに、Concorde TSP Solverへのインターフェースを提供します。これは別途ダウンロードする必要があります。[SPLP]

最適化における特定のアプリケーション

  • パッケージcaRamel内の関数caRamelは、多目的進化的アニーリング – シンプレックス(MEAS)法と非優性ソーティング遺伝的アルゴリズム(NGSA-II)の組み合わせを適用する多目的オプティマイザです。それは当初、水文学モデルの較正のために開発されました。
  • 遺伝的アルゴリズムを実装するパッケージmcoを使用して、複数の基準最適化の問題を解決できます。[MOP]
  • データクローニングアルゴリズムは、グローバル最適化手法と、パッケージdcloneで実装されているシミュレーテッドアニーリングの変形です。このパッケージは、データクローニングとベイジアンマルコフ連鎖モンテカルロ法を用いた複雑なモデルの最尤推定手順を実装するための低レベル関数を提供します。
  • iraceは、他の最適化アルゴリズムのパラメータを最適化するための最適化アルゴリズムが含まれています。この問題は「(オフライン)アルゴリズム構成」と呼ばれます。[GO]
  • パッケージkofnGA は、遺伝的アルゴリズムを使用して整数1:nから固定サイズkのサブセットを選択し、ユーザが提供する目的関数がそのサブセットで最小化されるようにします。
  • copulaedasは、コピュラに基づいた「分配アルゴリズムの推定」(EDA)が実装され、研究されることができるプラットフォームを提供する。パッケージはさまざまなEDAを提供し、S4クラスを拡張することで新しく開発されたEDAを統合することができます。
  • tabuSearchは、バイナリ文字列を最適化するためのタブー検索アルゴリズムを実装し、ユーザ定義のターゲット関数を最大化し、見つかった最良の(すなわち最大化する)バイナリ設定を返す。
  • パッケージisotoneは、一般的なアイソトーン回帰の問題を解決するための機能のほかに、任意の順序制約を伴うアイソトーン最適化問題のアクティブセットメソッドのフレームワークを提供します。
  • mlrMBOは、ベイズ最適化とも呼ばれる、モデルベースの最適化(MBO)のための柔軟で包括的なRツールボックスです。また、rBayesianOptimizationは、パラメーターのチューニングとハイパーパラメーターの最適化のために、ガウスプロセスによるベイジアングローバル最適化の実装です。
  • desirabilityパッケージは、Derringer and Suich(1980)が記述した関数形式を用いたHarrington(1965)のdesirability関数アプローチを用いた多変量最適化のためのS3クラスが含まれています。
  • パッケージsnaは、いくつかの二変量グラフ統計を最適化する一連のヒューリスティックルーチンのフロントエンドである関数lab.optim()が含まれています。[GRAPH]
  • maxLikは、Brendt-Hall-Hall-Hausman(BHHH)やNewton-Raphsonのような多数の最大化ルーチンの上に尤度特有のレイヤーを追加します。ヘッセ行列に基づいて標準誤差を抽出し、最大化アルゴリズムの簡単な交換を可能にする要約および印刷方法を含む。また、分析微分値が直接計算されるかどうかをチェックする機能も提供します。

科目別分類

以下は、パッケージ別の概要を提供する試みです。被験者の氏名および対応するMSC 2010 コード(利用可能な場合)は括弧内に記載されています。

関連する記事

  • R言語 CRAN Task View:自然言語処理R言語 CRAN Task View:自然言語処理 CRAN Task View: Natural Language Processingの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載した。 Maintainer: Fridolin Wild, Performance Augmentation Lab (PAL, Department of Computing and […]
  • カイ二乗検定 – 適合度検定カイ二乗検定 – 適合度検定 適合度検定とは、観測度数分布が期待度数分布と同じかどうかを統計的に確かめる方法である。 適合度検定を行う手順は次の通りである。 仮説を立てる。 帰無仮説 H0:観測度数分布と期待度数分布が同じ。 対立仮説 […]
  • UbuntuにRをインストールするための手順UbuntuにRをインストールするための手順 UbuntuにRをインストールするための手順をお伝えする。 Ubuntuのバージョン確認 Ubuntuのバージョンを確認するために、端末を起動し(ショートカットキー:Ctrl+Alt+t)、以下のコマンドを実行する。 DISTRIB_CODENAMEの行を控えておこう。下の内容では「trusty」の部分を控えておく。 $ cat […]
  • R言語 CRAN Task ViewsR言語 CRAN Task Views CRANに登録されているパッケージ数は膨大です。そこで、いくつかのグループにパッケージを分類し整理されたCRAN Tack Views というサイトがあります。ここでは、英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Bayesian(日本語訳) Bayesian […]
  • R言語 CRAN Task View:水文データとモデリングR言語 CRAN Task View:水文データとモデリング CRAN Task View: Hydrological Data and Modelingの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Sam Zipper, Sam Albers, Ilaria Prosdocimi Contact: samuelczipper at […]
R言語 CRAN Task View:最適化と数理計画

One thought on “R言語 CRAN Task View:最適化と数理計画

Comments are closed.