實戰:排程最佳化 API
Vibe Prompt
「幫我用 FastAPI 建立一個工作排程 API,使用最早截止時間優先 (EDD) 策略。」
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI(title="排程最佳化 API")
class Job(BaseModel):
id: str
deadline: int
profit: int
duration: int
class ScheduleRequest(BaseModel):
jobs: list[Job]
class ScheduleResponse(BaseModel):
scheduled: list
total_profit: int
algorithm: str
@app.post("/schedule", response_model=ScheduleResponse)
def schedule_jobs(req: ScheduleRequest):
# 使用最早截止時間優先 (EDD)
sorted_jobs = sorted(req.jobs, key=lambda j: j.deadline)
scheduled = []
current_time = 0
for job in sorted_jobs:
if current_time + job.duration <= job.deadline:
scheduled.append(job)
current_time += job.duration
return ScheduleResponse(
scheduled=[j.id for j in scheduled],
total_profit=sum(j.profit for j in scheduled),
algorithm="貪婪 EDD"
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
本日總結
完成了貪婪演算法課程!
- ✅ Kruskal / Prim MST
- ✅ Huffman 編碼
- ✅ 集合覆蓋
- ✅ 排程 API