crear un rango discontinuo cuyo tamaño dependa de una variable
Publicado por joaessol (1 intervención) el 17/06/2021 20:58:23
Hola,
Tengo un problema al formular un problema de optimizacion con solver.
Creo que el problema viene con la definición del rango “mychange”, que es el rango discontinuo que depende de la variable c y el rango de celdas de variables a iterar en solver.
El obtener la primera solución me sale mensaje de “Error en el modelo. Compruebe que todas las celdas y restricciones son válidas. Es posible que algunas celdas que no son celdas de variables estén marcadas como Integer, Binary o Alldifferent”.
El código es el siguiente:
Gracias por la ayuda. He buscado en 1000 foros pero no encuentro la solución.
Saludos
Joaessol
Tengo un problema al formular un problema de optimizacion con solver.
Creo que el problema viene con la definición del rango “mychange”, que es el rango discontinuo que depende de la variable c y el rango de celdas de variables a iterar en solver.
El obtener la primera solución me sale mensaje de “Error en el modelo. Compruebe que todas las celdas y restricciones son válidas. Es posible que algunas celdas que no son celdas de variables estén marcadas como Integer, Binary o Alldifferent”.
El código es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub Prueba_coef_7a21()
Dim c As Integer
Dim con As Integer
Dim fran As Integer
Dim i As Integer
Dim j As Integer
Dim Mychange As Range
fran = Cells(9, 3).Value
con = Cells(10, 3).Value
j = 1
For j = 1 To fran
i = 1
For i = 1 To 18
c = 1
Set Mychange = (Cells(85 + i - 1, 2 + j))
For c = 1 To (con - 1)
Set Mychange = Union(Mychange, Cells(85 + i - 1 + (28 * c), 2 + j))
Next c
SolverReset
SolverOk SetCell:="Cells(54+i-1,2+j)", MaxMinVal:=1, ValueOf:=0, ByChange:=Mychange.Address, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="Cells(85 + i - 1 + (28 * (c + 1)), 2 + j)", Relation:=2, FormulaText:="1"
SolverSolve
Next i
Next j
End Sub
Gracias por la ayuda. He buscado en 1000 foros pero no encuentro la solución.
Saludos
Joaessol
Valora esta pregunta


0