数学建模-建模算法(4)

python虽然不是完全为数学建模而生的,但是它完整的库让它越来越适合建模了。

  • 线性规划:使用scipy.optimize.linprog()函数
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs')
print(res)
```
  • 整数规划:使用scipy.optimize.linprog()函数,并将目标函数系数转换为整数
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs', integer=True)
print(res)
```
  • 多元规划:使用scipy.optimize.linprog()函数
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1, 1], [1, 2, 3]]
b = [6, 4, 5]
x0_bounds = (None, None, None)
x1_bounds = (-3, -3, -3)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs')
print(res)
```
  • 二次规划:使用scipy.optimize.linprog()函数,并将目标函数系数转换为平方项
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs', square_root=True)
print(res)
```
  • 遗传算法:使用DEAP库
python 复制代码
```python
from deap import base, creator, tools, algorithms
import random

creator.create("FitnessMin", base.Fitness, weights=(-1.0,))
creator.create("Individual", list, fitness=creator.FitnessMin)

toolbox = base.Toolbox()
toolbox.register("attr_bool", random.randint, 0, 1)
toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_bool, n=100)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)

def evalOneMax(individual):
    return sum(individual),

toolbox.register("evaluate", evalOneMax)
toolbox.register("mate", tools.cxTwoPoint)
toolbox.register("mutate", tools.mutFlipBit, indpb=0.05)
toolbox.register("select", tools.selTournament, tournsize=3)

population = toolbox.population(n=300)
algorithms.eaSimple(population, toolbox, cxpb=0.5, mutpb=0.2, ngen=40)
```
  • 动态规划:使用scipy.optimize.linprog()函数,并将目标函数转换为动态规划问题
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs')
print(res)
```
  • 贪心算法:使用scipy.optimize.linprog()函数,并将目标函数转换为贪心策略
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs', options={'disp': True})
while not res.success:
    if not res.fun:
        print("Objective function value is 0 at point %s" % res.x)
        break
    if res.status == 4:
        print("The algorithm could not find a feasible solution for the problem")
        break
    print(res)
    res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs', options={'disp': True})
print(res)
```

下次再更新一些高难度的常见算法。

相关推荐
NAGNIP13 小时前
大模型框架性能优化策略:延迟、吞吐量与成本权衡
算法
美团技术团队14 小时前
LongCat-Flash:如何使用 SGLang 部署美团 Agentic 模型
人工智能·算法
Fanxt_Ja19 小时前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下19 小时前
最终的信号类
开发语言·c++·算法
茉莉玫瑰花茶19 小时前
算法 --- 字符串
算法
博笙困了19 小时前
AcWing学习——差分
c++·算法
NAGNIP19 小时前
认识 Unsloth 框架:大模型高效微调的利器
算法
NAGNIP19 小时前
大模型微调框架之LLaMA Factory
算法
echoarts19 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Python技术极客19 小时前
一款超好用的 Python 交互式可视化工具,强烈推荐~
算法