Maple Professional
Maple Academic
Maple Student Edition
Maple Personal Edition
Maple Player
Maple Player for iPad
MapleSim Professional
MapleSim Academic
Maple T.A. - Testing & Assessment
Maple T.A. MAA Placement Test Suite
Möbius - Online Courseware
Machine Design / Industrial Automation
Aerospace
Vehicle Engineering
Robotics
Power Industries
System Simulation and Analysis
Model development for HIL
Plant Modeling for Control Design
Robotics/Motion Control/Mechatronics
Other Application Areas
Mathematics Education
Engineering Education
High Schools & Two-Year Colleges
Testing & Assessment
Students
Financial Modeling
Operations Research
High Performance Computing
Physics
Live Webinars
Recorded Webinars
Upcoming Events
MaplePrimes
Maplesoft Blog
Maplesoft Membership
Maple Ambassador Program
MapleCloud
Technical Whitepapers
E-Mail Newsletters
Maple Books
Math Matters
Application Center
MapleSim Model Gallery
User Case Studies
Exploring Engineering Fundamentals
Teaching Concepts with Maple
Maplesoft Welcome Center
Teacher Resource Center
Student Help Center
最適化コマンドの入力の形
最適化パッケージで計算できる問題の入力の形についての概要を述べます。それぞれの形について詳しくは Optimization/AlgebraicForm, Optimization/OperatorForm, および Optimization/MatrixForm を参照ください。
代数式
代数式は最適化問題を与える中で最も使われる形です。The および は sin(x+y) または v^2+exp(v) のような代数式の形で与えられます。
代数式はすべての最適化パッケージで使うことができます。また代数式は Optimization[Interactive] によるアプリケーションで使うことのできる唯一の形です。
最適化パッケージの中のソルバによる計算は浮動小数要素のベクトルおよび行列を使います。代数式で与えられた問題はソルバによって行列に変換されます。正確なデータを与えたとしても数値によって計算した値を返します。
代数式について詳しくは Optimization/AlgebraicForm を参照ください。
オペレータの形
オペレータの形を使うと、目的関数および制約条件は 1 つ以上のパラメータを持ちスカラーを返す手続きで表されます。
オペレータの形を入力として許すのは次のコマンドです: Optimization[Minimize], Optimization[Maximize], Optimization[NLPSolve] および Optimization[LSSolve] です。この形を使うと、Minimize および Maximize コマンドは入力が線形関数であっても自動的に非線形関数が入力されたと仮定して、非線形計画法のソルバが呼び出されます。
オペレータで与えられた入力はソルバによって行列の形に変換されます。特に、手続きはベクトルに変換されます。
オペレータの形について詳しくは Optimization/OperatorForm を参照ください。
行列の形
行列の形で問題を指定することで、ソルバによって効率的に結果を出すことができます。しかし、入力が複雑になります。目的関数および制約条件をベクトルおよび行列、および手続きを指定すると解をベクトルで返します。
行列の形は Optimization[Minimize], Optimization[Maximize]および Optimization[Interactive] で使うことはできません。Optimization[LPSolve], Optimization[QPSolve], Optimization[NLPSolve] および Optimization[LSSolve] で使うことができます。
入力が行列の形で、要素が浮動小数の型ででないときは浮動小数のデータに変換されます。最適化ソルバは可能な限りハードウェア浮動小数使うことを試みます。行列やベクトルの不必要な複製を避けるため、最適化コマンドのヘルプページを見て適したデータの形を入力することを推奨します。
行列の形について詳しくは Optimization/MatrixForm を参照ください。
例
with(Optimization):
代数式で与えられる線形計画問題を解きます。目的関数および制約条件は x および y を変数とする関数です。
LPSolve(-4*x-5*y, {x+2*y<=6, 5*x+4*y<=20, x>=0, y>=0});
行列の形で与えられた線形計画問題を使って解きます。
LPSolve(<4,5>,[<<-3|1>,<5|1>>,<1/2,2>],[0,infinity],maximize);
2 次計画問題では代数式または行列の形の入力を使うことができます。
QPSolve(2*x+5*y+3*x^2+3*x*y+2*y^2,{x-y>=2});
QPSolve([<2,5>,<<6|3>,<3|4>>],[<<-1|1>>,<-2>],assume=nonnegative);
非線形問題では代数式または行列の形の入力を使うことができます。
NLPSolve(sin(x)^3-1/(1+x^4), initialpoint={x=2});
行列の形の入力で NLPSolve を使うときは、目的関数の勾配を使うべきです。
obj := proc(v) 10*v[1]^2 - 2*v[1]*v[2]^2 + v[2]^4 + 1 - 2*v[2] + v[2]^2 end proc: objgrad := proc(v, w) w[1] := 20*v[1] - 2*v[2]^2: w[2] := -4*v[1]*v[2] + 4*v[2]^3 - 2 + 2*v[2] end proc: NLPSolve(2, obj, objectivegradient=objgrad);
参照
Optimization, Optimization/AlgebraicForm, Optimization[Interactive], Optimization[LPSolve], Optimization[LSSolve], Optimization/MatrixForm, Optimization[Maximize], Optimization[Minimize], Optimization[NLPSolve], Optimization/OperatorForm, Optimization[QPSolve]
Download Help Document