微分方程求解。。。

查看: 26774|回复: 30
规划求解工具
阅读权限90
在线时间 小时
本帖已被收录到知识树中,索引项:
规划求解工具,也称作“假设分析”。工作表中公式计算结果,在变动单元格中的变量后,结果出现变化,例如:
1、根据已知结果倒推变量应赋予的初值:利润=销售额-成本-税收;而税收=利润*3%之类,可以用单变量求解、循环引用,也可规划求解。
2、根据已知参数和配比,寻找最佳组合方案:这种应用案例居多
阅读权限90
在线时间 小时
本帖最后由 yiyiyicz 于
14:10 编辑
Sub tt()
& &Dim i As Integer
& &For i = 3 To 100
& & SolverReset
& & SolverOk SetCell:=&$L$& & i, MaxMinVal:=3, ValueOf:=&0&, byChange:=&$G$& & i & &:$J$& & i
& & SolverAdd CellRef:=&$G$& & i & &:$J$& & i, Relation:=4, formulaText:=&整数&
& & SolverAdd CellRef:=&$G$& & i & &:$J$& & i, Relation:=1, formulaText:=&10&
& & SolverAdd CellRef:=&$G$& & i & &:$J$& & i, Relation:=3, formulaText:=&0&
& & SolverOk SetCell:=&$L$& & i, MaxMinVal:=3, ValueOf:=&0&, byChange:=&$G$& & i & &:$J$& & i
& & SolverSolve Userfinish = False
& & Next i
End Sub
复制代码前面加 SolverReset 设置重置
最后 SolverSolve Userfinish = False
byChange:=&$G$& & i & &:$J$& & i&&可以改用 cells( )
阅读权限90
在线时间 小时
Q:已经在“加载项”加载了“规划求解”,为何在VBA中调用规划求解工具还是出现“子过程或函数未定义”错误?
A:必须建立对规划求解加载宏的引用,操作方法如下:
在VBE窗口中,单击“工具”→“引用,从“可使用的引用”列表框中选择“Solver.xla”或“Solver”复选框。
1、菜单中的“引用”是灰色的?——可能是执行代码出错,先停止代码运行。
2、Excel 2003 则把Office 14改为Office 11
3、是引用Solver.xla,不是.dll
阅读权限90
在线时间 小时
本帖最后由 yiyiyicz 于
14:25 编辑
根据货物数量和纸箱规格优化装货
有一批货物需要用纸箱包装后运走,目前有5种规格的纸箱,分别可以装下24、16、12、8和5个货品。如何根据货品的数量来决定装箱的方案,以便尽量装满纸箱和尽量少用纸箱?
14:43:16 上传
下载附件 (25.65 KB)
这是一个典型的优化方案求解类型,使用规划求解功能求解最小值。
【模型构建】
G5单元格公式:
=SUM(B5:F5)
H5单元格公式:
=SUMPRODUCT(B$4:F$4,B5:F5)-A5
分别求得所用纸箱数量和空位(比如拿规格为5的箱子装了3个货品,则空位为2)
I5单元格输入:
=G5+H5*1000
为何H5*1000——这只是一个意思,表示H5比G5重要,也就是说,能够刚好都装满箱子没有空位是前提,然后再是尽量少用箱子。
【规划求解】设置:
即:I5作为目标单元格,求“最小值”
B5:F5作为可变单元格,添加整数、&=0的约束;H5添加&=0的约束求解
阅读权限90
在线时间 小时
本帖最后由 yiyiyicz 于
14:49 编辑
根据货物数量和纸箱规格优化装货(续)
每次在A5单元格输入货品数量,再调用规划求解工具,这个操作很繁琐。因此,做了个按钮,在VBA中调用规划求解工具:
代码如下:
Sub 求解()Range(&I5&).Formula = &=G5+H5*1000&SolverReset& & SolverOk SetCell:=&I5&, MaxMinVal:=2, ValueOf:=&0&, byChange:=&B5:F5&& & SolverAdd CellRef:=&B5:F5&, Relation:=4, formulaText:=&整数&& & SolverAdd CellRef:=&B5:F5&, Relation:=3, formulaText:=&0&& & SolverAdd CellRef:=&H5&, Relation:=3, formulaText:=&0&& & SolverOptions AssumeLinear:=False& & SolverSolve UserFinish:=True& & SolverFinish KeepFinal:=1End Sub
Excel 2007的规划求解与2003版有较多变动,Engine=1在2007版中表示“非线性”求解,
在Excel 2003版中,对应为:SolverOptions AssumeLinear:=False
阅读权限90
在线时间 小时
本帖最后由 yiyiyicz 于
14:37 编辑
根据货物数量和纸箱规格优化装货(续)
【设置目标单元格和求解模式】
SolverOk SetCell:=Range(&I5&),设置目标单元格,此处为I5单元格
MaxMinVal:=2 ,设置求解最值模式,=1是求最大值,=2是求最小值,=3是“目标值”并设置目标值的具体数值ValueOf:=&0&(目标值为0,本例可以不用)
【设置可变单元格】
byChange:=Range(&B5:F5&),设置可变单元格为B5:F5
【添加约束条件】
Solveradd CellRef:=Range(&B5:F5&), Relation:=4, formulaText:=&整数&
添加约束条件,其中,Relation:=4 表示约束单元格与约束值的关系,1为&=,2为=,3为&=,4为INT,5为BIN,6为DIF
formulatext则是约束的值。
【设置求解模型】
Engine:=1,所使用的“引擎”为1,表示 表示单工 LP 方法(线性规划),2 表示 GRG 非线性方法,或 3 表示进化方法(2010版称“演化”)。
阅读权限90
在线时间 小时
本帖最后由 yiyiyicz 于
14:37 编辑
根据货物数量和纸箱规格优化装货(续)
【是否手工确认求解结果】
此时,如果是代码:
Sub 求解()Range(&I5&).Formula = &=G5+H5*1000&SolverReset& & SolverOk SetCell:=Range(&I5&), MaxMinVal:=2, ValueOf:=&0&, byChange:=Range(&B5:F5&), Engine:=1& & Solveradd CellRef:=Range(&B5:F5&), Relation:=4, formulaText:=&整数&& & Solveradd CellRef:=Range(&B5:F5&), Relation:=3, formulaText:=&0&& & Solveradd CellRef:=Range(&H5&), Relation:=3, formulaText:=&0&& & SolverSolve& & '相当于按“求解”按钮End Sub
用SolverSolve作为结束,则会弹出“规划求解”完成后的确认对话框
需要用户手工点击“确认”后,才可以结束。这个比较麻烦,因而使用SolverSolve UserFinish:=True& & 直接代替手工按了“确认”按钮。
阅读权限90
在线时间 小时
本帖最后由 yiyiyicz 于
14:44 编辑
在VBA中通过调用SolverOptions函数来设置“规划求解”参数
《参见帮助》
MaxTime& &Variant 类型,可选。规划求解解决问题所花费的最长时间(以秒为单位)。该值必须为正整数。
Iterations& &Variant 类型,可选。迭代规划求解解决问题所花费的最长时间。该值必须为正整数。
Precision& &Variant 类型,可选。一个介于 0(零)和 1 之间的数字,用于指定约束(包括整数约束)必须达到的精度。默认精度为 0.000001。小数位数越少(例如 0.0001),表示精度越低。一般而言,指定的精度越高(该数字越小),规划求解为进行求解而花费的时间越长。
AssumeLinear& &Variant 类型,可选。如果为 True,则规划求解时将假定模型是线性的。这将加快求解速度,但仅应当用于模型中所有的关系均为线性的情况。默认值为 False。
StepThru& &Variant 类型,可选。如果为 True,则在每次试解时都会导致规划求解暂停。使用 SolverSolve 函数的 ShowRef 参数可以在每次暂停时向规划求解传递一个宏运行。如果为 False,则在每次试解时不暂停规划求解。默认值为 False。
Estimates& &Variant 类型,可选。指定用于估计每个一维基本变量初始值的方法:1 表示正切函数估值,而 2 表示二次方程估值。正切函数估值使用正切向量的线性外插法。二次方程估值使用二次外插法;这将有利于求解高度非线性的问题。默认值为 1(正切函数估值)。
Derivatives& &Variant 类型,可选。指定目标函数和约束函数的偏导式估值使用向前差分还是中心差分:1 表示向前差分,2 表示中心差分。中心差分所需的工作表重新计算较多,但如果求解某些问题时出现“规划求解无法改善解”的信息,则使用中心差分将有所帮助。对约束函数在极限值附近快速变化的情况,应使用中心差分。默认值为 1(向前差分)。
SearchOption& &Variant 类型,可选。使用“搜索”选项可指定每次迭代时所使用的搜索算法,该搜索算法将决定搜索的方向:1 表示牛顿搜索方法,2 表示共轭搜索方法。使用准牛顿法的牛顿法是默认的搜索方法。
IntTolerance& &Variant 类型,可选。一个介于 0(零)和 100 之间的十进制数字,用于指定“整数最优”百分比公差。本参数仅适用于定义了整数约束的情况。它指定规划求解可在以下情况下停止:它找到可行整数解,该解的目标处于真正整数最优解的目标上最佳已知界限的此百分比范围内。较高的百分比公差有助于加快求解过程。
Scaling& &Variant 类型,可选。如果目标或约束之间相差多个数量级,例如,基于数额达百万美元的投资最大程度地提高利润百分比,则将此选项设置为 True,让规划求解在计算期间在内部将目标和约束值重新缩放至类似的数量级。如果此选项为 False,则规划求解将使用原目标和约束值执行计算。默认值为 True。
Convergence& &Variant 类型,可选。一个介于 0(零)和 1 之间的数字,用于指定“GRG 非线性求解”和“进化求解”方法的收敛度公差。对于 GRG 方法,当最后五次迭代中目标单元格值的相对改变量小于此公差时,规划求解将停止。对于“进化”方法,当 99% 或更多总体成员具有“拟合”值,且这些值的相对差值(百分比形式)小于此公差时,规划求解将停止。在这两种情况下,规划求解都将显示消息“规划求解收敛于当前解。满足所有约束。”
AssumeNonNeg& &Variant 类型,可选。如果为 True,则规划求解假设所有在“约束”列表框中没有明确下限的决策变量单元格(这些单元格必须包含非负值)的下限为 0(零)。如果为 False,则规划求解仅使用在“约束”列表框中指定的限制。
PopulationSize & &Variant 类型,可选。如果为 True,则规划求解假设所有在“约束”列表框中没有明确下限的决策变量单元格(这些单元格必须包含非负值)的下限为 0(零)。如果为 False,则规划求解仅使用在“约束”列表框中指定的限制。
RandomSeed & &Variant 类型,可选。如果值为正整数,则为“进化求解”方法和多启动方法使用的随机数字生成器指定固定基数以实现全局优化。这意味着,规划求解每次在没有变化的模型上运行时都会找到同一解。如果值为零,则指定规划求解应在每次运行时为随机数字生成器使用不同的种子,这样,当它每次在没有变化的模型上运行时,都会生成不同的解。
MultiStart & &Variant 类型,可选。如果为 True,则规划求解会在调用 SolverSolve 时针对“GRG 线性求解”方法使用多启动方法来实现全局优化。如果为 False,则规划求解仅在调用 SolverSolve 时调用一次“GRG 求解”方法,而不使用多启动。
RequireBounds & &Variant 类型,可选。如果为 True,且任何变量都没有定义下限和上限,则“进化求解”方法和多启动方**立即通过调用 SolverSolve 来返回值 18。如果为 False,则这两种方**尝试在不限定所有变量的情况下解决问题。
MutationRate & &Variant 类型,可选。一个介于 0(零)和 1 之间的数字,用于指定“进化求解”方法将对现有总体成员进行“突变”的速率。突变率越高,越会增加总体的多样性,并且生成的解越好。
MaxSubproblems & &Variant 类型,可选。规划求解在包含整数约束的问题中以及通过“进化求解”方法解决的问题中浏览的子问题的最大数量。该值必须为正整数。MaxIntegerSols & &Variant 类型,可选。规划求解在包含整数约束的问题中以及通过“进化求解”方法解决的问题中考虑的可行(或整数可行)解的最大数量。该值必须为正整数。
SolveWithout & &Variant 类型,可选。如果为 True,则规划求解将忽略所有整数约束并解决问题的“缓和”。如果为 False,则规划求解在解决问题时使用整数约束。
MaxTimeNoImp & &Variant 类型,可选。当使用“进化求解”方法时,规划求解在不查找要添加到总体中的明显改进解的情况下继续执行求解的最长时间(以秒为单位)。该值必须为正整数
阅读权限90
在线时间 小时
本帖最后由 yiyiyicz 于
14:52 编辑
程序里面两个SolverAdd条件,但是运行结果发现其中一个条件Relation:=2, FormulaText:=1总是没有满足。
Sheet5.Activate
& & SolverReset
& & SolverOptions precision:=0.001
& & SolverOK SetCell:=Range(&D22&), _
& && &&&MaxMinVal:=2, _
& && &&&ByChange:=Range(&E8:E17&)
& & SolverAdd CellRef:=Range(&E18&), _
& && &&&Relation:=2, _
& && &&&FormulaText:=1
& & SolverAdd CellRef:=Range(&E8:E17&), _
& && &&&Relation:=3, _
& && &&&FormulaText:=0
& & SolverSolve UserFinish:=True
有时规划求解运算超时,此时仍会跳出另一个对话框(超时选项对话框)
阅读权限30
在线时间 小时
好贴,多谢楼主。
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师规划求解_百度百科
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
“规划求解”是一组命令的组成部分,这些命令有时也称作假设分析 ,可通过更改其他单元格来确定某个单元格的最大值或最小值。
规划求解概述
“规划求解”是一组命令的组成部分,这些命令有时也称作假设分析 (假设分析:该过程通过更改单元格中的值来查看这些更改对中公式结果的影响。例如,更改分期支付表中的利率可以调整支付金额。)工具。借助“规划求解”,可求得工作表上某个(被称为目标单元格)中公式 (公式:单元格中的一系列值、、名称或运算符的组合,可生成新的值。公式总是以等号 (=) 开始。)的最优值。“规划求解”将对直接或间接与目标单元格中公式相关联的一组单元格中的数值进行调整,最终在目标单元格公式中求得期望的结果。“规划求解”通过调整所指定的可更改的单元格(可变单元格)中的值,从目标单元格公式中求得所需的结果。在创建模型过程中,可以对“规划求解”模型中的可变单元格数值应用约束条件 (约束条件:“规划求解”中设置的限制条件。可以将约束条件应用于可变单元格、目标单元格或其他与目标单元格直接或间接相关的单元格。),而且约束条件可以引用其他影响目标单元格公式的单元格。
使用“规划求解”可通过更改其他单元格来确定某个单元格的最大值或最小值。例如,您可更改计划广告预算额来查看对您的计划收益额的影响。
规划求解EXCEL
在OFFICE的重要组件中,有一个规划求解的加载宏。加载该宏之后,就可以利用的规划求解功能进行规划求解。
加载规划求解宏
在EXCEL2003版本中,通过点击菜单【工具】——【宏】——【加载宏】,加载【规划求解加载项】便可以加载该宏
在版本中,通过点击office按钮,EXCEL选项——加载项——转到EXCEL加载项,然后加载【规划求解加载项】便可以加载规划求解的宏。
在EXCEl2010版本中,通过点击“文件”选项卡打开“选项”对话框,单击左侧“加载项”标签,在右侧单击“转到”按钮,打开“加载宏”对话框,勾选“规划求解加载项”,单击“确定”按钮,即可在的“数据”选项卡中出现“分析”选项组,上面就有了“规划求解”按钮。求解器介绍-_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
求解器介绍-
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩26页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢分享给朋友:通用代码: <input id="link4" type="text" class="form_input form_input_s" value="" />复 制求解下载至电脑扫码用手机看用或微信扫码在手机上继续观看二维码2小时内有效求解扫码用手机继续看用或微信扫码在手机上继续观看二维码2小时内有效,扫码后可分享给好友没有优酷APP?立即下载请根据您的设备选择下载版本
药品服务许可证(京)-经营- 请使用者仔细阅读优酷、、、Copyright(C)2017 优酷
版权所有不良信息举报电话:新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
家境小康, 积分 1441, 距离下一级还需 559 积分
论坛徽章:0
我用root账户编译了一个名为lammps软件并安装在/data/software下(编译时,指定了--prefix=/data/software/lammps)
我把/data/software设为共享目录。 对于此目录下的文件,任何用户都有访问和可执行权限
为什么 只有root用户才能执行成功,其它用户能执行,但是执行会出现错误。 请问 我还有哪里没有设置好的地方
但是如果某个用户去安装这个软件,然后执行它就没任何问题。(换句话说 谁安装,谁就能执行成功)如果是这样的话,那岂不是每个用户都要安装一次。
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
巨富豪门, 积分 23013, 距离下一级还需 16987 积分
论坛徽章:21
把那个执行文件,其它人加上x
家境小康, 积分 1441, 距离下一级还需 559 积分
论坛徽章:0
& & mpich& && &&&lammps
& & ] cd lammps
& & lammps]&&ll& &lmp_g++
& & -rwxr-xr-x. 1 root root
Dec 11 17:34 lmp_g++
& & lammps ]&&../mpich/bin/mpirun& && &./lmp_g++&&
& & 然后就出现这样的错误:
& & ERROR on proc 0: Cannot open log.lammps (lammps.cpp:206)
& & application called MPI_Abort(MPI_COMM_WORLD, 1) - process 0
& & 编译lammps这个软件就用到了mpich这个软件库
家境小康, 积分 1441, 距离下一级还需 559 积分
论坛徽章:0
lamps是以root装的 换成root用户就没问题。&&同样如果普通a用户装了(a能执行成功),即使b用户有访问,执行a用户文件的权限,也会出现上述问题,
巨富豪门, 积分 23013, 距离下一级还需 16987 积分
论坛徽章:21
yizhengming 发表于
回复 2# zongg
恩,文件权限的问题.
log.lammps& &这个文件你能找到吧,把它给777权限试一下.
家境小康, 积分 1441, 距离下一级还需 559 积分
论坛徽章:0
& & thinks..&&是这个问题
家境小康, 积分 1441, 距离下一级还需 559 积分
论坛徽章:0
本帖最后由 yizhengming 于
15:10 编辑
& & 不好意思 还有个问题&&就是log.lammps是执行的过程中产生的, 所以没法该&&并且这个软件是以root账户编译的,
& & (要把log.lammps& &o+w 就OK)
论坛徽章:34
给命令 +s 呢?
家境小康, 积分 1441, 距离下一级还需 559 积分
论坛徽章:0
本帖最后由 yizhengming 于
16:08 编辑
& & ../mpich/bin/mpirun& && &./lmp_g++&&+s&&是这样吗& & 不行啊
& &还是编译的时候 +s ?
论坛徽章:34
本帖最后由 vermouth 于
16:12 编辑
yizhengming
装好后 +s,普通用户运行时就可以切到root权限了吧,比如passwd
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处

我要回帖

更多关于 单变量求解 的文章

 

随机推荐