数学建模感想

一.关于Lingo

  Lingo适用于求解线性规划。目前学习较浅,一般求解代码又三部分组成。

  第一部分

  sets…endsets,用来定义索引以及变量。如下图所示,aa用来表示一行九列,可以表示索引如在for循环中定义aa(i),则就是指定i=1,2…9,还可以表示矩阵如在定义变量类型dd时使用aa。总的来说就是:前面的类型可以用于定义索引下标和新类型,后面的具体变量用来存储数据

  第二部分

  data…enddata,用来定义常量数据。注意的是在lingo中变量不需要定义,如在约束条件或者目标表达式中用了变量tx,而tx不需要定义在sets或者data部分。**需要注意的是定义在sets部分的变量常是多维度的集合,而定义在data部分的常量常是多维度的。**即若如以上有tx,那么tx只能代表一个数值。

  第三部分

  在enddata或者endsets之后。一般首先定义目标函数,如max=f(x)或者min=f(x),但也可以不定义目标,这时候只要满足约束条件lingo就认为找到了可行解会停止。需要注意的是data中定义的数据是常量是不会变化的,而sets中定义的是变量,直接在约束条件中出现的单值量也是变量,这二者是会变化的,即lingo会根据约束条件来变化变量,以此来求得目标值和解的情况。

  第四部分

  约束条件。即在什么情况下,应该(需要)满足什么条件,这就是约束条件。约束条件常以表达式形式表示,我们要做的就是把约束表达出来,即把数学约束表达为在程序的什么什么条件下,什么什么应该满足什么条件。如图数学表达式一为,j=1到j=9求和Xijk等于1,而i=1,2…9和k=1,2…9表示的是当k和i取某个具体的值时。即此式意义为:对于 任意i属于1,2…9,k属于1,2…9,都有求和j=1,2…9 Xijk = 1。即数学表达式后面的变量表示取某个任意具体的值时,前面数学表达式都成立。所以对于图中第四个式子,规范的写法应该将“任意sx…sy…}”的内容转换到数学表达式之后,表达为(sx=1,4,7)(sy=1,4,7)。
在这里插入图片描述

  第五部分

  数学表达式到代码上的转换。我们使用lingo定义约束条件就是要表明:在A情况下,B成立。B成立就是约束。如图将数学表达式1转换为代码中第二个for循环,要表达对于i,k都有求和Xijk=1成立,其实就是转换:任意->所有。即对于所有的i,k都有求和Xijk=1成立。所以使用循环即可,需要注意的是要注意嵌套的层次。假设是对于任意a,b,c,d,则嵌套第一层到第四层应该是:循环枚举a>循环枚举b>循环枚举c>循环枚举d。这样即完成了“任意”的设置,其实也就是设定在A的情况下。外层应该为条件A,内层应该为数学表达式B。解释如图lingo中第四个表达式,标准化后,嵌套循环依次为:sx,sy,k,求和Xijk=1。

  第六部分

  lingo的@for与@sum函数。循环函数要设置循环迭代下标,然后根据迭代下标来进行循环。比如第四个表达式最外层就设置了循环迭代下标si,cc(si)设定迭代下标si为从1…3,然后si就可以作为其他的集合的下标,完成在对si循环迭代时对其他集合的循环。重点解释第四个表达式中第四层循环,在确定sx,sy,k之后,我们要对二维i=sx…sx+2 j=sy…sy+2求和,所以设定和使用了集合定义dd,dd就是定义了9行9列的下标,使得xi,xj属于1,2…9。 对于求和函数@sum,我们要设置迭代下标,但是求和的目标是“:”之后的表达式,即**@sum函数和@for循环一样,会根据设置的下标迭代,但不同的就是@sum函数会把迭代的值求和起来。**比如其@sum dd(xi,xj) 就会对xi=1…9,xj=1…9依次迭代求和。如题我们有约束,不能那么死板的迭代而有约束怎么办,在设置迭代下标之后使用“|”,在其之后定义约束条件即可。如图xi>=sx(si) xi<=sx(si)+2,就在1…9的基础上限制了范围。二维迭代要使用二维定义,几维使用几即可。

在这里插入图片描述

二.关于实际题目的建模

  数学建模要高效率、逻辑清晰!没有搞明白问题背景和原理就别写模型!没有写好模型就别尝试求解!不断试错只是浪费时间而已。

  第一部分

  数学建模就是要把实际的问题转换为数学模型来表示。遇到一个问题Q,首先我们要对于问题Q进行理解,然后针对实际全面思考,做出问题的简化,然后思考解决的方法。

  第二部分

  尝试建模。建模就是把实际问题转换为数学模型。既然是问题,一定会有目标,目标分为两类,第一类就是”最优化“,第二类就是”约束条件“。 第二类目标表示的是对于所有的情况,哪些情况是可以解决问题的。第一类目标表示的是在可行的前提下,筛选可行解得到目标解的依据,即最好解决问题的标准。

  第二部分

  目标就是最大值或者最小值目标。直接写在约束条件上面即可。但是如何表示最优解呢?或者说如何用数学去描述问题呢?数学的世界要用数学符号、数字数据、数学理论来描述问题。 符号的设置应该以简单清晰、科学规范、合理恰当为标准,越简单的表示越有利于清晰的表述问题,可以降低问题复杂度。最简单的能够完美解决问题的方法,就是最好的方法!
  而约束条件,或者说所有情况->可行解的条件,直接写在目标下面即可。要将条件转换为规范完善的约束条件。
   即步骤为:
  【1】用符号描述问题(简单清晰、合理科学)
  【2】根据问题条件(最优解条件、可行解条件)来设置目标函数和约束条件。目标函数要切实最终目标。约束条件要完善,不仅要表达成为可行解条件,更需要根据问题切实的约束符号,以此保证实际的针对显示问题建模。(比如0-1问题、整数规划对未知量范围以及取值的限制;以及对参数、常数的限制等等)
  【3】检查和检验模型。模型建立后不一定是正确的,而且很可能是不完备的,需要自上而下的检查是否完备!更需要使用结果来检验模型的正确性!

三.编程求解

四.验证最优解,对模型检验,完善模型

五.参考附录

Lingo比较与逻辑运算符
Matlab和Lingo的函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: stk航天是我在航天领域学习的一门重要课程,通过这门课程的学习,我对航天的方法和技巧有了更深刻的理解,也提升了自己的能力。 首先,stk航天让我了解了航天器和卫星轨道的基本知识。通过学习航天器的运行机理、轨道动力学以及地球引力等概念,我对航天器的运行规律有了更清晰的认识。同时,我也学会了如何利用stk软件进行卫星的轨道设计和分析,提高了自己的实践能力。 其次,stk航天让我了解了不同类型的轨道和编队飞行的原理。通过学习地心轨道、静止轨道、高椭圆轨道等不同类型的轨道,我对不同类型轨道的特点和应用有了更详细的了解。此外,我还学习了卫星编队飞行的方法和技巧,了解了编队飞行的优势和挑战。 最后,stk航天培养了我对复杂系统和仿真的能力。航天不仅仅是简单的轨道设计,还需要考虑到各种因素对轨道运行的影响。通过学习stk软件的使用和实践,我逐渐熟悉了复杂系统的过程,了解了如何通过和仿真来优化航天器的运行。 总的来说,stk航天是一门非常实用的课程,通过学习这门课程,我对航天领域有了更深入的了解,并提升了自己的能力。我相信在今后的学习和工作中,这门课程所培养的技能将对我有很大的帮助。 ### 回答2: 我参加stk航天学习后,收获颇多。首先,学习到了一种新的方法和工具。stk航天是一种基于物理原理的方法,通过拟真实的太空环境和物理过程,可以更加直观地理解和研究航天器的运行规律。而stk软件作为一种强大的拟和分析工具,使得过程更加简单高效。 其次,学习stk航天增强了我的空间思维能力。在过程中,需要考虑到各种因素对航天器轨道和运行状态的影响,这要求我能够从多个角度进行思考,并且综合运用物理、数学和工程知识进行分析和推演。这一过程培养了我的空间思维能力,使我能够更好地理解和解决复杂的航天问题。 此外,通过stk航天学习,我深刻认识到了航天技术的重要性和前沿性。航天技术不仅是国家发展的重要战略领域,也是人类探索宇宙奥秘、拓展人类空间的关键手段。学习航天让我更加深入理解了航天技术的科学原理和工程应用,也让我对未来航天事业充满了憧憬和热爱。 总之,stk航天学习是一次宝贵的经历,它不仅让我掌握了一种新的方法和工具,还培养了我的空间思维能力,激发了我对航天技术的热情。我相信这些收获将对我的学习和未来的职业发展产生积极的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仰望—星空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值