楼主: 童小军
5557 14

[问答] 有没有人用R写过线性优化或者二次优化或者其他优化的程序? [推广有奖]

11
danica33 发表于 2014-3-24 13:02:38
R包alabama可以解决非线性优化constrOptim.nl()

12
danica33 发表于 2014-3-24 13:09:27
用R包alabama里面的constrOptim.nl可以解决非线性约束条件下的非线性目标函数的优化,应该可以解决你的问题

13
童小军 发表于 2014-3-26 20:05:55
嗯,谢谢。不过R这方面和MATLAB还是有差距的。下面是我用MATLAB谢的优化程序。

14
童小军 发表于 2014-3-26 20:06:52
% 4.1 (a) (b) (c)为线性优化
f1 = [1; 1]
f2=[-1;-1]
f3=[1;0]
A =  [-2  -1
     -1   -3];
b = [-1; -1];
lb = zeros(2,1);
an1 = linprog(f1,A,b,[],[],lb)
an2 = linprog(f2,A,b,[],[],lb)
an3 = linprog(f3,A,b,[],[],lb)

an1 =
    0.4000
0.2000
an2 =
  1.0e+011 *

    8.3784
0.0000
这说明结果为负无穷。
an3 =
    0.0000
   64.9371
%4.1 (c)
f =@ (x)max(x(1), x(2));
A =  [-2  -1
     -1   -3];
b = [-1; -1];
x0 = [10; 10] % Starting guess at the solution
[x,fval] = fmincon(f,x0,A,b)

结果为:
x =

    0.3333
    0.3333
fval =
    0.3333
%4.1 (c)和4.3为二次优化
H = [13 12 -2;12 17 6;-2 6 12]
f = [-22 -14.5 13]
lb =[-1; -1;-1]
ub=[1 ;1;1]
[x,fval,exitflag,output,lambda] = ...
   quadprog(H,f,[],[],[],[],lb,ub)
结果为:
x =

    0.5000
    0.1667


fval =

    0.1667
H = [13 12 -2;12 17 6;-2 6 12]
f = [-22 -14.5 13]
lb =[-1; -1;-1]
ub=[1 ;1;1]
[x,fval,exitflag,output,lambda] = ...
   quadprog(H,f,[],[],[],[],lb,ub)
结果为:
x =
    1.0000
    0.5000
   -1.0000
Fval= -22.6250

15
Matilida 发表于 2016-4-5 21:00:37
danica33 发表于 2014-3-24 13:09
用R包alabama里面的constrOptim.nl可以解决非线性约束条件下的非线性目标函数的优化,应该可以解决你的问题
用上面这个函数时报错:Error in optim(par = theta, fn = fun, gr = grad, control = control.optim,  :
  initial value in 'vmmin' is not finite,请问是什么问题啊??

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 05:02