import highspy
h = highspy.Highs()
h.silent()
items = ['Tables', 'Sets of chairs']
x = h.addVariables(items, obj = [10, 20], name = items)
constrNames = ['Assembly', 'Finishing']
cons = h.addConstrs(x['Tables'] + 2*x['Sets of chairs'] <= 80,
x['Tables'] + 4*x['Sets of chairs'] <= 120, name = constrNames)
h.setMaximize()
status = h.writeModel('Chip.lp')
print('writeModel(\'Chip.lp\') status =', status)
status = h.writeModel('Chip.mps')
print('writeModel(\'Chip.mps\') status =', status)
h.solve()
for n, var in x.items():
print('Make', h.variableValue(var), h.variableName(var), ': Reduced cost', h.variableDual(var))
print('Make', h.variableValues(x.values()), 'of', h.variableNames(x.values()))
print('Make', h.allVariableValues(), 'of', h.allVariableNames())
for c in cons:
print('Constraint', c.name, 'has value', h.constrValue(c), 'and dual', h.constrDual(c))
print('Constraints have values', h.constrValues(cons), 'and duals', h.constrDuals(cons))
print('Constraints have values', h.allConstrValues(), 'and duals', h.allConstrDuals())
print('Optimal objective value is', h.getObjectiveValue())