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

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

具有兩個(gè)約束的 Python 數(shù)組優(yōu)化

具有兩個(gè)約束的 Python 數(shù)組優(yōu)化

倚天杖 2023-09-26 16:56:06
我有一個(gè)優(yōu)化問題,我試圖找到一個(gè)需要同時(shí)優(yōu)化兩個(gè)函數(shù)的數(shù)組。在下面的最小示例中,我有兩個(gè)已知數(shù)組w和x一個(gè)未知數(shù)組y。我將數(shù)組初始化y為僅包含 1。然后我指定函數(shù)np.sqrt(np.sum((x-np.array)**2)并想要找到y(tǒng)數(shù)組np.sqrt(np.sum((x-y)**2) 方法5np.sqrt(np.sum((w-y)**2) 方法8下面的代碼可用于成功地y針對(duì)單個(gè)數(shù)組進(jìn)行優(yōu)化,但我希望找到同時(shí)y針對(duì)兩者x進(jìn)行優(yōu)化的解決方案y,但不確定如何指定這兩個(gè)約束。y只能包含大于 0 的值。關(guān)于如何解決這個(gè)問題有什么想法嗎?w = np.array([6, 3, 1, 0, 2])x = np.array([3, 4, 5, 6, 7])y = np.array([1, 1, 1, 1, 1])def func(x, y):    z = np.sqrt(np.sum((x-y)**2)) - 5    return  np.zeros(x.shape[0],) + zr = opt.root(func, x0=y, method='hybr')print(r.x)# array([1.97522498 3.47287981 5.1943792  2.10120135 4.09593969])print(np.sqrt(np.sum((x-r.x)**2)))# 5.0
查看完整描述

1 回答

?
縹緲止盈

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

一種選擇是使用scipy.optimize.minimize代替root,這里您有多個(gè)求解器選項(xiàng),其中一些(即SLSQP)允許您指定多個(gè)約束。請(qǐng)注意,我更改了變量名稱,以便這x是您要優(yōu)化的數(shù)組并y定義z約束。


from scipy.optimize import minimize

import numpy as np


x0 = np.array([1, 1, 1, 1, 1])

y = np.array([6, 3, 1, 0, 2])

z = np.array([3, 4, 5, 6, 7])


constraint_x = dict(type='ineq',

? ? ? ? ? ? ? ? ? ? fun=lambda x: x)? ?# fulfilled if > 0

constraint_y = dict(type='eq',

? ? ? ? ? ? ? ? ? ? fun=lambda x: np.linalg.norm(x-y) - 5)? # fulfilled if == 0

constraint_z = dict(type='eq',

? ? ? ? ? ? ? ? ? ? fun=lambda x: np.linalg.norm(x-z) - 8)? # fulfilled if == 0


res = minimize(fun=lambda x: np.linalg.norm(x), constraints=[constraint_y, constraint_z], x0=x0,

? ? ? ? ? ? ? ?method='SLSQP', options=dict(ftol=1e-8))? # default 1e-6


print(res.x)? ? ? ? ? ? ? ? ? ? # [1.55517124 1.44981672 1.46921122 1.61335466 2.13174483]

print(np.linalg.norm(res.x-y))? # 5.00000000137866

print(np.linalg.norm(res.x-z))? # 8.000000000930026

這是一個(gè)最小化器,因此除了約束之外,它還需要一個(gè)函數(shù)來最小化,我只選擇了 的范數(shù)y,但將函數(shù)設(shè)置為常量(即 lambda x: 1)也可以。另請(qǐng)注意,約束并未完全ftol滿足,您可以通過將可選參數(shù)設(shè)置為較小的值(即 )來提高準(zhǔn)確性1e-10。


查看完整回答
反對(duì) 回復(fù) 2023-09-26
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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