主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。

알고리즘선택하기

fmincon알고리즘

fmincon5에는다음과같이가지알고리즘옵션이있습니다。

  • “内点”(디폴트값)

  • “信任区域反射”

  • “sqp”

  • “sqp-legacy”

  • “激活集”

명령줄에서算法옵션을 설정하려면optimoptions를사용하십시오。

권장사항
  • “内点”알고리즘을먼저사용해보십시오。

    최소화에실패할경우도움말을보려면솔버가실패하는경우항목또는솔버가성공했을수있는경우항목을참조하십시오。

  • 소규모또는중간규모문제에대해속도를높이기위해최적화를재실행하려면이후에“sqp”를 사용한 후“激活集”를 마지막으로 사용해 보십시오.

  • 가능한경우“信任区域反射”를사용해보십시오。문제에는기울기와함께,범위또는선형등식제약조건중하나만포함하는목적함수가있어야합니다。

内点알고리즘사용시발생할수있는잠재적부정확성문제항목을참조하십시오。

권장사항에대한근거

  • “内点”는대규모희소문제는물론소규모의조밀한문제도처리합니다。이알고리즘은모든반복에서범위를충족하고또는Inf결과에대해대처할수있습니다。이는대규모알고리즘입니다。대규모알고리즘과중간규모알고리즘비교항목을 참조하십시오. 이 알고리즘은 대규모 문제에 특수한 기법을 사용할 수 있습니다. 자세한 내용은fmincon选项内点알고리즘을참조하십시오。

  • “sqp”는모든반복에서범위를충족합니다。이알고리즘은또는Inf결과에대해대처할수있습니다。이는대규모알고리즘이아닙니다。대규모알고리즘과중간규모알고리즘비교항목을참조하십시오。

  • “sqp-legacy”“sqp”와유사하지만,일반적으로더느리고더많은메모리를사용합니다。

  • “激活集”은 큰 스텝을 취할 수 있으며, 이는 속도를 높입니다. 이 알고리즘은 매끄럽지 않은 제약 조건이 있는 일부 문제에 효과적입니다. 이는 대규모 알고리즘이 아닙니다.대규모알고리즘과중간규모알고리즘비교항목을참조하십시오。

  • “信任区域反射”를 사용하려면 기울기 값을 입력해야 하며, 범위 또는 선형 등식 제약 조건 중 하나만 제공할 수 있습니다. 이러한 제한 사항 내에서, 이 알고리즘은 대규모 희소 문제와 소규모의 조밀한 문제 모두를 효율적으로 처리합니다. 이는 대규모 알고리즘입니다.대규모알고리즘과중간규모알고리즘비교항목을참조하십시오。이알고리즘은헤세행렬의곱셈함수와같이메모리사용량을절약하는특수한기법을사용할수있습니다。자세한내용은fmincon选项Trust-Region-Reflective알고리즘을참조하십시오。

알고리즘에대한설명은제약조건이있는비선형최적화알고리즘항목을참조하십시오。

fsolve알고리즘

fsolve3에는다음과같이가지알고리즘이있습니다。

  • “trust-region-dogleg”(디폴트값)

  • “信赖域”

  • “levenberg-marquardt”

명령줄에서算法옵션을 설정하려면optimoptions를사용하십시오。

권장사항
  • “trust-region-dogleg”알고리즘을먼저사용해보십시오。

    fsolve가실패할경우도움말을보려면솔버가실패하는경우항목또는솔버가성공했을수있는경우항목을참조하십시오。

  • 야코비행렬의곱셈함수를사용하는경우이거나내부알고리즘을조정하려는경우방정식을다시풀려면(fsolve选项信赖域알고리즘참조)“信赖域”을사용해보십시오。

  • “levenberg-marquardt”를 포함하여 모든 알고리즘의 시간을 측정하면 문제에 가장 효과적인 알고리즘을 찾을 수 있습니다.

권장사항에대한근거

  • “trust-region-dogleg”는비선형방정식을풀도록특별히설계된유일한알고리즘입니다。타알고리즘은함수의제곱합을최소화하려고시도합니다。

  • “信赖域”알고리즘은희소문제에효과적입니다。이알고리즘은대규모문제에야코비행렬의곱셈함수와같은특수한기법을사용할수있습니다。

알고리즘에대한설명은방정식풀이알고리즘항목을참조하십시오。

fminunc알고리즘

fminunc에는다음과같이두가지알고리즘이있습니다。

  • “拟牛顿”(디폴트값)

  • “信赖域”

명령줄에서算法옵션을 설정하려면optimoptions를사용하십시오。

권장사항
  • 목적함수에기울기가포함되어있으면“算法”=“信赖域”을사용하고SpecifyObjectiveGradient옵션을符合事实的로설정하십시오。

  • 그렇지않은경우'算法'='拟牛顿'을사용하십시오。

최소화에실패할경우도움말을보려면솔버가실패하는경우항목또는솔버가성공했을수있는경우항목을참조하십시오。

알고리즘에대한설명은제약조건이없는비선형최적화알고리즘항목을참조하십시오。

최소제곱알고리즘

lsqlin

lsqlin3에는다음과같이가지알고리즘이있습니다。

  • “内点”(디폴트값)

  • “信任区域反射”

  • “激活集”

명령줄에서算法옵션을 설정하려면optimoptions를사용하십시오。

권장사항
  • “内点”를먼저사용해보십시오。

    입력 행렬C에서 많은 부분이 0이 아닌 요소로 구성된 경우 성능을 높이려면C를일반双형행렬로지정하십시오。마찬가지로,C0이에서아닌요소가상대적으로적은경우성능을높이려면C를 희소 행렬로 지정하십시오. 데이터형에 대한 세부 정보는희소행렬항목을참조하십시오。“LinearSolver”옵션을 사용하여 내부 선형 대수 유형을 설정할 수도 있습니다.

  • 제약조건이전혀없거나범위제약조건만있는경우,더높은정확도또는더높은속도를원하거나雅可比函数与线性最小二乘를사용하려면“信任区域反射”를사용해보십시오。

  • 선형제약조건은많지만변수는많지않다면“激活集”를사용해보십시오。

최소화에실패할경우도움말을보려면솔버가실패하는경우항목또는솔버가성공했을수있는경우항목을참조하십시오。

内点알고리즘사용시발생할수있는잠재적부정확성문제항목을참조하십시오。

알고리즘에대한설명은최소제곱(모델 피팅) 알고리즘항목을참조하십시오。

最小二乘拟合과 解非线性最小二乘问题

lsqcurvefitlsqnonlin에는다음과같이두가지알고리즘이있습니다。

  • “信任区域反射”(디폴트값)

  • “levenberg-marquardt”

명령줄에서算法옵션을 설정하려면optimoptions를사용하십시오。

권장사항
  • 일반적인경우,“信任区域反射”를먼저사용해보십시오。

  • 부족결정(방정식수가차원수보다적음)문제인경우에는“levenberg-marquardt”를사용하십시오。

최소화에실패할경우도움말을보려면솔버가실패하는경우항목또는솔버가성공했을수있는경우항목을참조하십시오。

알고리즘에대한설명은최소제곱(모델 피팅) 알고리즘항목을참조하십시오。

선형계획법알고리즘

线性规划问题3에는다음과같이가지알고리즘이있습니다。

  • 对偶单纯形的(디폴트값)

  • “interior-point-legacy”

  • “内点”

명령줄에서算法옵션을 설정하려면optimoptions를사용하십시오。

권장사항

对偶单纯形的알고리즘또는“内点”알고리즘을먼저사용해보십시오。

최소화에실패할경우도움말을보려면솔버가실패하는경우항목또는솔버가성공했을수있는경우항목을참조하십시오。

内点알고리즘사용시발생할수있는잠재적부정확성문제항목을참조하십시오。

권장사항에대한근거

  • 대개对偶单纯形的알고리즘과“内点”알고리즘이빠르며메모리를가장적게사용합니다。

  • “interior-point-legacy”알고리즘은“内点”와유사하지만“interior-point-legacy”가더느리거나덜견고하거나더많은메모리를사용할수있습니다。

알고리즘에대한설명은선형계획법알고리즘항목을참조하십시오。

2차계획법알고리즘

二次规划优化函数3에는다음과같이가지알고리즘이있습니다。

  • “interior-point-convex”(디폴트값)

  • “信任区域反射”

  • “激活集”

명령줄에서算法옵션을 설정하려면optimoptions를사용하십시오。

권장사항
  • 볼록문제를풀거나문제가볼록인지여부를알지못하는경우“interior-point-convex”를사용하십시오。

  • 헤세행렬H에서 많은 부분이 0이 아닌 요소로 구성된 경우 성능을 높이려면H를일반双형행렬로지정하십시오。마찬가지로,H0이에서아닌요소가상대적으로적은경우성능을높이려면H를 희소 행렬로 지정하십시오. 데이터형에 대한 세부 정보는희소행렬항목을참조하십시오。“LinearSolver”옵션을 사용하여 내부 선형 대수 유형을 설정할 수도 있습니다.

  • 범위또는선형등식중하나만포함하는비볼록문제가있는경우“信任区域反射”를사용하십시오。

  • 선형제약조건은많지만변수는많지않은양의준정부호문제가있는경우“激活集”를사용해보십시오。

최소화에실패할경우도움말을보려면솔버가실패하는경우항목또는솔버가성공했을수있는경우항목을참조하십시오。

内点알고리즘사용시발생할수있는잠재적부정확성문제항목을참조하십시오。

알고리즘에대한설명은2차계획법알고리즘항목을참조하십시오。

대규모알고리즘과중간규모알고리즘비교

최적화 알고리즘은 비희소 행렬을 저장할 필요가 없거나 비희소 행렬에서 연산할 필요가 없는 선형 대수를 사용할 때는대규모알고리즘입니다。이는희소행렬을저장하고가능한경우에항상계산에희소선형대수를사용함으로써내부적으로수행될수있습니다。또한,내부알고리즘은희소성을유지하거나(예:희소촐레스키분해),행렬을생성하지않습니다(예:켤레기울기법)。

이와대조적으로,중간 규모방법은내부적으로비희소행렬을만들고조밀한선형대수를사용합니다。문제가충분히큰경우비희소행렬은상당량의메모리를차지하며조밀한선형대수를실행하는데긴시간이필요할수있습니다。

“대규모”라는 명칭을 오해하지 마십시오. 소규모 문제에 대규모 알고리즘을 사용할 수도 있습니다. 또한, 대규모 알고리즘을 사용하기 위해 희소 행렬을 지정할 필요가 없습니다. 추가 제약 조건 유형과 같은 추가 기능을 이용하거나 가능한 경우 성능을 높이려면 중간 규모 알고리즘을 선택하십시오.

内点알고리즘사용시발생할수있는잠재적부정확성문제

fmincon二次规划优化函数lsqlin线性规划问题의行内点알고리즘에는적은메모리사용량및대규모문제를신속하게풀수있는기능과같은많은훌륭한특징이있습니다。하지만,이알고리즘의해는다른알고리즘의해보다정확성이약간떨어질수있습니다。이러한부정확성문제가발생할수있는이유는(내부적으로계산된)장벽함수가반복이부등식제약조건경계에가까워지지않도록유지하기때문입니다。

대부분의실사용목적에서는,이부정확성이대개매우작습니다。

부정확성을 줄이려면 다음 방법을 사용해 보십시오.

  • 더작은StepToleranceOptimalityTolerance및 가능한 경우ConstraintTolerance허용오차를사용하여솔버를다시실행합니다(단,허용오차를합당한수준으로유지해야함)。허용오차와중지기준항목을참조하십시오。

  • 内点해부터시작하여다른알고리즘을실행합니다。일부알고리즘이과도한메모리나시간을사용할수있고모든线性规划问题알고리즘과일부二次规划优化函数알고리즘은초기점을받지않으므로이작업은실패할수있습니다。

예를들어,하한이0으로설정된상태로함x수를최소화해보겠습니다。fmincon의디폴트内点알고리즘을사용하는경우다음과같이합니다。

选择= optimoptions (@fmincon,“算法”“内点”“显示”“关闭”);x = fmincon (@ x (x), 1 ,[],[],[],[], 0[][]选项)
x = 2.0000 e-08

fminconsqp알고리즘을사용하는경우다음과같이합니다。

选项。算法=“sqp”;x2=fmincon(@(x)x,1,[],[],[],[],[],[],0,[],[]选项)
x2 = 0

마찬가지로,线性规划问题内点遗产알고리즘을사용하여동일한문제를풉니다。

选择= optimoptions (@linprog,“显示”“关闭”“算法”“interior-point-legacy”);x=linprog(1,[]、[]、[]、[]、[]、[]、0,[]、1,选项)
x = 2.0833 e-13

线性规划问题对偶单纯形알고리즘을사용하는경우다음과같이합니다。

选择。算法=对偶单纯形的;x2=linprog(1,[]、[]、[]、[]、[]、[]、0,[]、1,选项)
x2 = 0

위의경우들을보면行内点알고리즘의정확도는떨어지지만그답은정답에매우가깝습니다。