公開日: 04/01/2021

最適化関数

Constrained Maximize(expr, {x1(low1, up1), x2(low2, up2), ...}, messages)

説明

exprを最大化する引数xの値を求める。引数はリストで指定すること。各引数に対して下限と上限を括弧で囲んで指定するか、オプションのSet Variable Limit()メッセージを使用します。x引数には、スカラーまたはベクトルを指定できます。

以下のメッセージで、Aは係数の行列です。x = [x1, x2, ...]は、引数のベクトルです。b は、式の右辺となるベクトルです。

メッセージ

<<Less than EQ({A, b})

指定された値以下に制約する(A*x <= b)

<<Greater Than EQ({A, b})

指定された値以上に制約する(A*x >= b)

<<Equal To({A, b})

指定された値に制約する(A*x = b)

<<Starting Values([x1Start, x2Start, ...])

初期値を指定する。

<<Max Iter(int)

実行される反復の最大回数を指定する整数。

<<Tolerance(p)

pは収束基準値。デフォルト値は10-5

<<Show Details("true")

結果のリスト(目標値、反復回数、勾配、ヘッセ行列)を戻す。最適化のステップごとの結果をログに出力する。

<<SetVariableLimit({low,high})

最適化変数の下限と上限のベクトルを指定する。

Constrained Minimize(expr, {x1(low1, up1), x2(low2, up2), ...}, messages)

説明

exprを最小化する引数xの値を求める。引数はリストで指定すること。各引数に対して下限と上限を括弧で囲んで指定するか、オプションのSet Variable Limit()メッセージを使用します。x引数には、スカラーまたはベクトルを指定できます。

以下のメッセージで、Aは係数の行列です。x = [x1, x2, ...]は、引数のベクトルです。b は、式の右辺となるベクトルです。

メッセージ

<<Less than EQ({A, b})

指定された値以下に制約する(A*x <= b)

<<Greater Than EQ({A, b})

指定された値以上に制約する(A*x >= b)

<<Equal To({A, b})

指定された値に制約する(A*x = b)

<<Starting Values([x1Start, x2Start, ...])

初期値を指定する。

<<Max Iter(int)

実行される反復の最大回数を指定する整数。

<<Tolerance(p)

pは収束基準値。デフォルト値は10-5

<<Show Details("true")

結果のリスト(目標値、反復回数、勾配、ヘッセ行列)を戻す。最適化のステップごとの結果をログに出力する。

<<SetVariableLimit({low,high})

最適化変数の下限と上限のベクトルを指定する。

Desirability(yVector, desireVector, y)

説明

3点を通過するという条件のもと、応答変数(y)の満足度を決定する関数を定義する。yVectordesireVectorは、満足度関数を決定する3点に対応する行列です。実際の関数は、満足度値が大きい方が良いか、小さい方が良いか、目標値に合わせるか、または目標値がないかのいずれであるかによって異なります。

戻り値

満足度関数

引数

yVector

3つの入力値。

desireVector

対応する3つの満足度の値。

y

満足度を計算する値。

LPSolve(A, b, c, L, U, neq, nle, nge, <slackVars(Boolean)>)

説明

戻り値のリストの第1要素は、決定変数の値(slackVarsに1が指定された場合にはスラック変数の値も含む)。第2要素は、目的変数の最適値(存在する場合のみ)。

引数

A

制約式の係数を表す行列。

b

制約式の右辺値を列にした行列。

c

目的関数のコスト係数のベクトル。

L, U

下限値と上限値を表す行列。

neq

等号制約式の数。

nle

「以下」を示す不等号制約式の数。

nge

「以上」を示す不等号制約式の数。

slackVars(Boolean)

(オプション)決定変数に加えて、スラック変数も戻すかどうかを指定する。デフォルト値は0です。

ノート

制約式は、等号制約、「以下」を示す不等号制約、「以上」を示す不等号制約の順に指定しなければなりません。

Maximize(expr, {x1(low1, up1), x2(low2, up2), ...}, messages)

説明

exprを最大化する引数xの値を求める。引数はリストで指定すること。各引数の下限および上限を、括弧内に指定できる。また、反復の最大回数、収束基準値、最適化の詳細表示を指定する引数もある。ヘッセ行列について解析的微分が行える場合は、Newton-Raphson法が使用される。それ以外の場合は、対称ランクワン法(SR1)に基づく準Newton法が使用される。

メッセージ

<<Max Iter(int)

実行される反復の最大回数を指定する整数。デフォルトの最大回数は250です。

<<Tolerance(p)

pは収束基準値。デフォルト値は10-8

<<Details("both" | "displaySteps" | "returnDetails")

どの出力を戻すかを指定する。"displaySteps"を指定した場合、最適化のステップごとの結果がログに出力されます。"returnDetails"を指定した場合、関数は、結果のリスト(目標値、反復回数、勾配、ヘッセ行列)を戻します。"both"を指定した場合、戻り値とログへの出力の両方が取得できます。

<<Gradient(exprList)

最適化に使用する勾配を定義する式のリスト。リストに含まれる各式は、式exprを微分したものです。

<<Hessian(exprList)

最適化に使用するヘッセ行列を定義する式のリスト。リストに含まれる各式は、ヘッセ行列の上三角部分を行優先順に並べたものです。

<<Method(NR | SR1)

最適化をNewton-Raphson(NR)法と対称ランクワン(SR1)法のどちらで行うかを指定する。

<<UseNumericDeriv("true")

最適化で数値近似が使用されるよう指定する。

Minimize(expr, {x1(low1, up1), x2(low2, up2), ...}, messages)

説明

exprを最小化する引数リストxの値を求める。各引数の下限および上限を、括弧内に指定できる。また、反復の最大回数、収束基準値、最適化の詳細表示を指定する引数もある。ヘッセ行列について解析的微分が行える場合は、Newton-Raphson法が使用される。それ以外の場合は、対称ランクワン法(SR1)に基づく準Newton法が使用される。

メッセージ

<<Max Iter(int)

実行される反復の最大回数を指定する整数。デフォルトの最大回数は250です。

<<Tolerance(p)

pは収束基準値。デフォルト値は10-8

<<Details("both" | "displaySteps" | "returnDetails")

どの出力を戻すかを指定する。"displaySteps"を指定した場合、最適化のステップごとの結果がログに出力されます。"returnDetails"を指定した場合、関数は、結果のリスト(目標値、反復回数、勾配、ヘッセ行列)を戻します。"both"を指定した場合、戻り値とログへの出力の両方が取得できます。

<<Gradient(exprList)

最適化に使用する勾配を定義する式のリスト。リストに含まれる各式は、式exprを微分したものです。

<<Hessian(exprList)

最適化に使用するヘッセ行列を定義する式のリスト。リストに含まれる各式は、ヘッセ行列の上三角部分を行優先順に並べたものです。

<<Method(NR | SR1)

最適化をNewton-Raphson(NR)法と対称ランクワン(SR1)法のどちらで行うかを指定する。

<<UseNumericDeriv("true")

最適化で数値近似が使用されるよう指定する。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).