
ExcelとLpSolve
目的
最適化問題の解法としてよく用いられる混合整数計画法(MIP)。MIPはソルバーでも解くことができますが、ソルバーには決定変数の数が200まで(200変数を超えるとエラーになる)という制約があるので、無償で利用できるLpSolveをExcelから利用できるようにしておくとなにかと便利です。
要件
ExcelからLpSolveを呼び出して混合整数計画を解く
lp_solve_5.5.2.11_excel.zipおよびlp_solve_5.5.2.11_dev_win32.zipまたはlp_solve_5.5.2.11_dev_win64.zipをダウンロードしてdemo.xlsおよびlpsolve55.dllを入手する
https://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.11/
demo.xlsとlpsolve55.dllは同じフォルダに格納する
使い方はdemo.xlsのプログラムソースやAPIリファレンスを参照する
https://lpsolve.sourceforge.net/5.5/lp_solveAPIreference.htm
ユーザインタフェース
demo.xlsのサンプルを少し変更して次のような混合整数計画問題を考えます。
決定変数:x1 , x2 , x3 , x4 , x5(非負)
目的関数:2 x1 + 3 x2 - 2 x3 + 3 x4 + 3 x5 → 最大化
制約条件
c1:0.5 x1 + 4 x2 + x3 + 2 x4 + 3 x5 >= 3
c2:x1 + 2 x2 + x3 + x4 + 2 x5 = 8
c3:4 x1 + x2 - 2 x3 + 2 x4 - 2 x5 <= 5
x4は整数、x5はバイナリ
x5 <= 5.3 , x2 >= 2
この問題を記述できるユーザインタフェースとして次のようなシートを用意します。水色ハッチング部分は変数名および制約条件名ですがおそらく日本語に対応していないので半角英数で記入します。黄色ハッチング部分には混合整数計画問題を解いたあとに最適化結果である決定変数や目的関数の値を入力します。

結果
実際に最適化実行した結果がこちらです。

決定変数の列や制約条件の行を挿入すればある程度問題の拡張にも対応可能です。

最後に
以下はプログラムソースとファイルを添付していますが、再利用目的の意味合いが強いのでカギをかけておきます。笑
ここから先は
¥ 300

この記事が気に入ったらチップで応援してみませんか?