楼主: 曾宇轩1997
1355 6

[其他] python 规划最优求解 [推广有奖]

  • 0关注
  • 0粉丝

已卖:2份资源

大专生

20%

还不是VIP/贵宾

-

威望
0
论坛币
2763 个
通用积分
0.7500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
293 点
帖子
14
精华
0
在线时间
74 小时
注册时间
2018-9-21
最后登录
2022-10-13

楼主
曾宇轩1997 发表于 2020-10-1 19:53:35 |AI写论文
200论坛币
我正在用python进行规划求解,本人愚钝能力实在有限,无法利用官方发布的使用文档,请为我提供一个简单的代码,谢谢,请不要使用一些复杂的代码,本人lambda函数都不大会用,如果一定要使用请详细说明步骤
要求:使用scipy库进行最优求解即可
数据已经上传:
题目:e=r_jsvalue-x1*r_lg+x2*r_lv+x3*r_mg+x4*r_mv+x5*r_sg+x6*r_sv+x7*rbond
      约束条件:x1+x2+x3+x4+x5+x6+x7=1
                且x1>0,x2>0,x3>0,x4>0,x5>0,x6>0,x7>0
       求使var(e)最小的x组合
如果用stata的解决的话也行,谢谢各位
附件: 你需要登录才可以下载或查看附件。没有帐号?我要注册

最佳答案

岁馀。 查看完整内容

代码可以直接用 import pandas as pd import numpy as np from scipy.optimize import minimize #提取数据 data=pd.read_excel('p.xls') r_jsvalue = data.iloc[1:,2] r_lg = data.iloc[1:,4] r_lv = data.iloc[1:,6] r_mg = data.iloc[1:,8] r_mv = data.iloc[1:,10] r_sg = data.iloc[1:,12] r_sv = data.iloc[1:,14] rbond = data.iloc[1:,16] #目标函数 def objective(x): e = x[0]*r_lg + x[1]*r ...
关键词:python value Stata 约束条件 tata 数据分析 规划求解 python stata 数据分析 规划求解 python stata 数据分析 规划求解 python stata 数据分析 规划求解 python stata

回帖推荐

岁馀。 发表于4楼  查看完整内容

代码可以直接用 import pandas as pd import numpy as np from scipy.optimize import minimize #提取数据 data=pd.read_excel('p.xls') r_jsvalue = data.iloc[1:,2] r_lg = data.iloc[1:,4] r_lv = data.iloc[1:,6] r_mg = data.iloc[1:,8] r_mv = data.iloc[1:,10] r_sg = data.iloc[1:,12] r_sv = data.iloc[1:,14] rbond = data.iloc[1:,16] #目标函数 def objective(x): e = x[0]*r_lg + x[1]*r ...

沙发
岁馀。 发表于 2020-10-1 19:53:36
代码可以直接用

import pandas as pd
import numpy as np
from scipy.optimize import minimize

#提取数据
data=pd.read_excel('p.xls')
r_jsvalue = data.iloc[1:,2]
r_lg = data.iloc[1:,4]
r_lv = data.iloc[1:,6]
r_mg = data.iloc[1:,8]
r_mv = data.iloc[1:,10]
r_sg = data.iloc[1:,12]
r_sv = data.iloc[1:,14]
rbond = data.iloc[1:,16]


#目标函数
def objective(x):
    e = x[0]*r_lg + x[1]*r_lv + x[2]*r_mg + x[3]*r_mv + x[4]*r_sg + x[5]*r_sv + x[6]*rbond
    e_var = np.var(e)
    return e_var

def constraint(x):
    return x[0]+x[1]+x[2]+x[3]+x[4]+x[5]+x[6]-1


#边界约束
b = (0.0, None)  ##即决策变量的取值范围为大于等于0
bnds = (b, b, b, b, b, b, b)

con1 = {'type':'eq','fun':constraint}

cons = ([con1])
x0 = np.array([0, 0, 0, 0, 0, 0, 0])   #定义初始值

solution = minimize(objective, x0, method='SLSQP',  bounds=bnds, constraints=cons)
x = solution.x

print('目标值: ' + str(objective(x)))
print('结果 ' ,solution.success)
print('x1 = ' + str(x[0]))
print('x2 = ' + str(x[1]))
print('x3 = ' + str(x[2]))
print('x4 = ' + str(x[3]))
print('x5 = ' + str(x[4]))
print('x6 = ' + str(x[5]))
print('x7 = ' + str(x[6]))
已有 1 人评分论坛币 收起 理由
giresse + 20 精彩帖子

总评分: 论坛币 + 20   查看全部评分

藤椅
曾宇轩1997 发表于 2020-10-1 19:58:16
excel我会用,但是我想用python和stata解决

板凳
岁馀。 发表于 2020-10-10 23:31:13
不知道对不对,python的话可能只会得到局部最优解,得看初始值,代码如下:
import pandas as pd
import numpy as np
from scipy.optimize import minimize

#提取数据
data=pd.read_excel('p.xls')
r_jsvalue = data.iloc[1:,2]
r_lg = data.iloc[1:,4]
r_lv = data.iloc[1:,6]
r_mg = data.iloc[1:,8]
r_mv = data.iloc[1:,10]
r_sg = data.iloc[1:,12]
r_sv = data.iloc[1:,14]
rbond = data.iloc[1:,16]


#目标函数
def objective(x):
    e = x[0]*r_lg + x[1]*r_lv + x[2]*r_mg + x[3]*r_mv + x[4]*r_sg + x[5]*r_sv + x[6]*rbond
    e_var = np.var(e)
    return e_var

def constraint(x):
    return x[0]+x[1]+x[2]+x[3]+x[4]+x[5]+x[6]-1


#边界约束
b = (0.0, None)  ##即决策变量的取值范围为大于等于0
bnds = (b, b, b, b, b, b, b)

con1 = {'type':'eq','fun':constraint}

cons = ([con1])
x0 = np.array([0, 0, 0, 0, 0, 0, 0])   #定义初始值

solution = minimize(objective, x0, method='SLSQP',  bounds=bnds, constraints=cons)
x = solution.x

print('目标值: ' + str(objective(x)))
print('结果 ' ,solution.success)
print('x1 = ' + str(x[0]))
print('x2 = ' + str(x[1]))
print('x3 = ' + str(x[2]))
print('x4 = ' + str(x[3]))
print('x5 = ' + str(x[4]))
print('x6 = ' + str(x[5]))
print('x7 = ' + str(x[6]))

结果:
x1 = 0.14285714285711149
x2 = 0.14285714285740694
x3 = 0.14285714285645784
x4 = 0.14285714285641232
x5 = 0.14285714285604822
x6 = 0.14285714285606066
x7 = 0.14285714286050216

报纸
曾宇轩1997 发表于 2020-10-13 21:14:11
岁馀。 发表于 2020-10-11 16:13
代码可以直接用

import pandas as pd
谢谢,请问这个得到的是局部最优解嘛?我也用了python得到的是局部最优解,初始设置会影响结果

地板
岁馀。 发表于 2020-10-23 09:40:52
曾宇轩1997 发表于 2020-10-13 21:14
谢谢,请问这个得到的是局部最优解嘛?我也用了python得到的是局部最优解,初始设置会影响结果
我也不知道是不是局部最优,要全局最优的话我也没什么办法,一般局部最优就可以了,或者用遗传算法试试,不过就把问题复杂化了。

7
曾宇轩1997 发表于 2020-10-26 10:25:20
岁馀。 发表于 2020-10-23 09:40
我也不知道是不是局部最优,要全局最优的话我也没什么办法,一般局部最优就可以了,或者用遗传算法试试, ...
行吧,谢谢您的解释

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-29 01:13