• ベストアンサー

制約つき最適化問題

最小化:f(x1,x2)=(x1)^2+(1/3)(x2)^2 制 約:g(x1,x2)=-x1-x2+1<0 という制約条件が1つの問題であれば、ψ=(-x1-x2+1)^2とすることで拡張目的関数が F(x1,x2,r)=f(x1.x2)+rψ(x1,x2) =(x1)^2+(1/3)(x2)^2+r(-x1-x2+1)^2 ただし(-x1-x2+1<0である時) となり、極小解を求めると、制約を満足していない領域においては dF/dx1=(1+r)x1+rx2-r=0 dF/dx2=3rx1+(1+3r)x2-3r=0 より x1=r/(4r+1) x2=3r/(4r+1) r=∞であるので、x1=1/4 x2=3/4と求まります。 --------------------------------------------------------------- 以前に制約が複数個にしたらどうなるのか質問させてもらったんですが、拡張目的関数を編微分するということは理論的にどういうことを意味しているのでしょうか。 単純に目的関数を各変数について編微分すると局所部分がわかるということなのですが、ペナルティ関数項が入った場合も同じようなことがいえるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

#1です。 まだ、閉じてみえなかったんですね。  Penalty Optimization(条件付最適化)は別名罰金法ともいいますが、それは、前にも書いたように、複数の目的関数(y)を逐次最適化していくと次々に説明変数(x)に線形制約がかかり、強い不定解に陥ることによって解が無くなることを防ぐために開発されています。つまり、同時最適化の手段です。  また、複数の目的関数間に内部従属関係(その著しいのがトレードオフ)があると、両方の目的関数を同時に満たす解がありませんから、その場合も、「yの目標条件を逸脱した場合、逸脱度合いに応じてペナルティ(罰金)を課す」という方法で評価指標を作り、その評価指標の良い解を探します。当然、一部の目的関数を犠牲にした解がでますが、それをパレート解といいます。  通常は、そのようなペナルティ関数は単峰(たんぽう)ではありませんので、1階の偏微分で極値探索はできません。多峰に応じた探し方が必要になります。  ですから、解が存在するようなご質問のケースでは、ウェイトで解を限定するような姑息な手段を使っているのです。また、単峰の極値探索ですから偏微分で解が出るのです。  ペナルティの掛け方には、多くの方法が提案されています。また、最適化ソフトによっても、実装されている関数が違います。その方法を完全に理解するのは困難かと思います。  ペナルティ法について文献を調べましたが、簡単な解説がありません。Myersらの"Respons Surface Methodology 3rd Edition"の261ページに"desirability function"(満足化関数)について記載があり、ペナルティの掛け方について説明されています。これは、「Derringer and Suich の方法」です。  この本は洋書で1万円以上します。図書館にあるといいですが・・・。  あとは、この回答中にある英語のキーワードでググってみてはどうでしょうか。

tokyoame
質問者

お礼

たくさんの回答ありがとうごがいます。 ご意見を参考にして、理解を深めたいと思います。 皆様の意見はどの参考書よりも分かりやすくて助かりました。

その他の回答 (5)

回答No.6

#1です。 ついでに・・・ 条件付き最適化は、yについて条件を満たすことを考えています。 制約付き最適化は、制約(constraint)を満たしたxの中から解を探し出す方法です。Constrained Optimization と言います。 あなたが参考にされたWEBページのように、区別せず、また混同して使っている方が多いです・・・。 大学教授でさえ、十分に理解していないので、しかたないですが。

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.4

 まずは正攻法で解いてみるとどうなるかなとやってみました。未定乗数法の拡張版であるクルッシュ・クーン・タッカーの定理を使うと、 L(x1,x2,μ) = f(x1,x2)+μg(x1,x2) とするとき、 --------- (x1,x2)が解になるための必要十分条件は、 ∂L/∂x1 = 0 ∂L/∂x2 = 0 μg(x1,x2)=0 g(x1,x2)<0 を全て満たす(μ, x1,x2)が存在すること。 --------- ∂L/∂x1 = 2x1-μ=0 ∂L/∂x2 = (2/3)x2-μ=0 より (x1,x2)=(μ/2, (3/2)μ) です。さらに μg(x1,x2)=μ(-μ/2-(3/2)μ+1)=μ(1-2μ)=0 より、 μ=0またはμ=1/2 なので、 (x1,x2)=(0, 0) または (x1,x2)=(1/4, 3/4) のどちらかである。ところがどちらも g(x1,x2)<0 という条件を満たさないから、つまり解はない。  しかし、もしもg(x1,x2)≦0というのが条件であれば、 (x1,x2)=(1/4, 3/4)が解です。ということで、結局これは、fの極小がちょうど境界g(x1,x2)=0上にあって、g(x1,x2)<0の範囲には最小が(極限としてしか)存在しない例ですね。  それはさておき、ご質問はペナルティ法の話のようです。だとすると、ご質問にあるψ=(-x1-x2+1)^2というのはなんだか変です。そこで気になるのが、ご質問の文章にある「ただし(-x1-x2+1<0である時)」なる部分が意味不明だということ。もしかすると、 ψ=(-x1-x2+1)^2、ただし-x1-x2+1<0である時はψ=0 という事かなあ。しかしこれでもまだ変なのです。  というのは、「制約を満足していない領域においては」なんて場合分けをしなくて済むようにするためにこそペナルティを考えるんですから、Fに場合分けがあるんじゃ御利益がない。また、その後にある文章では「制約を満足していない領域」を調べてますが、制約g<0を満足する解はそこにはないに決まっている。探しどころがおかしい訳で、これもなんだか変ですね。  ペナルティ関数を入れた目的関数をF(r,x1,x2)とすると、Fは「制約を満足していない領域」かどうかの区別が要らない形であって、しかもr→+∞にしたときに g(x1,x2)≦0のとき、F(r,x1,x2)→f(x1,x2) g(x1,x2)>0のとき、F(r,x1,x2)→間違いなく最小値ではない値(たとえば+∞) となるように作る。これで「g(x1,x2)≦0を満たすようなx1,x2でなきゃだめ」という条件がFの中に組み込まれた訳で、以後条件のことは忘れて極値問題を解けば良い。その解(rを含む)のr→+∞における極限が首尾良く存在すれば、それが元の問題の解になってる。例えば F(r,x1,x2)=f(x1,x2)+exp(rg(x1,x2))/r のようにするのはひとつのやり方です。  しかしこのアプローチは、境界g(x1,x2)=0上に最小が来ちゃうこの問題では筋が悪い。いや、勉強になります。

  • pspice41
  • ベストアンサー率51% (14/27)
回答No.3

#1さんのおっしゃるとおり、方法論をちゃんと理解してから用いることが大切ですが、質問に対して漠然としたイメージをお伝えできたらと思います。 まず、変数が1つしかないときを考えます。例として"y=xの2乗"が最小になるxを考えます。この関数が最小になるxを得るには、この関数の微分”y'=2x”が0になる点を計算すればよいです。(x=0で最小になる) このように、変数が1の関数が最小になるところは、その微分を用いて算出することができます。 今回の場合、最適化する関数はx1,x2の二つの変数を持ちます。変数が2つある場合はそれぞれの変数について考えてあげなくてはいけないので、偏微分を用いる必要があります。重複しますが、#1さんのおっしゃるとおり、理論をちゃんと理解しないと解けないと思いますが、最小値を求めるイメージは変数が1つの時と変わりません。

回答No.2

#1です。  前の質問と回答を見ました。この解法は引用なのですね。あなたに問題があるような書き方をして失礼しました。  前の回答者の方もおっしゃっていますが、解の求め方に問題があります。引用された求め方は、たまたま解が一致しているだけです。  なお、 ・制約が複数になる場合・・・x1~xnという多次元空間であったとしても、線形制約を次々かけていくと、つぎつぎ不定解に陥り、解が無くなります。(設計できません) ・条件が複数になる場合・・・ペナルティつき合成スカラー量の1目的関数の最適化問題なので、必ず解があります。ただし、境界条件から外れた解になることもあります。(必ずしも仕様を満足しません。つまり重量が目標値に入らないとか、燃費が目標値より悪いとか・・・)なお、どれかの条件を犠牲にした解をパレート解といいます。多くは燃費と排ガスのようなトレードオフ特性が該当します。

tokyoame
質問者

補足

丁寧な回答ありがとうございます。 もし、外点ペナルティ関数法(罰金法)に関してよい説明のサイトがあれば教えていただきたいです。 これまでに何度の検索しましたが、理論的なことがはっきり理解できません。

回答No.1

 ご質問とは視点の違う回答になっていますことをお許し下さい。前半の解の求め方に一般性がないので、その指摘とからめて回答します。  分野によって流儀が違うかもしれませんが(というより、本を書いた先生の誤訳により混乱がありますが)、目的関数に条件をつけていますから制約つき最適化ではなく「条件つき最適化」ですね。  制約つき最適化とは制御因子(設計パラメータ)に線形制約をかけた最適化です。一般には、ネジのように離散的な値しか取れないとか、材料強度のように上限があるとかいう場合に「設計制約がある」という意味で、「制約つき最適化」という言葉が用いられます。方法論的には連立方程式になります。  ただし、今回のケースもg(x)に条件をつけることによって結果的に制御因子に線形制約がかかっていますので、「制約つき」と言っても間違いではありません。  さて、今回のケースは、g(x)に境界条件をつけながらf(x),g(x)両者の合成スカラー量を最小化する式に帰着させていますが、大きな間違いがあります。  g(x)が境界条件を満たさない外側部分に2乗のペナルティを掛けていますが(たまたま境界が0だからそのままg(x)を2乗しています)、現在の式ですと境界条件を満たす内側部分にも(負の値が大きくなるに従って)ペナルティが掛かります。この式では、もしこの内側部分に最適値があっても発見できません。通常は、境界条件範囲内はペナルティを0にするなどの配慮が必要です。  最適値の探し方ですが、偏微分で行うことは一般的ではありません。今回のケースでは、x1についても,x2についても下凸で2次関数ですから1階の微分で極値(最小値)探索できるのですが、上凸なら最大値を探すことになりますし、x1が下凸でx2が上凸なら、鞍点,もっと高次の関数なら停留点しか求まりません。通常は、ダウンヒル・シンプレックスや遺伝子アルゴリズムで探索します。  なお、合成スカラー量にはウェイトw(質問ではr)を掛けていますが、この意味は単位調整です(f(x)が燃費,g(x)がNOxだと単純な合算はできませんから調整します)。今回のようにr=∞というウェイトの掛け方は、制御因子の制約(つまり、ψが0のときしか成立しない)に帰着させる小手先技と思いますが、これも間違いです。前に述べたように、g(x)=0という境界線上ではなくもっと内側に良い解があっても見つかりません。  方法論を良く理解して適用されることをお勧めします。

関連するQ&A

  • 外点ペナルティ関数法

    外点ペナルティ関数法について(250枚) 最小化:f(x1,x2)=(x1)^2+(1/3)(x2)^2 制 約:g(x1,x2)=-x1-x2+1<0 という制約条件が1つの問題であれば、ψ=(-x1-x2+1)^2とすることで拡張目的関数が F(x1,x2,r)=f(x1.x2)+rψ(x1,x2) =(x1)^2+(1/3)(x2)^2+r(-x1-x2+1)^2 ただし(-x1-x2+1<0である時) となり、極小解を求めると、制約を満足していない領域においては dF/dx1=(1+r)x1+rx2-r=0 dF/dx2=3rx1+(1+3r)x2-3r=0 より x1=r/(4r+1) x2=3r/(4r+1) r=∞であるので、x1=1/4 x2=3/4と求まります。 ところで制約条件が複数個になった場合はどのようにといたらいいのでしょうか。 複数個制約が設けられた場合の解法を教えてください。

  • ペナルティ関数法(罰金法)

    yah○○の知恵ふくろに以下の質問がありました 最小化:f(x1,x2)=(x1)^2+(1/3)(x2)^2 制 約:g(x1,x2)=-x1-x2+1<0 という制約条件が1つの問題であれば、ψ=(-x1-x2+1)^2とすることで拡張目的関数が F(x1,x2,r)=f(x1.x2)+rψ(x1,x2) =(x1)^2+(1/3)(x2)^2+r(-x1-x2+1)^2 ただし(-x1-x2+1<0である時) となり、極小解を求めると、制約を満足していない領域においては dF/dx1=(1+r)x1+rx2-r=0 dF/dx2=3rx1+(1+3r)x2-3r=0 より x1=r/(4r+1) x2=3r/(4r+1) r=∞であるので、x1=1/4 x2=3/4と求まります。 ところで制約条件が複数個になった場合はどのようにといたらいいのでしょうか。 ---------------------------------------------------------------- 回答は、、、 制約条件が複数個 g1(x1,x2) , g2(x1,x2) , gn(x1,x2) になったとしましょう。 すると、拡張目的関数は F(x1,x2,r)=f(x1.x2)+r1ψ1(x1,x2)+r2ψ2(x1,x2)+ … +rnψn(x1,x2) となります。 そして、r1,r2,…,rn のすべての可能性を試せばOKです。 もし制約条件が2つなら、 (1) r1=0 , r2=0 (2) r1=0 , r2→∞ (3) r1→∞ , r2=0 (4) r1→∞ , r2→∞ の4つを試せばOKです。 しかし、この方法では、制約条件が10個になると1024回も試さなければならなくなります。 でも、実際にそうする必要はありません。 一定の規則のもとに実行すれば、それより少ない回数で済みます。 ---------------------------------------------------------------- ここで質問ですが一定の規則とはどういった規則でしょうか? また、ペナルティ係数は無限大(∞)が理想ですが、実際に制約を複数個有する問題において、複数個のペナルティ係数はそれぞれ違った値の∞に近い値にしないといけないのでしょうか? 違う値の係数値にしないといけないのであれば、なぜそれぞれ違った係数値にしないといけないのか教えてください。

  • この前、演習ミクロ経済学の質問をした者です。

    お答えいただいて、すぐに理解したつもりだったのですが、よく考えたらわからないところが出てきてしまいました。 回答では以下のようにあります。 数学としては、次の2点を抑えておく必要があります。 一点目は合成関数の微分で、2点目は全微分です。 ・df(g(x))/dx = df(x)/dg × dg/dx ・df(x1, x2) = ∂f/∂x1 × dx1 + ∂f/∂x2 × dx2 この二つを合わせると、 ・df(x, g(x))/dx = ∂f/∂x + ∂f/∂g dg/dx を得ることが出来ます。 df(x, g(x))/dx = ∂f/∂x + ∂f/∂g dg/dxなのですが、df(x1, x2) = ∂f/∂x1 × dx1 + ∂f/∂x2 × dx2でいうdx1はどこに行ってしまったんでしょうか。 数学ができないので、根本的な見落としかもしれませんが、ご回答お願いします。

  • 最小解について教えてください。

    f:R^n→Rを微分可能関数としx^*はその点x^*を通る全ての直線に沿ってfの局所的最小点とし g(α)=f(x^*+αd) は任意のd∈R^nに対してα=0で最小化される。 このとき (1)∇f(x^*)=0の示し方を教えてください (2)例を示すことによるx^*がfの局所最小解である必要がないことを示す方法を教えてください。

  • 非線形計画法 主-双対問題

    次のような制約付き最小化問題を考えています。 目的関数は非線形です。 min x1^2+x2^2 s.t. -x1-x2+4<=0 x1>=0 x2>=0 この問題の場合最適解は(x1,x2)=(2,2)であり、その時の目的関数値は8となります。 次に次式のような双対問題を考えます。 g(x)=-x1-x2+4とおき 双対関数 φ(u)=inf{x1^2+x2^2+u*(-x1-x2+4) : x1>=0 , x2>=0} =inf{x1^2-u*x1 : x1>=0}+inf{x2-2-u*x2 : x2>=0}+4*u 上記においてもしu>=0であれば、x1=x2=(u/2). (なぜなら、x1^2-u*x1をx1で微分するとx1=u/2となる。) u<0であるならばx1=x2-0であることに注目しますと。 φ(u)=-(1/2)*u^2+4*u for u>=0 =4u for u<0 となります. 双対関数がu>0の場合は最大がu=4であることに注目すると、その時の目的関数は8であり、主問題と双対問題の最適な目的関数値は一緒となります。 次に主問題を次のように制約を増やした最小化問題を考えます。 min x1^2+x2^2 s.t. -x1-x2+4<=0 -2*x1-3*x2<=0 x1>=0 x2>=0 これの最適解は上記の問題と同じにならないといけないのですが、 例えば、ラグランジュ関数F(x1,x2,λ1,λ2)を次のようにおき各変数で偏微分して最適解を求めると(λ:ラグランジュ乗数)、 F(x1,x2,λ1,λ2)=x1^2+x2^2+λ1*(-x1-x2+4)+λ2*(-2*x1-3*x2) 最適解はx1=12, x2=-8であり、その時の目的関数は208となり、前問と異なった解が得られました。 この原因は明確であり、ラグランジュ関数の中の各制約式が、偏微分して解を得ることで不等式制約ではなく等式制約とみなされたためです。 偏微分して解を求めなければいいのですが、どうしても偏微分でかいを求めたいために、、前門で示した双対問題を導入しましたが、結果は双対問題のほうでも偏微分するので一緒でした。 しかし、双対問題で得られた解。つまりuは主問題のλに相当し、KKT条件より必ず正である必要があるので、双対問題を解き、uが負になった制約式はの除いてそのあともう一度問題を解きなおす。つまり2番目の問題を前問に置き換える。 っといったことをして問題を解決させようとかんがえていますが、これは理論的に正しいのでしょうか。 これはほんの例題ですが、複数個の不等式制約式を扱い、かつ偏微分可能な最適化問題を解く際に、最適解に対して全てが有効制約になるとは限りませんので、どうかうまくいくアドバイスをください。

  • 偏微分

    偏微分を用いて、全微分をするとき 例えばx,y,zの時間に依存する変数からなる関数f(x,y,z)を時間で全微分する時、 df/dt=(df/dx)(dx/dt)+(df/dy)(dy/dt)+(df/dz)(dz/dt) となると思うのですが、 仮に、x,を時間だけでなく、もう一つ時間に依存する関数n(t)を与えるとします、 つまり X=x+n(t) f(x) => f(X)=f(x+n(t)) になるとします。 その時、時間の全微分はどうなるのでしょうか? f(x+n(t))はxとn(t)に依存しているので、f(x,n(t))と書いて f(x+n(t))=f(x,n(t)) df(x+n(t))/dt=(df(x,nt)/dt)=(df/dx)(dx/dt)+(df/dn)(dn/dt) としてもいいんでしょうか? 後どのような時、偏微分しても可能なのか教えて頂ければ幸いです。 どなたか分かる方よろしくお願いします。

  • 微分 積分 問題

    微分 積分 問題 F(x)=∫[a~x]((x-t)^2)f(t)dtのときdF/dxを求めよ。 という問題なのですが、原始関数F(x)を求めて、微分すればよいのですが F(x)=∫[a~x]((x-t)^2)f(t)dtの積分がわかりません・・・ どのようにすれば良いのでしょうか? ご回答よろしくお願い致します。

  • 微分について。

    d/dx(dx/dy)は、第 2次導関数ですが、これは、df´(x)/dxで、f´(x)をxで微分するという解釈で大丈夫でしょうか?ご教授いただけないでしょうか?すみません。

  • 記号の読み《難しい表現》

    ずっと気になって仕方がありません。 こういった表現は本当に正しいのでしょうか? 少しうろ覚えなのですが、よろしくお願いします。 (1) y=f(x) これを普通に読めば〔yイコールfx〕ですよね。 しかし関数表現にすると〔yイコールfオブ(かっこ)x〕と読むと先生が言ってました。 これは関数表現のみに使うのでしょうか? (2) df/dx これを普通に読めば〔dx分のdf〕又は〔dfdx〕 しかし微分の表現にすると〔dfオーバーdx〕又は〔dxオーバーdf〕と読むとのこと。 こちらは微分の表現のみに使うのでしょうか?

  • 陰関数についての計算

    陰関数:f(x,y) = x^2 + xy + y^2 - 36 = 0 があって、 導関数:dy/dxを求める問題なのですが、 途中でつまづいてしまっているので質問させていただきます。 計算途中で2変数関数 の全微分df (x, y)を求め、それぞれdxとdyについてまとめることが小問としてあるのですが、dxとdyについてまとめろとはどういう計算をすれば求まるのでしょうか? 全微分はdf = (2x+y)dx + (x+2y)dyとなりここから どのように展開すればdxとdyについてまとめたことになるのでしょうか? 書籍では、全微分を求めた後、df=0として全微分を展開していき、 dy/dxを求めていて、途中でdx、dyについてまとめる過程は出てきていないので、書籍を参考にできずOKwaveで質問させていただきます。 よろしくお願いします。