作者moon0815 (月光光!!!!!!!)
看板Visual_Basic
标题[VBA ] 想请教回圈中使用规划求解的问题
时间Tue Sep 29 17:51:25 2015
各位大大
我想请问一下
我在做一个最佳化的问题
但是必须不断重覆做几百次
所以想包在回圈里面写
但是 我发现在EXCEL的规划求解视窗中
设定好相同的条件 进行求解
然後我跑下面这段程式码的时候
(输入相对应的储存格位置都相同)
会有两个限制式消失
我想 应该是在Reset之後
那两个限制式没有被写入
但很奇怪的是 我都照着书上与网路上的作法输入
不知道为何限制式无法被加入
分别是:
1. Call SolverAdd(sqlstr, 1, 1) '限制权重小於等於1
2. Call SolverAdd(sqlstr4, 2, 1) '限制权重加总等於1
偏偏这两个限制式还满基本重要的....
也想请各位大大看一下
我程式这样写有哪边有问题...
还请各位大大拨冗帮忙..
以下是程式码
----------------------------------------
Option Explicit
Public Sub Optimization()
Dim sqlstr As String
Dim sqlstr1 As String
Dim sqlstr2 As String
Dim sqlstr3 As String
Dim sqlstr4 As String
Dim sqlstr5 As String
Dim sqlstr6 As String
Dim W1 As String
Dim W2 As String
Dim W3 As String
Dim W4 As String
Dim W5 As String
Dim W6 As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
Worksheets("RR5").Activate
j = 64
Do While Worksheets("RR5").Cells(j, 2) <> ""
sqlstr = "$D$" & j & ":$I$" & j '变数范围
sqlstr1 = "$C$" & j '目标式位置
sqlstr2 = "$A$" & j '限制式位置(期望报酬)
sqlstr3 = "$B$" & j '限制式数值(期望报酬)
sqlstr4 = "$J$" & j '限制式位置(权重加总)
sqlstr5 = "$K$" & j '限制式位置(投资组合变异数)
sqlstr6 = "$L$" & j '限制式位置(权重变化加总)
W1 = "$D$" & j '限制式位置(权重1)
W2 = "$E$" & j '限制式位置(权重2)
W3 = "$F$" & j '限制式数值(权重3)
W4 = "$G$" & j '限制式位置(权重4)
W5 = "$H$" & j '限制式位置(权重5)
W6 = "$I$" & j '限制式位置(权重6)
Call SolverReset
Call SolverOk(sqlstr1, 2, , sqlstr) '目标式: 最小
Call SolverAdd(sqlstr, 1, 1) '限制式: 各权重小於1
Call SolverAdd(sqlstr, 3, 0) '限制式: 各权重大於0
Call SolverAdd(W1, 1, 0.75) '限制式: 限制各权重不能超过75%
Call SolverAdd(W2, 1, 0.75)
Call SolverAdd(W3, 1, 0.75)
Call SolverAdd(W4, 1, 0.75)
Call SolverAdd(W5, 1, 0.75)
Call SolverAdd(W6, 1, 0.75)
Call SolverAdd(sqlstr5, 3, 0) '限制式: 乘积大於0
Call SolverAdd(sqlstr6, 1, 0.8) '限制式: 权重变化累积需小於80%
Call SolverAdd(sqlstr4, 2, 1) '限制式: 各权重加总於1
Call SolverAdd(sqlstr2, 2, sqlstr3) '限制式: 预期值等於给定值
Call SolverOptions(100, 1000, , , , , 2, , , , , True)
'限制规划求解的选项: 使结果为非负
Call SolverSolve(True) '执行规划求解
Call Solverfinish(1) '结束规划求解 并将结果留在储存格中
j = j + 1
Loop
End Sub
--
只有用真心 才能交到真心的朋友
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.37.108.184
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Visual_Basic/M.1443520289.A.1D3.html