第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用包優(yōu)化

使用包優(yōu)化

一只斗牛犬 2024-01-16 15:03:07
我是第一次使用 gekko,我想知道是否有任何解決方案可以用 gekko max( min (function1, function2)) 解決 max min 優(yōu)化問(wèn)題。我發(fā)現(xiàn)只有最大化和最小化功能。否則是否有任何其他 python 求解器或解決方案使用 scipy 或其他用于 python 中的優(yōu)化問(wèn)題?
查看完整描述

2 回答

?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊

這可以在沒(méi)有特殊函數(shù)的情況下完成:

maximize z
z <= f1
z <= f2

(這是數(shù)學(xué)符號(hào),不是 Python/Gekko)。

所以你只需要一個(gè)額外的變量 z 和兩個(gè)不等式。這是一個(gè)標(biāo)準(zhǔn)公式,因此了解這一點(diǎn)很有好處。

這種公式的缺點(diǎn)是我們現(xiàn)在處理約束中的附加非線性函數(shù),而不是目標(biāo)中的非線性函數(shù)。這可能會(huì)對(duì)性能和可靠性產(chǎn)生影響。一個(gè)優(yōu)點(diǎn)是這可以防止不可微分問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2024-01-16
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

這是一個(gè)簡(jiǎn)單的示例,其中變量之和必須等于 15。目標(biāo)是最大化變量的最小值。


max min(x1,x2,x3)

s.t. x1 + x2 + x3 = 15

最大最小或最小最大問(wèn)題的標(biāo)準(zhǔn)方法是用附加變量重新表述問(wèn)題Z。


?max Z

?s.t. x1 + x2 + x3 = 15

? ? ? Z <= x1

? ? ? Z <= x2

? ? ? Z <= x3

這是maximinGekko 中重新表述的問(wèn)題。


from gekko import GEKKO

m = GEKKO(remote=False)

m.options.SOLVER = 1

x1,x2,x3,Z = m.Array(m.Var,4)

m.Maximize(Z)

m.Equation(x1+x2+x3==15)

m.Equations([Z<=x1,Z<=x2,Z<=x3])

m.solve()

print('x1: ',x1.value[0])

print('x2: ',x2.value[0])

print('x3: ',x3.value[0])

print('Z:? ',Z.value[0])

這給出了解決方案:


x1:? 5.0

x2:? 5.0

x3:? 5.0

Z:? ?5.0

我已在您的原始問(wèn)題中添加了一些缺少的常量(默認(rèn)值=1)以獲得成功的解決方案。


from gekko import GEKKO

m = GEKKO(remote=True)


alpha = m.Var(0,lb=0,ub=1)

Ps? ? = m.Var(5,lb=0,ub=10)

Pr? ? = m.Var(0,lb=0,ub=10)

PP? ? = m.Var(5,lb=0,ub=10)


PD=4; to=0.1; NP=20; grp=1; gpp=1; Nr = 1; gsr=1; gpr=1; gss=1; grs=1; Ns=1

m.Equation(grp*Pr>=(gpp*PP/((1+(gpp*PP/NP))**(1-to)-1))-NP)


def FDF1(alpha,Ps):

? ? return (gsr*(1-alpha)*Ps)/(gpr*Pp+Nr)


def FDF2(alpha,Ps,Pr):

? ? return (gss*Ps+grs*Pr+2*(np.sqrt(grs*gss*alpha*PP*Pr)))/(Ns)

Func_FDF1 = 1/2*m.log((gsr*(1-alpha)*Ps)/gpr*PP+Nr)

Func_FDF2 = 1/2*m.log(1+(gss*Ps+grs*Pr+2*(m.sqrt(grs*gss*alpha*PP*Pr)))/(Ns))

m.Maximize(Func_FDF2) #===> min(Func_FDF1, Func_FDF2)

m.solve()


print('')

print('Results')

print('Ps: ' + str(Ps.value))

print('Pr: ' + str(Pr.value))

print('alpha: ' + str(alpha.value))

這給出了解決方案:


Results

Ps: [10.0]

Pr: [10.0]

alpha: [1.0]

要解決 maximin 問(wèn)題,可以添加Z變量


from gekko import GEKKO

m = GEKKO(remote=True)


alpha = m.Var(0,lb=0,ub=1)

Ps? ? = m.Var(5,lb=0,ub=10)

Pr? ? = m.Var(0,lb=0,ub=10)

PP? ? = m.Var(5,lb=0,ub=10)


PD=4; to=0.1; NP=20; grp=1; gpp=1; Nr = 1; gsr=1; gpr=1; gss=1; grs=1; Ns=1

m.Equation(grp*Pr>=(gpp*PP/((1+(gpp*PP/NP))**(1-to)-1))-NP)


def FDF1(alpha,Ps):

? ? return (gsr*(1-alpha)*Ps)/(gpr*Pp+Nr)


def FDF2(alpha,Ps,Pr):

? ? return (gss*Ps+grs*Pr+2*(np.sqrt(grs*gss*alpha*PP*Pr)))/(Ns)

Func_FDF1 = 1/2*m.log((gsr*(1-alpha)*Ps)/gpr*PP+Nr)

Func_FDF2 = 1/2*m.log(1+(gss*Ps+grs*Pr+2*(m.sqrt(grs*gss*alpha*PP*Pr)))/(Ns))


# max min(Func_FDF1, Func_FDF2)

Z = m.Var()

m.Maximize(Z)

m.Equation(Z<=Func_FDF1)

m.Equation(Z<=Func_FDF2)

m.solve()


print('')

print('Results')

print('Ps: ' + str(Ps.value))

print('Pr: ' + str(Pr.value))

print('alpha: ' + str(alpha.value))

現(xiàn)在給出了最大化Func_FDF1和的最小值的解決方案Func_FDF2。


Results

Ps: [10.0]

Pr: [10.0]

alpha: [0.63999999961]


查看完整回答
反對(duì) 回復(fù) 2024-01-16
  • 2 回答
  • 0 關(guān)注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)