【最適化手法検討ノート】第4章:多目的計画

1. 多目的プログラミングの基本概念

1.1 ベクトルの順序

a = ( a 1 , a 2 , ⋯ , a n ) \boldsymbol{a} = (a_1, a_2, \cdots, a_n) ある=(a1 ある2 あるn ), b = ( b 1 , b 2 , ⋯ , b n ) \boldsymbol{b} = (b_1, b_2, \ cdots、b_n) b=(b1 b2 bn ), 定义:

  • ∀ i ∈ { 1 , 2 , ⋯ , n } \forall i \in \lbrace 1,2,\cdots,n \rbrace i{ 12n}, 都有 a i = b i a_i = b_i あるi =bi , 则称向量 a \boldsymbol{a} a等于向量 b \boldsymbol{b} b, 记作 a = b \boldsymbol{a} = \boldsymbol{b} ある=b
  • ∀ i ∈ { 1 , 2 , ⋯ , n } \forall i \in \lbrace 1,2,\cdots,n \rbrace i{ 12n}, 都有 a i ≤ b i a_i \le b_i あるi bi , 则称向量 a \boldsymbol{a} a小于等于向量 b \boldsymbol{b} b, 记作 a ≦ b \boldsymbol{a} \leqq \boldsymbol{b} あるb
  • ∀ i ∈ { 1 , 2 , ⋯ , n } \forall i \in \lbrace 1,2,\cdots,n \rbrace i{ 12n}, 都有 a i ≤ b i a_i \le b_i あるi bi 、さらに ∃ j ∈ { 1 , 2 , ⋯ , n } \exists j \in \lbrace 1,2,\cdots,n \rbrace j{ 12n}, 利用 a i <; b i a_i <; b_i あるi <;bi , 则称向量 a \boldsymbol{a} a小于向量 b \boldsymbol{b} b, 记作 a ≤ b \boldsymbol{a} \le \boldsymbol{b} あるb
  • ∀ i ∈ { 1 , 2 , ⋯ , n } \forall i \in \lbrace 1,2,\cdots,n \rbrace i{ 12n}, 都有 a i <; b i a_i <; b_i あるi <;bi , 则称向量 a \boldsymbol{a} a严格小于向量 b \boldsymbol{b} b, 记作 a < b \boldsymbol{a} < \boldsymbol{b} ある<;b

同様に定義できます a ≧ b \boldsymbol{a} \geqq \boldsymbol{b} あるb a ≥ b \boldsymbol{a} \ge \boldsymbol{b} あるb a > b \boldsymbol{a} > \boldsymbol{b} ある>b

1.2 複数の目的の計画

複数の目的関数を使用した最適化問題は多目的プログラミングと呼ばれ、(VP) と表され、その数学的形式は次のようになります。 分 ⁡ x ∈ Ω F ( x ) \underset{\boldsymbol{x} \in \Omega}{\min} \boldsymbol{F}(\boldsymbol{x}) xΩ F(x)、その中 F ( x ) = [ f 1 ( x ) , f 2 ( x ) , ⋯ , f n ( x ) ] T \boldsymbol{F}(\boldsymbol{x}) = \left[ f_1( \boldsymbol{x})、f_2(\boldsymbol{x})、\cdots、f_n(\boldsymbol{x}) \right]^{\​​rm T} F(x)=[f1 (x),f2 (x),fn (x)]T はベクトル値関数です。 If ∀ i ∈ { 1 , 2 , ⋯ , n } \forall i \in \lbrace 1,2,\cdots,n \rbrace i{ 12n} f i ( x ) f_i(\boldsymbol{x}) fi (x)都为凸函数, 则称(VP)为凸多目标规划

1.3 多目的プログラミングの解決策

x ∗ ∈ Ω \boldsymbol{x}^* \in \Omega バツΩ F ( x ) = [ f 1 ( x ) , f 2 ( x ) , ⋯ , f n ( x ) ] T \boldsymbol{F}(\boldsymbol{x}) = \left[ f_1(\boldsymbol{x}), f_2(\boldsymbol{x}), \cdots, f_n(\boldsymbol{x}) \right]^ {\rm T} F(x)=[f1 (x),f2 (x),fn (x)]T、(VP) には多くの解決策があります。一般的に使用される解決策は次のとおりです。

  1. 若对 ∀ x ∈ Ω \forall \boldsymbol{x} \in \Omega xΩ, 都有 F ( x ∗ ) ≦ F ( x ) \boldsymbol{F}(\boldsymbol{x}^* ) \leqq \boldsymbol{F}(\boldsymbol{x}) F(x)F(x), 则称 x ∗ \boldsymbol{x}^* バツ是(VP)的绝对最优解, 其全体记为 Ω a b \Omega_{\rm ab} おおab , 有 Ω a b = ⋂ i = 1 n arg min ⁡ x ∈ Ω f i ( x ) \Omega_{\rm ab} = \bigcap_{i=1}^ {n} \underset{\boldsymbol{x} \in \Omega}{\argmin} f_i(\boldsymbol{x}) おおab =i=1n xΩ引数 fi (x)
  2. 存在しない場合 x ∈ Ω \boldsymbol{x} \in \Omega バツΩ, 使得 F ( x ∗ ) ≤ F ( x ) \boldsymbol{F}(\boldsymbol{x}^*) \le \boldsymbol{F}(\boldsymbol{x}) F(x)F(x), 则称 x ∗ \boldsymbol{x}^* バツ是(VP)的有效解(或Pareto解), 其全体记为 Ω p a \Omega_{\rm pa} おお, x ∗ ∈ Ω p a \boldsymbol{x}^* \in \Omega_{\rm pa} バツおお の必要十分条件は { F ( x ∗ ) − d ∣ d ≥ 0 } ∩ F ( Ω ) = { F ( x ∗ ) } \lbrace\ボールドシンボル{ F}(\boldsymbol{x^*}) - \boldsymbol{d} \mid \boldsymbol{d} \ge \bold0 \rbrace \cap \boldsymbol{F}(\Omega) = \lbrace \boldsymbol{F }( \boldsymbol{x}^*) \r中括弧 { F(x)dd0}F(Ω)={ F(x)}
  3. 存在しない場合 x ∈ Ω \boldsymbol{x} \in \Omega バツΩ, 使得 F ( x ∗ ) <; F ( x ) \boldsymbol{F}(\boldsymbol{x}^*) <; \boldsymbol{F}(\boldsymbol{x}) F(x)<;F(x), 则称 x ∗ \boldsymbol{x}^* バツ是(VP)的弱有效解(或弱Pareto解), 其全体记为 Ω w p \Omega_{\rm wp} おおwp , x ∗ ∈ Ω w p \boldsymbol{x}^* \in \Omega_{\rm wp} バツおおwp の必要十分条件は { F ( x ∗ ) − d ∣ d > 0 } ∩ F ( Ω ) = ∅ \lbrace\boldsymbol{F}( \boldsymbol {x^*}) - \boldsymbol{d} \mid \boldsymbol{d} > \bold0 \rbrace \cap \boldsymbol{F}(\Omega) = \varnothing { F(x)dd>0}F(Ω)=

[例 1] 多目的プログラミングの絶対に実行可能な解、有効な解、および効果が弱い解を求める min ⁡ 3 x 1 + x 2 max ⁡ x 1 + 2 x 2 s . t . x 1 , x 2 ∈ [ 0 , 1 ] \begin{行列} \min & 3x_1 + x_2 \\ \max & x_1 + 2x_2 \\ \rm s.t. & 1] \end{行列} 最大s.t.3x1 +バツ2 バツ1 +2x2 バツ1 バツ2 [0,1] 【解】 F ( x 1 , x 2 ) = [ f 1 ( x ) , f 2 ( x ) ] T = [ 3 x 1 + x 2 , − x 1 − 2 x 2 ] T \boldsymbol{F}(x_1, x_2) = [f_1(\boldsymbol{x}), f_2(\boldsymbol{x})]^{\rm T} = [3x_1 + x_2, -x_1 - 2x_2]^{\rm T} F(x1 バツ2 )=[f1 (x),f2 (x)]T=[3x1 +バツ2 x1 2x2 ]T, Ω = { ( x 1 , x 2 ) T ∣ x 1 , x 2 ∈ [ 0 , 1 ] } \オメガ = \left \lbrace (x_1, x_2)^{\rm T} \mid x_1, x_2 \in [0, 1] \right \rbrace おお={ (x1 バツ2 )Tバツ1 バツ2 [0,1]}

明らかに、制約付き最適化問題 min ⁡ x ∈ Ω f 1 ( x ) \underset{\boldsymbol{x} \in \Omega}{\min}f_1(\boldsymbol {x}) xΩ f1 (x) の最大の解集は Ω 1 = { ( 0 , 0 ) T } \Omega_1 = \left \lbrace (0, 0)^{\rm T} \right \rbrace おお1 ={ (0,0)T}、制約付き最適化問題 min ⁡ x ∈ Ω f 2 ( x ) \underset {\boldsymbol{x} \in \Omega}{\min}f_2(\boldsymbol{x}) xΩ f2 (x) の最大の解集は Ω 2 = { ( 1 , 1 ) T } \Omega_2 = \left \lbrace (1, 1)^{\rm T} \right \rbrace おお2 ={ (1,1)T}, 所以绝对最优解 Ω a b = Ω 1 ∩ Ω 2 = ∅ \Omega_{\rm ab} = \Omega_1 \cap \Omega_2 = \varnothing おおab =おお1 おお2 =

做出可行域 Ω \Omega Ω のイメージは図 1 の左側に示されています。なぜなら F ( x 1 , x 2 ) \boldsymbol{F} だからです。 (x_1、x_2) F(x1 バツ2 ) は線形関数なので、左の図の頂点をマッピングして接続し、画像セットを取得します。 F ( Ω ) \ボールドシンボル{F }(\オメガ) F(Ω)的图像, 如图1右图所示。记 O ′ = F ( O ) O' = \boldsymbol{F}(\boldsymbol{O}) =F(O) C ' = F ( C ) C' = \boldsymbol{F}(\boldsymbol{C}) C=F(C) B ' = F ( B ) B' = \boldsymbol{F}(\boldsymbol{B}) B=F(B), 则显然折线段 O ′ C ′ B ′ O'C'B' 'C'B' は有効な解決策であり、有効性が低い解決策です。
ここに画像の説明を挿入します

図1 実現可能領域(左)と画像セット(右)

2. 線形加重加算法

線形加重合計法では、各目的関数に重みを割り当てることで、多目的プログラミングを単一目的プログラミングに変換します。具体的には、 多目的プログラミング min ⁡ x ∈ Ω F ( x ) = [ f 1 ( x ) , f 2 ( x ) , ⋯ , f n ( x ) ] T \underset { \boldsymbol{x} \in \Omega}{\min}\boldsymbol{F}(\boldsymbol{x}) = \left[ f_1(\boldsymbol{x}), f_2(\boldsymbol{x}), \ cdots , f_n(\boldsymbol{x}) \right]^{\​​rm T} xΩ F(x)=[f1 (x),f2 (x),fn (x)]T, 给定 n n n増加 λ 1 、 λ 2 、 ⋯ 、 λ n \lambda_1, \lambda_2, \cdots, \lambda_n 1 2 n , 则(VP)转化为 min ⁡ x ∈ Ω ∑ i = 1 n λ i f i ( x ) \underset{\boldsymbol{x} \in \Omega}{\min} \sum_{i=1}^{n}\lambda_if_i(\boldsymbol{x}) xΩ i=1n i fi (x) この方法で最適解を求めることを線形重み付け和最適解といいます。 。
線形加重和法で得られた解 は (VP) の有効な解でなければなりませんが、すべての有効な解が見つかるという保証はありません< /span>

【例2】取权数 λ 1 = 2 3 \lambda_1=\dfrac{2}{3} 1 =32 & λ 2 = 1 3 \lambda_2=\dfrac{1}{3}2 =31 、線形加重合計法を使用して min ⁡ f ( x 1 , x 2 ) = ( x 1 , x 2 ) T s . t . x 1 + x 2 を解きます。 ≥ 3 x 1 + x 2 ≤ 5 x 1 ≥ 0 0 ≤ x 2 ≤ 2 \begin{行列} \min & \boldsymbol{f}(x_1, x_2) = (x_1, x_2)^{\rm T} \ \ \rm s.t. & x_1 + x_2 \ge 3 \\ & x_1 + x_2 \le 5 \\ & x_1 \ge 0 \\ & 0 \le x_2 \le 2 \end{行列} セントf(x1 バツ2 )=(x1 バツ2 )Tバツ1 +バツ2 3バツ1 +バツ2 5バツ1 00バツ2 2 [解法] 問題は min ⁡ 2 3 x 1 + 1 3 x 2 s . t . x 1 + x 2 ≥ 3 x 1 + x 2 ≤ に変換されます。 5 x 1 ≥ 0 0 ≤ x 2 ≤ 2 \begin{matrix} \min & \dfrac{2}{3}x_1 + \dfrac{1}{3}x_2 \\ \rm s.t. & x_1 + x_2 \ ge 3 \\ & x_1 + x_2 \le 5 \\ & x_1 \ge 0 \\ & 0 \le x_2 \le 2 \end{行列} セント32 バツ1 +31 バツ2 バツ1 +バツ2 3バツ1 +バツ2 5バツ1 00バツ2 2 図 2 に示すように、グラフィカルな方法で簡単に得られる最適解は次のとおりです。 (x 1, x 2) = (1, 2) (x_1, x_2) = ( 1、2) (x1 バツ2 )=(1,2), 最优值为 4 3 \dfrac{4}{3} 34
グラフィカルな方法

図 2 グラフィカルな方法

3. 加重二乗和法

二乗加重和法は、線形加重和法と似ています。また、(VP) を単一目的プログラミングに変換します。具体的な手順は、最初に制約付き最適化問題を解くことです。 分 ⁡ x ∈ Ω f i ( x ) \underset{\boldsymbol{x} \in \Omega}{\min}f_i(\boldsymbol{x}) xΩ fi (x)的最优解(或近似最优解) y i y_i そしてi , 然后给定 n n n増加 λ 1 、 λ 2 、 ⋯ 、 λ n \lambda_1, \lambda_2, \cdots, \lambda_n 1 2 n , 则(VP)转化为 min ⁡ x ∈ Ω ∑ i = 1 n λ i [ f i ( x ) − y i ] 2 \underset{\boldsymbol{x} \in \Omega}{\min} \sum_{i=1}^{n}\lambda_i[f_i(\boldsymbol{x}) - y_i]^2 xΩ i=1n i [fi (x)そしてi ]2この方法を使用して最適解を求めることを、二乗加重和という意味で最適解と呼びます。重みが λ 1 = λ 2 = ⋯ = λ n > 0 \lambda_1 = \lambda_2 = \cdots = \lambda_n > 0 1 =2 ==n >0 の場合、理想点法と呼ばれます。
加重二乗和法で得られる解 は、(VP) の有効な解 でなければなりません。

4. ミニマックス法

ミニマックス法は、最大関数を最小化することによって (VP) を単一目的計画法に変換します。 min ⁡ x ∈ Ω max ⁡ 1 ≤ i ≤ n f i ( x ) \underset {\boldsymbol{x} \in \Omega}{\min}\underset{1 \le i \le n}{\max} f_i(\boldsymbol{x}) xΩ 1in最大 fi (x) この方法を使用して最適解を求めることを最大有意性と呼びます。最適解は次のとおりです。 。
古典的なミニマックス法によって得られる解 は、(VP) の効果が弱い解 でなければなりません。

5. 階層シーケンス方式

階層シーケンス法では、目的関数を 1 つずつ解決して最終的な最適解を求めます。アルゴリズムの手順は次のとおりです。

  1. 确定 n n n 目的関数を解く順序は、 f 1 ( x ) 、 f 2 ( x ) 、 ⋯ 、 f n と見なされます。 ( x ) f_1(\boldsymbol{x})、f_2(\boldsymbol{x})、\cdots、f_n(\boldsymbol{x}) f1 (x),f2 (x),fn (x)
  2. f or i = 1 , 2 , ⋯ , n d o \bold{for} \; i = 1、2、\cdots、n \; \太字{する}のために=12nする
  3. \qquad単一目的計画法を解く min ⁡ x ∈ Ω f i ( x ) \underset{\boldsymbol{x} \in \Omega}{\min}f_i(\boldsymbol{ x }) xΩ fi (x)得到最优解 x ∗ \boldsymbol{x}^* バツ
  4. Ω = Ω ∩ { x ∣ f i ( x ) = f i ( x ∗ ) } \qquad \Omega = \Omega \cap \lbrace \boldsymbol{x} \mid f_i(\boldsymbol{x}) = f_i(\boldsymbol{ x}^*) \r中括弧おお=おお{ xfi (x)=fi (x)}
  5. 終わり \bold{end}終わり
  6. re t u r n Ω \bold{return} \; \オメガ戻るおお

この方法で最適解を求めることを階層的な意味での最適解と呼びます。階層シーケンス法によって得られる
は、(VP) の有効な解 でなければなりません。

[例 3] 階層シーケンス法を使用して min ⁡ ( x 2 , x 1 2 + x 2 2 ) T s . t . x 1 + x 2 − 1 ≤ 0 x 1 − 2 x 2 + 2 ≥ 0 x 2 ≥ 0 \begin{matrix} \min & (x_2, x_1^2 + x_2^2)^{\rm T} \\ \rm s.t. & x_1 + x_2 - 1 \le 0 \\ & x_1 - 2x_2 + 2 \ge 0 \\ & x_2 \ge 0 \end{行列} セント(x2 バツ12 +バツ22 )Tバツ1 +バツ2 10バツ1 2x2 +20バツ2 0 【解】第 1 1 1 反復の場合、単一目的プログラミングは min ⁡ x 2 s . t . x 1 + x 2 − 1 ≤ 0 x 1 − 2 x 2 + 2 ≥ 0 x 2 ≥ 0 \begin{行列} \min & x_2 \\ \rm s.t. & x_1 + x_2 - 1 \le 0 \\ & x_1 - 2x_2 + 2 \ge 0 \ \ & x_2 \ge 0 \end{行列} セントバツ2 バツ1 +バツ2 10バツ1 2x2 +20バツ2 0 明らかに最適解は x 2 = 0 x_2 = 0 バツ2 =0

2 2 2 反復、単一目的プログラミングは min ⁡ x 1 2 + x 2 2 s . t . x 1 + x 2 − 1 ≤ 0 x 1 − 2 x 2 + 2 ≥ 0 x 2 = 0 \begin{matrix} \min & x_1^2 + x_2^2 \\ \rm s.t. & x_1 + x_2 - 1 \le 0 \ \ & x_1 - 2x_2 + 2 \ge 0 \\ & x_2 = 0 \end{行列} セントバツ12 +バツ22 バツ1 +バツ2 10バツ1 2x2 +20バツ2 =0 この問題は min ⁡ x 1 2 s . t . − 2 ≤ x 1 ≤ 1 \begin{matrix} \min & x_1^2 \\ \ と同等です。 rm s.t. & -2 \le x_1 \le 1 \end{行列} s.t.バツ12 2バツ1 1 明らかに最適解は x 1 = 0 x_1 = 0 バツ1 =0 であるため、この問題の最適解は ( x 1 , x 2 ) = ( 0 , 0 ) (x_1, x_2) となります。 ) = (0, 0) (x1 バツ2 )=(0,0)

元の問題に対する最適解は ( x 1 , x 2 ) = ( 0 , 0 ) (x_1, x_2) = (0, 0) (x1 バツ2 )=(0,0), 最优值为 ( 0 , 0 ) T (0, 0)^{\rm T} (0,0)

おすすめ

転載: blog.csdn.net/qq_56131580/article/details/129882720