Pyomo, Exiting pyomo solve: Multiple models defined in file: - pyomo
Working on my first pyomo lp and I am having trouble when I go to load the data. The model appears to be fine but then when it goes to solve it returns that all of my variables are stale and will not give me any values. I have some ideas but wanted to get some more to see if someone else could point out what I am doing wrong. Below is the model
from pyomo.environ import *
import pandas as pd
import numpy as np
from pyomo.core import *
opt = AbstractModel()
opt.PC = Set()
opt.DC = Set()
opt.costs =Param(opt.PC,opt.DC, within = NonNegativeReals)
opt.demands=Param(opt.DC, within = NonNegativeIntegers)
opt.supply= Param(opt.PC, within = NonNegativeIntegers)
opt.cases = Var(opt.PC,opt.DC,domain = NonNegativeIntegers)
def constraint1(opt,DC):
return sum(
opt.cases[i,DC]
for i in opt.PC
) == opt.demands[DC]
opt.constraintdemand = Constraint(opt.DC,rule = constraint1)
def constraint2(opt,PC):
return sum(
opt.cases[PC,j]
for j in opt.DC
) <= opt.supply[PC]
opt.constraintsupply = Constraint(opt.PC,rule = constraint2)
def ObjectiveFunction(opt):
return sum(
opt.costs[i,j] * opt.cases[i,j]
for i in opt.PC
for j in opt.DC
)
opt.Obj=Objective(rule=ObjectiveFunction)
data = DataPortal()
data.load(filename='lp.dat', set = opt.PC)
data.load(filename ='lp.dat', set = opt.DC)
data.load(filename='lp.dat', param = opt.costs)
data.load(filename='lp.dat', param = opt.demands)
data.load(filename='lp.dat', param = opt.supply)
instance = opt.create_instance(data)
instance.pprint()
Here are are the variable declarations:
1 Var Declarations
cases : Size=288, Index=cases_index
Key : Lower : Value : Upper : Fixed : Stale : Domain
(1, 1) : 0 : None : None : False : True : NonNegativeIntegers
(1, 2) : 0 : None : None : False : True : NonNegativeIntegers
(1, 3) : 0 : None : None : False : True : NonNegativeIntegers
(1, 4) : 0 : None : None : False : True : NonNegativeIntegers
(1, 5) : 0 : None : None : False : True : NonNegativeIntegers
(1, 6) : 0 : None : None : False : True : NonNegativeIntegers
(1, 7) : 0 : None : None : False : True : NonNegativeIntegers
(1, 8) : 0 : None : None : False : True : NonNegativeIntegers
(1, 9) : 0 : None : None : False : True : NonNegativeIntegers
(1, 10) : 0 : None : None : False : True : NonNegativeIntegers
(1, 11) : 0 : None : None : False : True : NonNegativeIntegers
(1, 12) : 0 : None : None : False : True : NonNegativeIntegers
(1, 13) : 0 : None : None : False : True : NonNegativeIntegers
(1, 14) : 0 : None : None : False : True : NonNegativeIntegers
(1, 15) : 0 : None : None : False : True : NonNegativeIntegers
(1, 16) : 0 : None : None : False : True : NonNegativeIntegers
(1, 17) : 0 : None : None : False : True : NonNegativeIntegers
(1, 18) : 0 : None : None : False : True : NonNegativeIntegers
(1, 19) : 0 : None : None : False : True : NonNegativeIntegers
(1, 20) : 0 : None : None : False : True : NonNegativeIntegers
(1, 21) : 0 : None : None : False : True : NonNegativeIntegers
(1, 22) : 0 : None : None : False : True : NonNegativeIntegers
(1, 23) : 0 : None : None : False : True : NonNegativeIntegers
(1, 24) : 0 : None : None : False : True : NonNegativeIntegers
(1, 25) : 0 : None : None : False : True : NonNegativeIntegers
(1, 26) : 0 : None : None : False : True : NonNegativeIntegers
(1, 27) : 0 : None : None : False : True : NonNegativeIntegers
(1, 28) : 0 : None : None : False : True : NonNegativeIntegers
(1, 29) : 0 : None : None : False : True : NonNegativeIntegers
(1, 30) : 0 : None : None : False : True : NonNegativeIntegers
(1, 31) : 0 : None : None : False : True : NonNegativeIntegers
(1, 32) : 0 : None : None : False : True : NonNegativeIntegers
(1, 33) : 0 : None : None : False : True : NonNegativeIntegers
(1, 34) : 0 : None : None : False : True : NonNegativeIntegers
(1, 35) : 0 : None : None : False : True : NonNegativeIntegers
(1, 36) : 0 : None : None : False : True : NonNegativeIntegers
(1, 37) : 0 : None : None : False : True : NonNegativeIntegers
(1, 38) : 0 : None : None : False : True : NonNegativeIntegers
(1, 39) : 0 : None : None : False : True : NonNegativeIntegers
(1, 40) : 0 : None : None : False : True : NonNegativeIntegers
(1, 41) : 0 : None : None : False : True : NonNegativeIntegers
(1, 42) : 0 : None : None : False : True : NonNegativeIntegers
(1, 43) : 0 : None : None : False : True : NonNegativeIntegers
(1, 44) : 0 : None : None : False : True : NonNegativeIntegers
(1, 45) : 0 : None : None : False : True : NonNegativeIntegers
(1, 46) : 0 : None : None : False : True : NonNegativeIntegers
(1, 47) : 0 : None : None : False : True : NonNegativeIntegers
(1, 48) : 0 : None : None : False : True : NonNegativeIntegers
(1, 49) : 0 : None : None : False : True : NonNegativeIntegers
(1, 50) : 0 : None : None : False : True : NonNegativeIntegers
(1, 51) : 0 : None : None : False : True : NonNegativeIntegers
(1, 52) : 0 : None : None : False : True : NonNegativeIntegers
(1, 53) : 0 : None : None : False : True : NonNegativeIntegers
(1, 54) : 0 : None : None : False : True : NonNegativeIntegers
(1, 55) : 0 : None : None : False : True : NonNegativeIntegers
(1, 56) : 0 : None : None : False : True : NonNegativeIntegers
(1, 57) : 0 : None : None : False : True : NonNegativeIntegers
(1, 58) : 0 : None : None : False : True : NonNegativeIntegers
(1, 59) : 0 : None : None : False : True : NonNegativeIntegers
(1, 60) : 0 : None : None : False : True : NonNegativeIntegers
(1, 61) : 0 : None : None : False : True : NonNegativeIntegers
(1, 62) : 0 : None : None : False : True : NonNegativeIntegers
(1, 63) : 0 : None : None : False : True : NonNegativeIntegers
(1, 64) : 0 : None : None : False : True : NonNegativeIntegers
(1, 65) : 0 : None : None : False : True : NonNegativeIntegers
(1, 66) : 0 : None : None : False : True : NonNegativeIntegers
(1, 67) : 0 : None : None : False : True : NonNegativeIntegers
(1, 68) : 0 : None : None : False : True : NonNegativeIntegers
(1, 69) : 0 : None : None : False : True : NonNegativeIntegers
(1, 70) : 0 : None : None : False : True : NonNegativeIntegers
(1, 71) : 0 : None : None : False : True : NonNegativeIntegers
(1, 72) : 0 : None : None : False : True : NonNegativeIntegers
(1, 73) : 0 : None : None : False : True : NonNegativeIntegers
(1, 74) : 0 : None : None : False : True : NonNegativeIntegers
(1, 75) : 0 : None : None : False : True : NonNegativeIntegers
(1, 76) : 0 : None : None : False : True : NonNegativeIntegers
(1, 77) : 0 : None : None : False : True : NonNegativeIntegers
(1, 78) : 0 : None : None : False : True : NonNegativeIntegers
(1, 79) : 0 : None : None : False : True : NonNegativeIntegers
(1, 80) : 0 : None : None : False : True : NonNegativeIntegers
(1, 81) : 0 : None : None : False : True : NonNegativeIntegers
(1, 82) : 0 : None : None : False : True : NonNegativeIntegers
(1, 83) : 0 : None : None : False : True : NonNegativeIntegers
(1, 84) : 0 : None : None : False : True : NonNegativeIntegers
(1, 85) : 0 : None : None : False : True : NonNegativeIntegers
(1, 86) : 0 : None : None : False : True : NonNegativeIntegers
(1, 87) : 0 : None : None : False : True : NonNegativeIntegers
(1, 88) : 0 : None : None : False : True : NonNegativeIntegers
(1, 89) : 0 : None : None : False : True : NonNegativeIntegers
(1, 90) : 0 : None : None : False : True : NonNegativeIntegers
(1, 91) : 0 : None : None : False : True : NonNegativeIntegers
(1, 92) : 0 : None : None : False : True : NonNegativeIntegers
(1, 93) : 0 : None : None : False : True : NonNegativeIntegers
(1, 94) : 0 : None : None : False : True : NonNegativeIntegers
(1, 95) : 0 : None : None : False : True : NonNegativeIntegers
(1, 96) : 0 : None : None : False : True : NonNegativeIntegers
(1, 97) : 0 : None : None : False : True : NonNegativeIntegers
(1, 98) : 0 : None : None : False : True : NonNegativeIntegers
(1, 99) : 0 : None : None : False : True : NonNegativeIntegers
(1, 100) : 0 : None : None : False : True : NonNegativeIntegers
(1, 101) : 0 : None : None : False : True : NonNegativeIntegers
(1, 102) : 0 : None : None : False : True : NonNegativeIntegers
(1, 103) : 0 : None : None : False : True : NonNegativeIntegers
(1, 104) : 0 : None : None : False : True : NonNegativeIntegers
(1, 105) : 0 : None : None : False : True : NonNegativeIntegers
(1, 106) : 0 : None : None : False : True : NonNegativeIntegers
(1, 107) : 0 : None : None : False : True : NonNegativeIntegers
(1, 108) : 0 : None : None : False : True : NonNegativeIntegers
(1, 109) : 0 : None : None : False : True : NonNegativeIntegers
(1, 110) : 0 : None : None : False : True : NonNegativeIntegers
(1, 111) : 0 : None : None : False : True : NonNegativeIntegers
(1, 112) : 0 : None : None : False : True : NonNegativeIntegers
(1, 113) : 0 : None : None : False : True : NonNegativeIntegers
(1, 114) : 0 : None : None : False : True : NonNegativeIntegers
(1, 115) : 0 : None : None : False : True : NonNegativeIntegers
(1, 116) : 0 : None : None : False : True : NonNegativeIntegers
(1, 117) : 0 : None : None : False : True : NonNegativeIntegers
(1, 118) : 0 : None : None : False : True : NonNegativeIntegers
(1, 119) : 0 : None : None : False : True : NonNegativeIntegers
(1, 120) : 0 : None : None : False : True : NonNegativeIntegers
(1, 121) : 0 : None : None : False : True : NonNegativeIntegers
(1, 122) : 0 : None : None : False : True : NonNegativeIntegers
(1, 123) : 0 : None : None : False : True : NonNegativeIntegers
(1, 124) : 0 : None : None : False : True : NonNegativeIntegers
(1, 125) : 0 : None : None : False : True : NonNegativeIntegers
(1, 126) : 0 : None : None : False : True : NonNegativeIntegers
(1, 127) : 0 : None : None : False : True : NonNegativeIntegers
(1, 128) : 0 : None : None : False : True : NonNegativeIntegers
(1, 129) : 0 : None : None : False : True : NonNegativeIntegers
(1, 130) : 0 : None : None : False : True : NonNegativeIntegers
(1, 131) : 0 : None : None : False : True : NonNegativeIntegers
(1, 132) : 0 : None : None : False : True : NonNegativeIntegers
(1, 133) : 0 : None : None : False : True : NonNegativeIntegers
(1, 134) : 0 : None : None : False : True : NonNegativeIntegers
(1, 135) : 0 : None : None : False : True : NonNegativeIntegers
(1, 136) : 0 : None : None : False : True : NonNegativeIntegers
(1, 137) : 0 : None : None : False : True : NonNegativeIntegers
(1, 138) : 0 : None : None : False : True : NonNegativeIntegers
(1, 139) : 0 : None : None : False : True : NonNegativeIntegers
(1, 140) : 0 : None : None : False : True : NonNegativeIntegers
(1, 141) : 0 : None : None : False : True : NonNegativeIntegers
(1, 142) : 0 : None : None : False : True : NonNegativeIntegers
(1, 143) : 0 : None : None : False : True : NonNegativeIntegers
(1, 144) : 0 : None : None : False : True : NonNegativeIntegers
(2, 1) : 0 : None : None : False : True : NonNegativeIntegers
(2, 2) : 0 : None : None : False : True : NonNegativeIntegers
(2, 3) : 0 : None : None : False : True : NonNegativeIntegers
(2, 4) : 0 : None : None : False : True : NonNegativeIntegers
(2, 5) : 0 : None : None : False : True : NonNegativeIntegers
(2, 6) : 0 : None : None : False : True : NonNegativeIntegers
(2, 7) : 0 : None : None : False : True : NonNegativeIntegers
(2, 8) : 0 : None : None : False : True : NonNegativeIntegers
(2, 9) : 0 : None : None : False : True : NonNegativeIntegers
(2, 10) : 0 : None : None : False : True : NonNegativeIntegers
(2, 11) : 0 : None : None : False : True : NonNegativeIntegers
(2, 12) : 0 : None : None : False : True : NonNegativeIntegers
(2, 13) : 0 : None : None : False : True : NonNegativeIntegers
(2, 14) : 0 : None : None : False : True : NonNegativeIntegers
(2, 15) : 0 : None : None : False : True : NonNegativeIntegers
(2, 16) : 0 : None : None : False : True : NonNegativeIntegers
(2, 17) : 0 : None : None : False : True : NonNegativeIntegers
(2, 18) : 0 : None : None : False : True : NonNegativeIntegers
(2, 19) : 0 : None : None : False : True : NonNegativeIntegers
(2, 20) : 0 : None : None : False : True : NonNegativeIntegers
(2, 21) : 0 : None : None : False : True : NonNegativeIntegers
(2, 22) : 0 : None : None : False : True : NonNegativeIntegers
(2, 23) : 0 : None : None : False : True : NonNegativeIntegers
(2, 24) : 0 : None : None : False : True : NonNegativeIntegers
(2, 25) : 0 : None : None : False : True : NonNegativeIntegers
(2, 26) : 0 : None : None : False : True : NonNegativeIntegers
(2, 27) : 0 : None : None : False : True : NonNegativeIntegers
(2, 28) : 0 : None : None : False : True : NonNegativeIntegers
(2, 29) : 0 : None : None : False : True : NonNegativeIntegers
(2, 30) : 0 : None : None : False : True : NonNegativeIntegers
(2, 31) : 0 : None : None : False : True : NonNegativeIntegers
(2, 32) : 0 : None : None : False : True : NonNegativeIntegers
(2, 33) : 0 : None : None : False : True : NonNegativeIntegers
(2, 34) : 0 : None : None : False : True : NonNegativeIntegers
(2, 35) : 0 : None : None : False : True : NonNegativeIntegers
(2, 36) : 0 : None : None : False : True : NonNegativeIntegers
(2, 37) : 0 : None : None : False : True : NonNegativeIntegers
(2, 38) : 0 : None : None : False : True : NonNegativeIntegers
(2, 39) : 0 : None : None : False : True : NonNegativeIntegers
(2, 40) : 0 : None : None : False : True : NonNegativeIntegers
(2, 41) : 0 : None : None : False : True : NonNegativeIntegers
(2, 42) : 0 : None : None : False : True : NonNegativeIntegers
(2, 43) : 0 : None : None : False : True : NonNegativeIntegers
(2, 44) : 0 : None : None : False : True : NonNegativeIntegers
(2, 45) : 0 : None : None : False : True : NonNegativeIntegers
(2, 46) : 0 : None : None : False : True : NonNegativeIntegers
(2, 47) : 0 : None : None : False : True : NonNegativeIntegers
(2, 48) : 0 : None : None : False : True : NonNegativeIntegers
(2, 49) : 0 : None : None : False : True : NonNegativeIntegers
(2, 50) : 0 : None : None : False : True : NonNegativeIntegers
(2, 51) : 0 : None : None : False : True : NonNegativeIntegers
(2, 52) : 0 : None : None : False : True : NonNegativeIntegers
(2, 53) : 0 : None : None : False : True : NonNegativeIntegers
(2, 54) : 0 : None : None : False : True : NonNegativeIntegers
(2, 55) : 0 : None : None : False : True : NonNegativeIntegers
(2, 56) : 0 : None : None : False : True : NonNegativeIntegers
(2, 57) : 0 : None : None : False : True : NonNegativeIntegers
(2, 58) : 0 : None : None : False : True : NonNegativeIntegers
(2, 59) : 0 : None : None : False : True : NonNegativeIntegers
(2, 60) : 0 : None : None : False : True : NonNegativeIntegers
(2, 61) : 0 : None : None : False : True : NonNegativeIntegers
(2, 62) : 0 : None : None : False : True : NonNegativeIntegers
(2, 63) : 0 : None : None : False : True : NonNegativeIntegers
(2, 64) : 0 : None : None : False : True : NonNegativeIntegers
(2, 65) : 0 : None : None : False : True : NonNegativeIntegers
(2, 66) : 0 : None : None : False : True : NonNegativeIntegers
(2, 67) : 0 : None : None : False : True : NonNegativeIntegers
(2, 68) : 0 : None : None : False : True : NonNegativeIntegers
(2, 69) : 0 : None : None : False : True : NonNegativeIntegers
(2, 70) : 0 : None : None : False : True : NonNegativeIntegers
(2, 71) : 0 : None : None : False : True : NonNegativeIntegers
(2, 72) : 0 : None : None : False : True : NonNegativeIntegers
(2, 73) : 0 : None : None : False : True : NonNegativeIntegers
(2, 74) : 0 : None : None : False : True : NonNegativeIntegers
(2, 75) : 0 : None : None : False : True : NonNegativeIntegers
(2, 76) : 0 : None : None : False : True : NonNegativeIntegers
(2, 77) : 0 : None : None : False : True : NonNegativeIntegers
(2, 78) : 0 : None : None : False : True : NonNegativeIntegers
(2, 79) : 0 : None : None : False : True : NonNegativeIntegers
(2, 80) : 0 : None : None : False : True : NonNegativeIntegers
(2, 81) : 0 : None : None : False : True : NonNegativeIntegers
(2, 82) : 0 : None : None : False : True : NonNegativeIntegers
(2, 83) : 0 : None : None : False : True : NonNegativeIntegers
(2, 84) : 0 : None : None : False : True : NonNegativeIntegers
(2, 85) : 0 : None : None : False : True : NonNegativeIntegers
(2, 86) : 0 : None : None : False : True : NonNegativeIntegers
(2, 87) : 0 : None : None : False : True : NonNegativeIntegers
(2, 88) : 0 : None : None : False : True : NonNegativeIntegers
(2, 89) : 0 : None : None : False : True : NonNegativeIntegers
(2, 90) : 0 : None : None : False : True : NonNegativeIntegers
(2, 91) : 0 : None : None : False : True : NonNegativeIntegers
(2, 92) : 0 : None : None : False : True : NonNegativeIntegers
(2, 93) : 0 : None : None : False : True : NonNegativeIntegers
(2, 94) : 0 : None : None : False : True : NonNegativeIntegers
(2, 95) : 0 : None : None : False : True : NonNegativeIntegers
(2, 96) : 0 : None : None : False : True : NonNegativeIntegers
(2, 97) : 0 : None : None : False : True : NonNegativeIntegers
(2, 98) : 0 : None : None : False : True : NonNegativeIntegers
(2, 99) : 0 : None : None : False : True : NonNegativeIntegers
(2, 100) : 0 : None : None : False : True : NonNegativeIntegers
(2, 101) : 0 : None : None : False : True : NonNegativeIntegers
(2, 102) : 0 : None : None : False : True : NonNegativeIntegers
(2, 103) : 0 : None : None : False : True : NonNegativeIntegers
(2, 104) : 0 : None : None : False : True : NonNegativeIntegers
(2, 105) : 0 : None : None : False : True : NonNegativeIntegers
(2, 106) : 0 : None : None : False : True : NonNegativeIntegers
(2, 107) : 0 : None : None : False : True : NonNegativeIntegers
(2, 108) : 0 : None : None : False : True : NonNegativeIntegers
(2, 109) : 0 : None : None : False : True : NonNegativeIntegers
(2, 110) : 0 : None : None : False : True : NonNegativeIntegers
(2, 111) : 0 : None : None : False : True : NonNegativeIntegers
(2, 112) : 0 : None : None : False : True : NonNegativeIntegers
(2, 113) : 0 : None : None : False : True : NonNegativeIntegers
(2, 114) : 0 : None : None : False : True : NonNegativeIntegers
(2, 115) : 0 : None : None : False : True : NonNegativeIntegers
(2, 116) : 0 : None : None : False : True : NonNegativeIntegers
(2, 117) : 0 : None : None : False : True : NonNegativeIntegers
(2, 118) : 0 : None : None : False : True : NonNegativeIntegers
(2, 119) : 0 : None : None : False : True : NonNegativeIntegers
(2, 120) : 0 : None : None : False : True : NonNegativeIntegers
(2, 121) : 0 : None : None : False : True : NonNegativeIntegers
(2, 122) : 0 : None : None : False : True : NonNegativeIntegers
(2, 123) : 0 : None : None : False : True : NonNegativeIntegers
(2, 124) : 0 : None : None : False : True : NonNegativeIntegers
(2, 125) : 0 : None : None : False : True : NonNegativeIntegers
(2, 126) : 0 : None : None : False : True : NonNegativeIntegers
(2, 127) : 0 : None : None : False : True : NonNegativeIntegers
(2, 128) : 0 : None : None : False : True : NonNegativeIntegers
(2, 129) : 0 : None : None : False : True : NonNegativeIntegers
(2, 130) : 0 : None : None : False : True : NonNegativeIntegers
(2, 131) : 0 : None : None : False : True : NonNegativeIntegers
(2, 132) : 0 : None : None : False : True : NonNegativeIntegers
(2, 133) : 0 : None : None : False : True : NonNegativeIntegers
(2, 134) : 0 : None : None : False : True : NonNegativeIntegers
(2, 135) : 0 : None : None : False : True : NonNegativeIntegers
(2, 136) : 0 : None : None : False : True : NonNegativeIntegers
(2, 137) : 0 : None : None : False : True : NonNegativeIntegers
(2, 138) : 0 : None : None : False : True : NonNegativeIntegers
(2, 139) : 0 : None : None : False : True : NonNegativeIntegers
(2, 140) : 0 : None : None : False : True : NonNegativeIntegers
(2, 141) : 0 : None : None : False : True : NonNegativeIntegers
(2, 142) : 0 : None : None : False : True : NonNegativeIntegers
(2, 143) : 0 : None : None : False : True : NonNegativeIntegers
(2, 144) : 0 : None : None : False : True : NonNegativeIntegers
The problem is that you were combining two ways of solving Pyomo models that aren't compatible. If you start with an abstract model you can solve it by:
In a Python script use a DataPortal to create a concrete model instance and then solve that model by using the SolverFactory to call a solver
Use the pyomo command and pass in the Python script defining the abstract model and a .dat file with the data to instantiate the model
Related
Extract data from an output variable
I am trying to figure out a post-processing code to extract data from the output of an indexing-variable in PYOMO. The output of the variable is given below. x : Size=24, Index=x_index Key : Lower : Value : Upper : Fixed : Stale : Domain ('alum', 'Face 1') : 0 : 0.0 : 1 : False : False : Binary ('alum', 'Face 2') : 0 : 0.0 : 1 : False : False : Binary ('alum', 'Face 3') : 0 : 0.0 : 1 : False : False : Binary ('alum', 'Face 4') : 0 : 0.0 : 1 : False : False : Binary ('alum', 'Face 5') : 0 : 0.0 : 1 : False : False : Binary ('alum', 'Face 6') : 0 : 0.0 : 1 : False : False : Binary ('copper', 'Face 1') : 0 : 1.0 : 1 : False : False : Binary ('copper', 'Face 2') : 0 : 1.1025499604398013e-08 : 1 : False : False : Binary ('copper', 'Face 3') : 0 : 0.7535049595290465 : 1 : False : False : Binary ('copper', 'Face 4') : 0 : 1.0003766762453678e-08 : 1 : False : False : Binary ('copper', 'Face 5') : 0 : 1.0265826814190929e-08 : 1 : False : False : Binary ('copper', 'Face 6') : 0 : 1.0 : 1 : False : False : Binary ('steel', 'Face 1') : 0 : 0.0 : 1 : False : False : Binary ('steel', 'Face 2') : 0 : 0.0 : 1 : False : False : Binary ('steel', 'Face 3') : 0 : 0.0 : 1 : False : False : Binary ('steel', 'Face 4') : 0 : 0.0 : 1 : False : False : Binary ('steel', 'Face 5') : 0 : 0.0 : 1 : False : False : Binary ('steel', 'Face 6') : 0 : 0.0 : 1 : False : False : Binary ('zinc', 'Face 1') : 0 : 1.0461836921235404e-08 : 1 : False : False : Binary ('zinc', 'Face 2') : 0 : 1.0 : 1 : False : False : Binary ('zinc', 'Face 3') : 0 : 0.24649506011873923 : 1 : False : False : Binary ('zinc', 'Face 4') : 0 : 1.0 : 1 : False : False : Binary ('zinc', 'Face 5') : 0 : 1.0 : 1 : False : False : Binary ('zinc', 'Face 6') : 0 : 9.618909950291308e-09 : 1 : False : False : Binary The expected output is a dictionary as shown below selected_materials = {'Face 1':'copper', 'Face 2':'zinc', 'Face 3':'copper', 'Face 4':'zinc', 'Face 5':'zinc', 'Face 6':'copper' } The idea is to choose a material for each face. The selection criteria is the maximum value obtained in the output variable 'x', for each key (combinations of material, face). Eg. For Face 1, the value is compared among 4 materials and the one with highest value is chosen. My attempt: I created a code to find the highest value among materials for an individual face as shown below. max([pyo.value(mdl.x[m, 'Face 1']) for m in materials]) where m is a list as given below (defined in the initial step of the algorithm) materials = ['steel', 'alum', 'copper', 'zinc'] But finding the material corresponding to the highest value seems challenging. If someone has an idea, kindly help me. I would appreciate it if you could suggest me some better idea if any.
There are a couple ways to do this. First thing I'd do is pull the values out of the variables into a plain old python data structure, which makes it a bit easier to work with. There are probably a couple variants of the example below that you could implement, depending on how comfortable you are with comprehensions, etc. import pyomo.environ as pyo from collections import defaultdict from operator import itemgetter matls = ['steel', 'wood'] faces = ['Face 1', 'Face 2'] some_values = { ('steel', 'Face 1') : 1, ('wood', 'Face 1') : 2.2, ('steel', 'Face 2') : 3.5, ('wood', 'Face 2') : 1.1} # PYOMO MODEL m = pyo.ConcreteModel() # Sets m.M = pyo.Set(initialize=matls) m.F = pyo.Set(initialize=faces) # Variables # Initializing just for the purposes of sorting later....normally NOT needed m.X = pyo.Var(m.M, m.F, domain=pyo.NonNegativeReals, initialize=some_values) m.pprint() # let's pull the values out into a list of tuples. # this isn't totally necessary, but it is pretty clear, and good staring place res = [ (face, matl, m.X[matl, face].value) for face in m.F for matl in m.M] for item in res: print(item) # ok... let's gather the results by face and then get the max. (you could also sort the results or whatever... choices = defaultdict(list) for face, matl, score in res: choices[face].append( (matl, score) ) # pick the max for face in choices: matl, score = max(choices[face], key=itemgetter(1)) print(f'for face {face} the best material is: {matl} with score {score:.2f}') Yields: 1 Var Declarations X : Size=4, Index=X_index Key : Lower : Value : Upper : Fixed : Stale : Domain ('steel', 'Face 1') : 0 : 1 : None : False : False : NonNegativeReals ('steel', 'Face 2') : 0 : 3.5 : None : False : False : NonNegativeReals ('wood', 'Face 1') : 0 : 2.2 : None : False : False : NonNegativeReals ('wood', 'Face 2') : 0 : 1.1 : None : False : False : NonNegativeReals 4 Declarations: M F X_index X ('Face 1', 'steel', 1) ('Face 1', 'wood', 2.2) ('Face 2', 'steel', 3.5) ('Face 2', 'wood', 1.1) for face Face 1 the best material is: wood with score 2.20 for face Face 2 the best material is: steel with score 3.50
There is a crash at CcInitializeCacheMap
/* typedef struct _HRFS_VOLUME_CONTROL_BLOCK { FSRTL_ADVANCED_FCB_HEADER VolumeFileHeader; ULONG nodeType; FAST_MUTEX AdvancedFcbHeaderMutex; .... }; */ DumpFileObject(*(pVolDev->fileObject)); Vcb = (HRFS_VOLUME_CONTROL_BLOCK_PTR)ExAllocatePool(PagedPool, sizeof(HRFS_VOLUME_CONTROL_BLOCK)); pVolDev->fileObject->SectionObjectPointer = \ (PSECTION_OBJECT_POINTERS)ExAllocatePool(PagedPool, sizeof(SECTION_OBJECT_POINTERS));; pVolDev->fileObject->WriteAccess = TRUE; pVolDev->fileObject->ReadAccess = TRUE; pVolDev->fileObject->DeleteAccess = TRUE; pVolDev->fileObject->FsContext = &HrfsData.gVolume; pVolDev->fileObject->Vpb = Vpb; CC_FILE_SIZES fileSize; fileSize.AllocationSize.QuadPart = fileSize.FileSize.QuadPart = sizeof(PACKED_BOOT_SECTOR); fileSize.ValidDataLength.QuadPart = 0xFFFFFFFFFFFFFFFF; CcInitializeCacheMap(pVolDev->fileObject, &fileSize, TRUE, &HrfsData.CacheManagerNoOpCallbacks, Vcb); In this Code segment a crash occured when I call the CcInitializeCacheMap function. The FILE_OBJECT and the dump infomation is as below : fileObject.Size : d8 fileObject.DeviceObject : c2221670 fileObject.Vpb : c39302e0 fileObject.FsContext : 32166f0 fileObject.FsContext2 : 0 fileObject.SectionObjectPointer : 0 fileObject.PrivateCacheMap : 0 fileObject.FinalStatus : 0 fileObject.RelatedFileObject : 0 fileObject.LockOperation : 0 fileObject.DeletePending : 0 fileObject.ReadAccess : 1 fileObject.WriteAccess : 1 fileObject.DeleteAccess : 1 fileObject.SharedRead : 0 fileObject.SharedWrite : 0 fileObject.SharedDelete : 0 fileObject.Flags : 40100 fileObject.FileName : 247bb70 fileObject.CurrentByteOffset : 0 fileObject.Waiters : 0 fileObject.Busy : 0 fileObject.LastLock : 0 fileObject.FileObjectExtension : 0 The stack text is as below: fffff880`0247bac0 fffff880`03241c78 : fffff880`00000000 00000000`00000000 00000000`00000001 fffff880`032166c8 : nt!CcInitializeCacheMap+0xd3 fffff880`0247bba0 fffff880`0323e095 : fffffa80`c303b010 fffffa80`c2222040 fffffa80`c39302e0 fffffa80`c3d56a40 : fastfatDemo!FatMountVolume+0xaf8 [G:\BaiduNetdiskDownload\fastfat_V1G13\fastfat_File_System_Driver\FsCtrl.c # 1460] fffff880`0247c2f0 fffff880`0323ecb7 : fffffa80`c303b010 fffffa80`c259bb40 00000000`00000065 00000000`00000003 : fastfatDemo!FatCommonFileSystemControl+0xe5 [G:\BaiduNetdiskDownload\fastfat_V1G13\fastfat_File_System_Driver\FsCtrl.c # 1053] fffff880`0247c340 fffff880`0113d4bc : fffffa80`c3d56a40 fffffa80`c259bb40 00000000`00000000 00000000`00000000 : fastfatDemo!FatFsdFileSystemControl+0x127 [G:\BaiduNetdiskDownload\fastfat_V1G13\fastfat_File_System_Driver\FsCtrl.c # 969] fffff880`0247c3a0 fffff880`01138971 : fffffa80`c3d56450 00000000`00000000 fffffa80`c3024200 fffffa80`c3129cb0 : fltmgr!FltpFsControlMountVolume+0x28c fffff880`0247c470 fffff800`04334e6b : fffffa80`c3d56450 00000000`00000000 fffffa80`c3d56450 fffffa80`c259bb40 : fltmgr!FltpFsControl+0x101 fffff880`0247c4d0 fffff800`040789e7 : fffff880`0247c7c0 fffff880`0247c701 fffffa80`c2221600 00000000`00000000 : nt!IopMountVolume+0x28f fffff880`0247c590 fffff800`044fac6d : 00000000`00000025 00000000`00000000 fffff880`0247c7c0 fffff880`0247c768 : nt!IopCheckVpbMounted+0x1b7 fffff880`0247c600 fffff800`044229a4 : fffffa80`c2221670 00000000`00000000 fffffa80`c31dbb10 fffff8a0`00000001 : nt!IopParseDevice+0xb4d fffff880`0247c760 fffff800`042fd756 : 00000000`00000000 fffff880`0247c8e0 00000000`00000040 fffffa80`c15c07b0 : nt!ObpLookupObjectName+0x784 fffff880`0247c860 fffff800`044c9d88 : fffffa80`c3d20cb0 00000000`00000000 00000000`00000401 fffff800`043fdef6 : nt!ObOpenObjectByName+0x306 fffff880`0247c930 fffff800`0435d7f4 : fffffa80`c629f870 fffff8a0`80100080 00000000`0029f4f8 00000000`0029f448 : nt!IopCreateFile+0xa08 fffff880`0247c9e0 fffff800`040b4bd3 : fffffa80`c3539b00 00000000`00000001 fffffa80`c629f870 fffff800`042fe1e4 : nt!NtCreateFile+0x78 fffff880`0247ca70 00000000`77629dda : 000007fe`fd3760d6 00000000`00000000 00000000`80000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x13 00000000`0029f428 000007fe`fd3760d6 : 00000000`00000000 00000000`80000000 00000000`00000000 00000000`000c0000 : ntdll!ZwCreateFile+0xa 00000000`0029f430 00000000`773b0add : 00000000`0034bec0 00000000`80000000 00000000`00000003 00000000`0029f892 : KERNELBASE!CreateFileW+0x2cd 00000000`0029f590 000007fe`f1971c1e : 00000000`00000000 00000000`00000000 00000000`01d14280 00000000`0029f830 : kernel32!CreateFileWImplementation+0x7d 00000000`0029f5f0 00000000`00000000 : 00000000`00000000 00000000`01d14280 00000000`0029f830 00000000`00000003 : FVEAPI+0x1c1e I traced the address to nt!CcInitializeCacheMap+0xd3 and found there is a compaire instruction . So what courced the crash to CcInitializeCacheMap by my program ?
This code should not set to PagedPool Type . //ErrorCode: Vcb = (HRFS_VOLUME_CONTROL_BLOCK_PTR)ExAllocatePool(PagedPool, sizeof(HRFS_VOLUME_CONTROL_BLOCK)); pVolDev->fileObject->SectionObjectPointer = \ (PSECTION_OBJECT_POINTERS)ExAllocatePool(PagedPool, sizeof(SECTION_OBJECT_POINTERS));;
How can clang-format don't put if statements into one line?
Just like the code below, I use clang-format to automatic format my codes if(detectBeats[*beatsCont-2] > detectBeats[*beatsCont-1] || fabs(detectBeats[*beatsCont-2] > detectBeats[*beatsCont-1]) < 1.0) { *beatsCont -=1; } Whatever I set the .clang-formt file, it always formatted like this: if(detectBeats[*beatsCont-2] > detectBeats[*beatsCont-1] || fabs(detectBeats[*beatsCont-2] > detectBeats[*beatsCont-1]) < 1.0) { *beatsCont -=1; } How can I set the rules not wrap the if statements into oneline? My question isn't as that question(Clang format splits if statement body into multiple lines), b/c my if statement wrapped, not the body Here is my .clang-format file AccessModifierOffset : -4 AllowAllParametersOfDeclarationOnNextLine : false AlignEscapedNewlinesLeft : false AlignOperands: true AlignTrailingComments : true AllowShortCaseLabelsOnASingleLine: true AllowShortFunctionsOnASingleLine: false AllowShortIfStatementsOnASingleLine : true AllowShortLoopsOnASingleLine: true BinPackArguments : false BinPackParameters : false BreakBeforeBraces : Linux ColumnLimit: 0 CommentPragmas: '^ *\/\/' ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: true IndentWidth : 4 KeepEmptyLinesAtTheStartOfBlocks : false Language : Cpp MaxEmptyLinesToKeep : 2 ObjCBlockIndentWidth : 2 ObjCSpaceAfterProperty: true ObjCSpaceBeforeProtocolList : false PointerAlignment: Right ReflowComments: true SortIncludes: true SpaceAfterCStyleCast: false SpaceBeforeAssignmentOperators : true SpaceBeforeParens : ControlStatements SpaceInEmptyParentheses: false SpacesBeforeTrailingComments : 1 SpacesInAngles: false SpacesInContainerLiterals : false SpacesInParentheses : false SpacesInSquareBrackets: false Standard: Cpp11 UseTab : Never
You need to use ColumnLimit. Doc here. More method here
JMeter : Regex extracting from an array response
I want to extract the addressId for a given housenumber in a response with a long array. The array response looks like this (snippet): : : "footprint":null, : : "type":null, : : "addressId":"0011442239", : : "streetName":"solitudestr.", : : "streetNrFirstSuffix":null, : : "streetNrFirst":null, : : "streetNrLastSuffix":null, : : "streetNrLast":null, : : "houseNumber":"25", : : "houseName":null, : : "city":"stuttgart", : : "postcode":"70499", : : "stateOrProvince":null, : : "countryName":null, : : "poBoxNr":null, : : "poBoxType":null, : : "attention":null, : : "geographicAreas": : : [ : : ], : : "firstName":null, : : "lastName":null, : : "title":null, : : "region":"BW", : : "additionalInfo":null, : : "properties": : : [ : : ], : : "extAddressId":null, : : "entrance":null, : : "district":null, : : "addressLine1":null, : : "addressLine2":null, : : "addressLine3":null, : : "addressLine4":null, : : "companyName":null, : : "contactName":null, : : "houseNrExt":null, : : "derbyStack":false : }, : { : : "footprint":null, : : "type":null, : : "addressId":"0011442246", : : "streetName":"solitudestr.", : : "streetNrFirstSuffix":null, : : "streetNrFirst":null, : : "streetNrLastSuffix":null, : : "streetNrLast":null, : : "houseNumber":"26", : : "houseName":null, : : "city":"stuttgart", : : "postcode":"70499", : : "stateOrProvince":null, : : "countryName":null, : : "poBoxNr":null, : : "poBoxType":null, : : "attention":null, : : "geographicAreas": : : [ : : ], : : "firstName":null, : : "lastName":null, : : "title":null, : : "region":"BW", : : "additionalInfo":null, : : "properties": : : [ : : ], : : "extAddressId":null, : : "entrance":null, : : "district":null, : : "addressLine1":null, : : "addressLine2":null, : : "addressLine3":null, : : "addressLine4":null, : : "companyName":null, : : "contactName":null, : : "houseNrExt":null, : : "derbyStack":false : }, i only show 2 housenumbers in this response as an example but the original response is bigger. Q: How can i match the adressId for a specific houseNumber (i have these houseNumbers in my CSV dataset) ? I Could do a regex which extracts all addressId's but then i'd have to use the correct matching no. in Jmeter. However, i cannot assume that the ordening of these will remain same in the different environments we test the script against.
I would recommend reconsidering using regular expressions to deal with JSON data. Starting from JMeter 3.0 you have a JSON Path PostProcessor. Using it you can execute arbitrary JSONPath queries so extracting the addressID for the given houseNumber would be as simple as: `$..[?(#.houseNumber == '25')].addressId` Demo: You can use a JMeter Variable instead of the hard-coded 25 value like: $..[?(#.houseNumber == '${houseNumber}')].addressId If for some reason you have to use JMeter < 3.0 you still can have JSON Path postprocessing capabilities using JSON Path Extractor via JMeter Plugins See Advanced Usage of the JSON Path Extractor in JMeter article, in particular Conditional Select chapter for more information.
You may use a regex that will capture the digits after addressId and before a specific houseNumber if you use an unrolled tempered greedy token (for better efficiency) in between them to make sure the regex engine does not overflow to another record. "addressId":"(\d+)"(?:[^\n"]*(?:\n(?!: +: +\[)[^\n"]*|"(?!houseNumber")[^\n"]*)*"houseNumber":"25"|$) See the regex demo (replace 25 with the necessary house number) Details: "addressId":" - literal string (\d+) - Group 1 ($1$ template value) capturing 1+ digits " - a quote (?:[^\n"]*(?:\n(?!: +: +\[)[^\n"]*|"(?!houseNumber")[^\n"]*)*"houseNumber":"25"|$) - a non-capturing group with 2 alternatives, one being $ (end of string) or: [^\n"]* - zero or more chars other than newline and " (?: - then come 2 alternatives: \n(?!: +: +\[)[^\n"]* - a newline not followed with : : [ like string and followed with 0+chars other than a newline and " | - or "(?!houseNumber")[^\n"]* - a " not followed with houseNumber and followed with 0+chars other than a newline and " )* - than may repeat 0 or more times "houseNumber":"25" - hourse number literal string.
Mongodb Index usage slower with regex anchor
I've got a query that's using a regex anchor and it seems to be slower when running an index scan rather than a collection scan. A bit of background to the question: I have a MSSQL database that has approximately 2.8 million rows in a table. We were running the following query against the table to return approximately 2.6 million results in 23 seconds: select * from table where 'column' like "IL%" So out of curiosity I decided to see if mongodb could perform this any faster than my MSSQL database and on a new test server I created a mongodb database which I filled 1 collection (test1) with just under 3 million objects. Here's the basic structure of a document in a collection: > db.test1.findOne() { "_id" : 2, "Other_REV" : "NULL", "Holidex_Code" : "W8BP0", "Segment_Name" : "NULL", "Source" : "Forecast", "Date_" : ISODate("2009-11-12T11:14:00Z"), "Rooms_Sold" : 3, "FB_REV" : "NULL", "Rate_Code" : "ILM87", "Export_Date" : ISODate("2010-12-12T11:14:00Z"), "Rooms_Rev" : 51 } All of my records have Rate_Code prefixed with IL and I ran the following query against the database which took just over 3 seconds: > db.test1.find({'Rate_Code':{$regex: /^IL/}}).explain() { "cursor" : "BasicCursor", "isMultiKey" : false, "n" : 2999999, "nscannedObjects" : 2999999, "nscanned" : 2999999, "nscannedObjectsAllPlans" : 2999999, "nscannedAllPlans" : 2999999, "scanAndOrder" : false, "indexOnly" : false, "nYields" : 4, "nChunkSkips" : 0, "millis" : 3398, "indexBounds" : { }, "server" : "MONGODB:27017" } Out of curiosity I created an index to see if I could speed up the retrieval at all: > db.test1.ensureIndex({'Rate_Code':1}) However this appears to actually slow down the resolution of the query to approximately 6 seconds on average: > db.test1.find({'Rate_Code':{$regex: /^IL/}}).explain() { "cursor" : "BtreeCursor Rate_Code_1", "isMultiKey" : false, "n" : 2999999, "nscannedObjects" : 2999999, "nscanned" : 2999999, "nscannedObjectsAllPlans" : 2999999, "nscannedAllPlans" : 2999999, "scanAndOrder" : false, "indexOnly" : false, "nYields" : 4, "nChunkSkips" : 0, "millis" : 5895, "indexBounds" : { "Rate_Code" : [ [ "IL", "IM" ] ] }, "server" : "MONGODB:27017" } The OS has 2GB of memory and appears to be holding both indexes quite comfortably in memory with no disk usage being recorded when the query is ran: > db.test1.stats() { "ns" : "purify.test1", "count" : 2999999, "size" : 623999808, "avgObjSize" : 208.0000053333351, "storageSize" : 790593536, "numExtents" : 18, "nindexes" : 2, "lastExtentSize" : 207732736, "paddingFactor" : 1, "systemFlags" : 0, "userFlags" : 0, "totalIndexSize" : 153218240, "indexSizes" : { "_id_" : 83722240, "Rate_Code_1" : 69496000 }, "ok" : 1 } I'm thinking the slow down is due to mongodb performing a full scan of the index followed by a full collection scan as it can't be sure that all my matches are in the index but I'm not entirely sure if this is the case. Is there any way that this could be improved upon for better performance? Thanks for any help.