微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自LINGO软件的Playtpus改编

如何解决来自LINGO软件的Playtpus改编

我正在尝试将我的问题从LINGO软件改编为Playtpus语言,但我无法运行此代码。有人可以告诉我哪里出了问题吗?代码是:

#variaveis

S_preco = 1069.23;
F_preco = 1071.09;
OB_preco = 2006.66;
OR_preco = 2669.21;
B_preco = 2540.47;
S_custo = 533.17;
F_custo = 569.89;
OB_custo = 1384.39;
OR_custo = 1466.34;
B_custo = 2389.89;

S_total = 2329278;

S_percentoleo = 0.2057;
C_percentoleo = 0.0064;

OBF_percentoleo = 0.22;

OR_massamolar = 873*0.000001;
M_massamolar = 32*0.000001;
B_massamolar = 292*0.000001;
G_massamolar = 92*0.000001;

S_capacidade = 3600000;
OR_capacidade = 367200;
B_capacidade = 887760*(880/1000);

S_demanda = 80638;
F_demanda = 398984;
OB_demanda = 164700;
OR_demanda = 164700;
B_demanda = 77634;
from platypus import NSGAII,Problem,Real

def belegundu(vars):
    S_comercio = vars[0]
    F_comercio = vars[1]
    OB_comercio = vars[2]
    OR_comercio = vars[3]
    B_total = vars[4]
    S_insumo = vars[5]
    C_insumo = vars[6]
    OB_total = vars[7]
    OR_total = vars[8]
    OR_biodiesel = vars[9]
    MOL = vars[10]
    M_insumo = vars[11]
    G_comercio = vars[12]
    return [-1*(S_comercio*S_preco - S_comercio*S_custo + F_comercio*F_preco - F_comercio*F_custo + OB_comercio*OB_preco - OB_comercio*OB_custo + OR_comercio*OR_preco - OR_comercio*OR_custo + B_total*B_preco - B_total*B_custo),1],[S_total - S_comercio - S_insumo,S_insumo - C_insumo - F_comercio - OB_total,C_insumo - 0.04*S_insumo,OB_total - (F_comercio*OBF_percentoleo)/(1 - OBF_percentoleo),OB_total - OB_comercio - OR_total,OR_total - OR_comercio - OR_biodiesel,OR_biodiesel - MOL*OR_massamolar,M_insumo - 3*MOL*M_massamolar,B_total - 3*MOL*B_massamolar,G_comercio - MOL*G_massamolar,S_insumo - S_capacidade,OR_total - OR_capacidade,B_total - B_capacidade,S_comercio - S_demanda,F_comercio - F_demanda,OB_comercio - OB_demanda,OR_comercio - OR_demanda,B_total - B_demanda]

problem = Problem(13,2,18)
problem.types[:] = [Real(0,2329278),Real(0,2329278)]
problem.constraints[0] = "==0"
problem.constraints[1] = "==0"
problem.constraints[2] = "==0"
problem.constraints[3] = "==0"
problem.constraints[4] = "==0"
problem.constraints[5] = "==0"
problem.constraints[6] = "==0"
problem.constraints[7] = "==0"
problem.constraints[8] = "==0"
problem.constraints[9] = "==0"
problem.constraints[10] = "<=0"
problem.constraints[11] = "<=0"
problem.constraints[12] = "<=0"
problem.constraints[13] = ">=0"
problem.constraints[14] = ">=0"
problem.constraints[15] = ">=0"
problem.constraints[16] = ">=0"
problem.constraints[17] = ">=0"
problem.function = belegundu

algorithm = NSGAII(problem)
algorithm.run(10000000)

问题是:

ValueError                                Traceback (most recent call last)        
<ipython-input-3-e2272cbb5469> in <module>()
     58 
     59 algorithm = NSGAII(problem)
---> 60 algorithm.run(10000000)

10 frames
/usr/local/lib/python3.6/dist-packages/platypus/core.py in evaluate(self,solution)
    187 
    188         if self.nconstrs > 0:
--> 189             (objs,constrs) = self.function(solution.variables)        
    190         else:
    191             objs = self.function(solution.variables)

ValueError:没有足够的值可解包(预期2,得到1)

我不明白自己做错了什么。有人可以帮助我吗?有人知道Python库中的Playtpus工具吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。