Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is integer programming in simple terms?
Integer programming is a way to solve math problems where some or all answers must be whole numbers, like counting apples or people.
Click to reveal answer
beginner
What does the scipy.optimize library help with in integer programming?
It helps find the best solution to problems with limits and whole number rules using tools like milp for mixed-integer linear programming.
Click to reveal answer
beginner
Why do we sometimes need integer solutions instead of decimals?
Because some things can't be split, like people, cars, or machines. You can't have 2.5 cars, so answers must be whole numbers.
Click to reveal answer
intermediate
What is the difference between linear programming and integer programming?
Linear programming allows decimal answers, but integer programming requires some or all answers to be whole numbers.
Click to reveal answer
intermediate
How does the milp function in scipy.optimize work?
It solves problems where you want to maximize or minimize a goal, with rules, and some answers must be integers. You give it the goal, rules, and which answers are integers.
Click to reveal answer
What type of numbers does integer programming require for some variables?
AWhole numbers
BAny real numbers
COnly decimals
DComplex numbers
✗ Incorrect
Integer programming requires some or all variables to be whole numbers (integers).
Which Python library provides tools for integer programming?
Aseaborn
Bmatplotlib
Cpandas
Dscipy.optimize
✗ Incorrect
scipy.optimize includes functions like milp for integer programming.
What does MILP stand for?
AMatrix Integer Linear Programming
BMultiple Integer Linear Problems
CMixed-Integer Linear Programming
DMinimal Integer Linear Procedure
✗ Incorrect
MILP means Mixed-Integer Linear Programming, where some variables are integers and others can be decimals.
Why might integer programming be harder than regular linear programming?
ABecause it uses less memory
BBecause integers limit possible solutions
CBecause decimals are easier to count
DBecause it ignores constraints
✗ Incorrect
Integer constraints reduce possible answers, making the problem more complex to solve.
In integer programming, what is a common real-life example?
AScheduling workers in shifts
BMeasuring temperature
CCalculating speed
DPredicting weather
✗ Incorrect
Scheduling workers requires whole numbers of people, a classic integer programming problem.
Explain integer programming and why it is useful in real life.
Think about problems where you can't split items or people.
You got /3 concepts.
Describe how you would use scipy.optimize's milp function to solve an integer programming problem.
Focus on inputs needed for milp and what it returns.
You got /4 concepts.
Practice
(1/5)
1.
What is the main purpose of integer programming in scipy?
easy
A. To perform statistical hypothesis testing
B. To solve differential equations numerically
C. To find the best solution where some variables must be whole numbers
D. To visualize data with plots
Solution
Step 1: Understand integer programming concept
Integer programming is used to find optimal solutions where some or all variables are restricted to integers (whole numbers).
Step 2: Match with scipy usage
In scipy, integer programming helps solve optimization problems with integer constraints, unlike other tasks like plotting or statistics.
Final Answer:
To find the best solution where some variables must be whole numbers -> Option C
Quick Check:
Integer programming = whole number solutions [OK]
Hint: Integer programming means variables are whole numbers [OK]
Common Mistakes:
Confusing integer programming with plotting or statistics
Thinking it solves differential equations
Assuming variables can be fractional
2.
Which of the following is the correct way to specify integer variables in scipy.optimize.linprog?
from scipy.optimize import linprog
result = linprog(c, A_ub=A, b_ub=b, integrality=...)
easy
A. integrality=True # boolean for all integer
B. integrality=[1, 0, 1] # 1 means integer, 0 means continuous
C. integrality='integer' # string to specify all integer
D. integrality=None # default no integer constraints
Solution
Step 1: Recall integrality parameter usage
The integrality argument takes a list or array indicating which variables are integers (1) or continuous (0).
Step 2: Check options
integrality=[1, 0, 1] # 1 means integer, 0 means continuous correctly uses a list with 1s and 0s. Options A, B, and D use incorrect types.
Final Answer:
integrality=[1, 0, 1] # 1 means integer, 0 means continuous -> Option B
Quick Check:
integrality list = integer flags [OK]
Hint: Use list of 1/0 to mark integer variables [OK]
Common Mistakes:
Passing a string or boolean instead of list
Leaving integrality as None to expect integers
Confusing integrality with other parameters
3.
What will be the output of this code snippet?
from scipy.optimize import linprog
c = [-1, -2]
A = [[1, 1]]
b = [3]
integrality = [1, 1]
result = linprog(c, A_ub=A, b_ub=b, integrality=integrality, method='highs')
print(result.x.round())
medium
A. [1. 1.]
B. [1. 2.]
C. [3. 0.]
D. [0. 3.]
Solution
Step 1: Understand the problem setup
The objective is to minimize -x - 2y, which is equivalent to maximizing x + 2y, with constraint x + y ≤ 3 and both x,y integers.
Step 2: Find integer values maximizing x + 2y under constraint
Feasible integer points include (0,3): x+2y=6, (1,2):5, (2,1):4, (3,0):3. Maximum at (0,3), so result.x.round() prints [0. 3.].
Final Answer:
[0. 3.] -> Option D
Quick Check:
Max x+2y with x+y≤3 integer = [0,3] [OK]
Hint: Maximize by checking integer combos under constraints [OK]
Common Mistakes:
Picking suboptimal integer point like [1,2]
Misunderstanding objective sign for maximization
Ignoring non-negativity bounds
4.
Identify the error in this integer programming code using scipy.optimize.linprog:
from scipy.optimize import linprog
c = [1, 1]
A = [[-1, 2]]
b = [4]
integrality = [1, 1]
result = linprog(c, A_ub=A, b_ub=b, integrality=integrality)
print(result.x)
medium
A. No error; code runs correctly
B. Missing method='highs' argument causes solver failure
C. Constraint matrix A has wrong sign for inequality
You want to solve an integer programming problem to maximize profit with variables x and y, where x + 2y ≤ 8, x ≥ 0, y ≥ 0, and both x and y must be integers. Which scipy.optimize.linprog call correctly models this problem?
hard
A.
c = [-1, -2]
A = [[1, 2]]
b = [8]
integrality = [1, 1]
linprog(c, A_ub=A, b_ub=b, bounds=[(0, None), (0, None)], integrality=integrality, method='highs')
B.
c = [1, 2]
A = [[1, 2]]
b = [8]
integrality = [1, 1]
linprog(c, A_ub=A, b_ub=b, bounds=[(0, None), (0, None)], integrality=integrality, method='highs')
C.
c = [-1, -2]
A = [[-1, -2]]
b = [-8]
integrality = [1, 1]
linprog(c, A_ub=A, b_ub=b, bounds=[(0, None), (0, None)], integrality=integrality, method='highs')
D.
c = [-1, -2]
A = [[1, 2]]
b = [8]
integrality = [0, 0]
linprog(c, A_ub=A, b_ub=b, bounds=[(0, None), (0, None)], method='highs')
Solution
Step 1: Translate maximization to minimization
Maximize profit = x + 2y is same as minimize -x - 2y, so c = [-1, -2].
Step 2: Set constraints and integrality
Constraint x + 2y ≤ 8 is A = [[1, 2]], b = [8]. Variables are non-negative with bounds (0, None). Both x and y are integers, so integrality = [1, 1].
Step 3: Confirm method and parameters
Use method='highs' to support integer programming.
Final Answer:
The code with c = [-1, -2], A = [[1, 2]], integrality = [1, 1], method='highs' -> Option A
Quick Check:
Maximize -> minimize negative, integrality=1 for integers [OK]
Hint: Maximize by minimizing negative objective with integer flags [OK]