Closed4
Rust で線形計画問題ソルバーを自作する

0. Rust で自作する線形計画問題ソルバー
- PuLP ライクなモデリングのためのインターフェース
- 線形計画問題を解けるところまで
目的
- 単体法の復習(不等式標準形への変換やピボット演算など)
- 2段階単体法や主双対内点法を勉強して実装してみたい、、、!
理念?的な
- モデリングから求解まで一貫して Rust で
- 外部ライブラリ非依存 (use only std)

1. 基本的なインターフェースの作成
まずユーザインタフェースを実装。
基本的には PuLP のインターフェースに沿わせる形で進めていく。

変数を表現する(文字列のラッパーの)Variable 構造体と多項式を表現する Polynomial 構造体を実装。
- Variable 構造体同士の足し引きや i32 との四則演算で Polynomial を返すようにする。
- Polynomial に関する演算は全部 Polynomial を返す。

ref: https://coin-or.github.io/pulp/CaseStudies/a_blending_problem.html
PuLP では多項式同士を比較演算子で評価することで等式/不等式制約を表現する。でも Rust の PartialEq トレイトは必ず真偽値を、Cmp トレイトは Ordering を返すことを強制するので、PuLP のインターフェースを再現するのは難しそう。
手続き型マクロが解決策の一つらしい。
このスクラップは2ヶ月前にクローズされました