Optimization กับ constrain

0

คำถาม

ฉันอยากจะช่วยแก้ constrained optimization ปัญหาแล้ว

แม็กซ์{ln(c1)+ln(c2)}

s.t. 4(c1)+6(c2)≤40

ฉันเขียนมันรหัส:

import numpy as np
from scipy import optimize

def main():
    """
    solving a regular constrained optimization problem    
    max ln(cons[0]) + ln(cons[1]) 
    st. prices[0]*cons[0] + prices[1]*cons[1] <= I         
    """    
   
    prices = np.array([4.0, 6.0])
    I = 40.0
   
    util = lambda cons: np.dot( np.log(cons))  #define utility function
    budget = lambda cons: I - np.dot(prices, cons)   #define the budget constraint
    
    initval = 40.0*np.ones(2)    #set the initial guess for the algorithm
    
    res = optimize.minimize(lambda x: -util(x), initval, method='slsqp', 
                            constraints={'type':'ineq', 'fun':budget}, 
                            tol=1e-9)
    assert res['success'] == True
           
    
    print(res)

โชคร้ายของรหัสอย่าตีพิมพ์มีทางออกหรอกนะ คุณสามารถช่วยให้ฉันคิดออกทำไมเหรอ?

mathematical-optimization python scipy
2021-11-17 08:52:35
1

คำตอบที่ดีที่สุด

1

รหัสของคุณมีค่าเป็น TypeError ตั้งแต่ np.dot คาดหวังให้สองอาร์กิวเมนต์,เจอรามายความว่าของของคุณ utils ฟังก์ชัน. จึงใช้

# is the same as np.dot(np.ones(2), np.log(cons))
utils = lambda cons: np.sum(np.log(cons))

แทน

2021-11-17 21:09:35

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่