声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4485|回复: 7

[1stopt] 求解非线性方程组提示parameter有错

[复制链接]
发表于 2009-11-19 13:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
parameter K11=7.057*10^8,  K12=0.7873*10^8, K21=0.7873*10^8, K22=6.9866*10^8;
         parameter K_1=-0.0227*10^8,  K_2=0.0015*10^8;
         parameter mr=600*10^3,  w=13.1,  delta0=18*10^-3,  Ke=0.5*10^10,  Rg=6.24;
         parameter A11=(K11+Ke)/(mr*w^2),  A12=K12/(mr*w^2),  A21=K21/(mr*w^2),  A22=(K22+Ke)/(mr*w^2);
         parameter B1=K_1/(mr*delta0*w^2),  B2=K_2/(mr*delta0*w^2);
         parameter x,y;
         
                           function       A11*x+A12*y+B1- Rg/delta0*x/sqrt(x^2+y^2)=0;
                                          A21*x+A22*y+B2-Rg/delta0*y/sqrt(x^2+y^2)=0;


刚刚接触1stopt,对它不是很了解。想求解上面的一个非线性方程组,但提示parameter定义有错,请问我错在哪里,应该如何改正(因为方程中涉及的参量有点多,所以不希望用数值而是用参量表达)。另外,是不是采用不同的方法得到的结果就不一样呢(我用x^2-1=0做了实验,本应该结果为1和-1,但往往只有其中一个结果,请问这又是如何,谢谢)!
回复
分享到:

使用道具 举报

发表于 2009-11-19 13:28 | 显示全部楼层
delta0=18*10^-3 ?

10^(-3)?
发表于 2009-11-19 13:52 | 显示全部楼层
改为如下:

Constant K11=7.057*10^8,  K12=0.7873*10^8, K21=0.7873*10^8, K22=6.9866*10^8;
Constant K_1=-0.0227*10^8,K_2=0.0015*10^8;
Constant mr=600*10^3,w=13.1,delta0=18*10^(-3),Ke=0.5*10^10,Rg=6.24;
ConstStr A11=(K11+Ke)/(mr*w^2),A12=K12/(mr*w^2),A21=K21/(mr*w^2),A22=(K22+Ke)/(mr*w^2);
ConstStr B1=K_1/(mr*delta0*w^2),B2=K_2/(mr*delta0*w^2);
parameter x,y;
function A11*x+A12*y+B1- Rg/delta0*x/sqrt(x^2+y^2)=0;
         A21*x+A22*y+B2-Rg/delta0*y/sqrt(x^2+y^2)=0;

结果:
x: 4.00059763108329
y: 4.72267354795873
 楼主| 发表于 2009-11-29 10:38 | 显示全部楼层

回复 板凳 dingd 的帖子

谢谢楼上了,的确把除x,y之外的参数改为constant属性就可以了,但是还有一个问题,为什么每一次求解的结果都不相同(比如不同的方法,或者相同的方法但求解多次)?
发表于 2010-8-29 10:18 | 显示全部楼层
回复 chunshui2003 的帖子


    因为每次的初始值都是随机给的
发表于 2011-10-7 19:47 | 显示全部楼层
本帖最后由 shengshengchina 于 2011-10-7 20:08 编辑

关于国产软件lstopt与lingo软件比较
从介绍来看,lstopt说是比其他同类软件都要优越,而且举了很多比较复杂的例子佐证。不可否认那些举得例子确实举得非常的恰当,刚好发挥了lstopt的独特的地方,但是任何软件在推销自己的时候总是善于举例的。
不过,我想仁者见仁,其实也有很多例子,lingo比lstopt更胜一筹。在此仅举一例:
Parameters x(1:2)[0,10000000000,0];
MinFunction -(98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2);
x1+x2<=100;
x1<2*x2;
连续运行了好几次,最好的一次给出的结果如下(有好多次结果差的相当的雷人,这不禁让我很担心这套软件何时算得的是最优解):
====== 结果 ======
迭代数: 26
计算用时(时:分:秒:毫秒): 00:00:00:78
计算中止原因: 达到收敛判定标准
优化算法: 麦夸特法(Levenberg-Marquardt) + 通用全局优化法
函数表达式: -(98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2)
目标函数值(最小): -11070.7
x1: 37
x2: 63
约束函数
   1: x1+x2-(100) = 0
   2: x1-(2*x2) = -89
====== 计算结束 ======

但lingo算法结果是11077.50

min=-(98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2);
x1+x2<=100;
x1<2*x2;

  Local optimal solution found.
  Objective value:                             -11077.87
  Infeasibilities:                              0.000000
  Extended solver steps:                               5
  Total solver iterations:                            34

                       Variable           Value        Reduced Cost
                             X1        35.37037            0.000000
                             X2        64.62963            0.000000
                            Row    Slack or Surplus      Dual Price
                              1       -11077.87           -1.000000
                              2        0.000000            7.870370
                              3        93.88889            0.000000
发表于 2011-10-7 22:27 | 显示全部楼层

1:名字都搞错了吧?是“1stOpt”而不是“lstOpt”
2:基本语法都没搞清就匆忙比较下结论,如此不严谨令人怀疑毕业于哪个“北京大学”
3:“Parameters x(1:2)[0,10000000000,0];”这句话什么意思不知搞懂没有?Lingo代码中对应的在哪?
4:1stOpt中不同的算法对应不同的优化问题,如果是求整数解可选用“鲁棒简面体+通用优化算法”
5:

  1. MinFunction -(98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2);
  2. x1+x2<=100;
  3. x1<2*x2;
复制代码
几乎任何算法都可100%得到:
最优解: -11077.8703703702
x1: 35.3703631305499
x2: 64.6296368694502

如果求整数解:

  1. Algorithm = SM3;
  2. Parameters x(1:2)[0,10000000000,0];
  3. MinFunction -(98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2);
  4. x1+x2<=100;
  5. x1<2*x2;
复制代码
可100%得最优解:
最优解: -11077.5
x1: 35
x2: 65

用的是4.0.
发表于 2011-10-8 13:19 | 显示全部楼层
本帖最后由 shengshengchina 于 2011-10-8 18:57 编辑
dingd 发表于 2011-10-7 22:27
1:名字都搞错了吧?是“1stOpt”而不是“lstOpt”
2:基本语法都没搞清就匆忙比较下结论,如此不严谨令 ...


首先就这个程序而言,我不是不严谨,而是太不严谨,这个例子真是举错了,太仓促了,对不起!尽管如此,但我认为不代表没有这样的例子。我的本意是想表达1stOpt在很多方面不如lingo,如果您觉得不能接受的话,我只好再说一声对不起了!
您提到的第一点应该还有半句没说完:一个连软件名字都没搞明白的人,还有什么资格谈论呢?确实我真是搞错了,前几天我才发现这个严重的问题。我也很奇怪,为什么lingo的名字我就没有把“l”和“1”写错呢?
至于您说我不懂Parameters x(1:2)[0,10000000000,0];这句什么意思,我很想听您给我讲一讲这句的意思,我真是虚心讨教的,没别的意思。
退一步说,这个例子太简单了,如果这么简单的例子都不对,那这软件有什么用?
这位主任质疑我毕业于哪个“北京大学“的,我想与其说您在质疑我,倒不如说您在说气话,真没必要质疑了,能看得出来,您是这方面的专家,所以我也很想知道您是哪个大学的教授,异或博士生导师?其实您也知道,我不是北京大学的,我也不想玷污北大的名声,我不过随便写了一个信息注册而已,上面我的出生日期恐怕也是乱写的。如果主任真要想看完我的资料再发表看法的话就没必要了,你直接问我就好了。我就算在这错得一无是处,最起码说哪个学校毕业的还是有勇气的。
我能看得出来您是非常生气了,我表示非常抱歉(不过,您的度量有点令我诧异)!
关于这两个软件,我想当然不能是我这么一个不严谨的人在这里瞎比较就能说明什么的,网上还有很多人也做过比较,大家都可以查看。
顺便插一句,一个软件好不好用,当然不是我说不好就不好,而是需要用的人多。所以如果这位主任能够有一颗包容之心,赠我一款全功能版的1stOpt软件(就您说的4.0版好了),我愿意好好研究,可惜我有这么上进的一颗心,但就是找不到一款我可以免费使用的软件。
当然您也许会马上瞧不起我,就不会花钱买个正版吗?实在对不起,也许我太穷了,不过我想说的是,像抱有我这样的想法的人恐怕不少,您不能怨我,我只是他们的一个缩影。
尽管我对1stOpt好像带有很大的偏见,但我本人非常支持国产软件(您应该可以看得出来,不知道这会不会令您很诧异呢),不过我个人觉得国产软件的推广实在是有很多地方需要向国外学习!
一款好的软件应该让更多的普通人学会,而不是只掌握在少数精英的手里!从这个意义上来说,您在上面给我这个连基本语法都不懂的人做那么详尽的解答,当然也是在推广这款软件的使用,所以我愿意,也应该向您致敬!

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-24 20:48 , Processed in 0.057593 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表