Skip to content

Commit 8729059

Browse files
aphisebheger
authored andcommitted
Augment missing mipstarts for CBC - Issue 229
1 parent faa41eb commit 8729059

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

mip/cbc.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1500,10 +1500,25 @@ def read(self, file_path: str) -> None:
15001500
)
15011501

15021502
def set_start(self, start: List[Tuple[Var, numbers.Real]]) -> None:
1503-
n = len(start)
1504-
dv = ffi.new("double[]", [start[i][1] for i in range(n)])
1503+
# Augment start list with default zero values for absent non-continuous variables
1504+
start_vars_set = set(var for var, _ in start)
1505+
1506+
default_start_noncont_vars = [
1507+
(v, 0)
1508+
for v in self.model.vars
1509+
if v.var_type != "C" and v not in start_vars_set
1510+
]
1511+
1512+
logger.info(
1513+
f"Adding default start values for {len(default_start_noncont_vars)} noncontinuous variables"
1514+
)
1515+
augmented_start = start + default_start_noncont_vars
1516+
1517+
# Set starts
1518+
n = len(augmented_start)
1519+
dv = ffi.new("double[]", [augmented_start[i][1] for i in range(n)])
15051520
keep_alive_str = [
1506-
ffi.new("char[]", str.encode(start[i][0].name)) for i in range(n)
1521+
ffi.new("char[]", str.encode(augmented_start[i][0].name)) for i in range(n)
15071522
]
15081523
var_names = ffi.new("char *[]", keep_alive_str)
15091524
mdl = self._model

0 commit comments

Comments
 (0)