※記事内に商品プロモーションを含むことがあります。
はじめに
Pythonの最適化モデリングツールであるPyomoで、最適化モデルに定義された変数や制約、目的関数の数を取得するには、nvariables()
, nconstraints()
, nobjectives()
メソッドを用います(メンバ変数を用いる方法もあります)。Pyomoの変数や制約がベクトル化された状態でも対応できます。
検証環境は以下の通りです。
- Python 3.9.7
- Pyomo 6.4.1
Pyomoのインストール方法は以下の記事を参照ください。
Pyomoで線形計画問題を解く – Helve Tech Blog
リンク
対象とするPyomoモデル
以下のようにPyomoモデルを作ります。適当な線形計画問題です。
|
|
このモデルの変数は6個、制約は2個、目的関数は1個です。ここで、変数x0
, x1
, x2
はスカラー、x3
は3次元のベクトルです。
変数・制約の数の取得方法
変数と制約、目的関数の数を取得する方法は2つあります。1つはメソッドを使う方法、もう1つはメンバ変数にアクセスする方法です。どちらも同じ結果となります。
メソッド
メソッドを使う方法では、以下のようにnvariables()
, nconstraints()
, nobjectives()
メソッドを用います。
|
|
実行結果
|
|
これら3つのメソッドの内部では、次項で説明するメンバ変数にアクセスして、その内容を返しています。メソッドを使用した方が簡潔に書くことができます。
メンバ変数
メンバ変数を使う方法では、まずcompute_statistics()
メソッドを実行します。その後、statistics
に続けてnumber_of_variables
, number_of_constraints
, number_of_objectives
にアクセスします。
|
|
実行結果
メソッドを使う方法を同じ結果となりました。
|
|